################################################################################
#############################################@##################################
#######################################kkppp@ppQk###############################
#####################################kkkkkp@@fZ1qpk#k@@@@p@QGy@pk###############
##################################kpkkkkkpfG@qJ(c@pkpQfyyGc7^([Jp###############
################################kp@ppkkkkpQQGq7;CQp@eGcjQjC*^.GZp####kkZj#######
###############################kppp@pkp@ppGyj@2:2qQk(f1JQ@p7.`Jpk#pZfqZQ7pkk####
######@k##kk@@QQffkpk##########kkkkkkkfGZjC(7f;*Jeqp1q;JGfj...1qpp(C27QkZyk#####
#####@Q@pQQyCJ2([CZGfk####k@qfpkkkkkq1cQp@pfGQ^;yfZZqQCCJ*....*fk#"[q*j1jGkpk###
#####pQpj7([[1c7('.'"CffJqZf@pkkpfpppk#kkkkkpq(.(2C2c2(;'.....^Q#@..(Z@2"fZpf#k@
Qy7^:^:^:...7jC*.....^;(;(CQff@2*2qq@ppkkpp@q7^'^"(*;....'(^..;f#@JyCJ7..72qkp@q
CcJ2[jQQf@QZcjffpfJ27^....;727...^Gq@@@@QGJy@pkk##kp##Z[^..;JJ`Ck####kZcf###k#k@
jjyGyyGZGGZGGGGZZQQqQ@pyeeJQkky17;"727jGZpp@@qGGZGqyyZZGqGe(...^G#fZjJZGjJje277*
(^;*(((7***(((7;;;77*(;"^";;(7(;(((;;^`':^(;"^;^;''""^"((^^;....(;:''77(;;(7;'`^
[:^`.` . ..`.':;7117[1[*;'^(;;*;";^":'^^:^^"^;7[[77cjeejjeCec7yqQJcj2yyGG;.....`
;'....` ''^""*7772[**7(77C^^^";;;;;712jjjc;2jJZqZqQQQfpk##kk#kfk#kkyqkk@f^......
(....`''`....^:(71(7(;;(CeyGjJZqkpZJZqQqQfQQqQfppp@@@@@@@@fpQQQ@p@kkppqZy'......
7'.'`.`^^^'...:1((;;""(([cyy[77JGjeeeJZZyJJQqZGqqqqQfQqfff@@@@Qfpk####pkk:......