######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
#############################################################################@xxxxW###################################################################
######################################################################W@++z;iMz#*xMWx+W###############################################################
###################################################################@x*,i+:...``...;+.:n*@#############################################################
#################################################################Wzi;...`````````.,#:#*x*x############################################################
################################################################x;.,...```````````.,.*ix@xx###########################################################
###############################################################+.,:,................``,;#zzx##########################################################
##############################################################+,,,.............``.,,,..`..:+W#########################################################
#############################################################+,,.`...```````.`......,``.,...,z@#######################################################
#######################################################@WW#@z;.....`````````..````.`..`..:+.i+;x######################################################
################################################@@zzz#+::znxi,....````.```````...`..```.,,:;.*z*+W####################################################
#############################################@n+::,:,,,,..,:,,...```...`````.`.``````.``````:iMMn#W###################################################
###########################################@M;,,+:;;..,....,,....``````.```..``````````````..,,+n@#W##################################################
##########################################Mi,,,.............,....`````````.,``````````````````.,,z@#W#################################################
#########################################+,.;..,,,......``......```````````````````````````````..`iM+@################################################
#######################################@*........,,...`.``.....`...``````````````````````````````.`,zz################################################
######################################Wi............,..`````...````....``````.`.``````````.````````..#@###############################################
######################################i,..,...```......`````.```....``````.````````````.``.``.,`.```.`################################################
#####################################*.......`...`.....``````````````````````````..````````.````:..:...x##############################################
###################################@+;.....`....,....````````````````````````````````````````````.;`.:.;@#############################################
###################################+,i`........````````````````..````````````````````````````````,..`,..x#############################################
##################################W,+...,.....````````````````..`````.````````````````..```````.``.`.``,;#############################################
##################################*.........`````````````.````````.`````.`.````````....````.`````````.``:@############################################
#################################@,:....``.`.```````````...........````..``````.`````````.`.```````,.`.`:@@###########################################
#################################x;,`.```.`...````.`````.........````..`.`````.```.````..``..`````.`.`,.`*W@##########################################
#################################+..````...,.``...``............```..````````......`````````.```````.``.`.x@##########################################
#################################*..`````.````..`..,....,,,,,,,.......`.``.........`````````..``````.``...,n##########################################
################################W,..```,.``.,,...,.```.......,,,...,........,,,,,....`````````.`.```..`..`,i##########################################
################################n..```,,.````..``````...,,::,,,,,,.......,,:,::,,,,,...``.``....`.```.``,``,M#########################################
###############################Wn````..`..`...........,,,.`...,,:,,,,,,,::::;:::::,,,..,.......``.;,`````.`.z#########################################
###############################W*````..``.```........,,....,,:,,:::::::;;;ii;;;:::,,,,,,,...,...```:``````..,W########################################
################################*```..````..........,..,,:,,,::;:;;;::;ii***i;;:::::::,,,,.,,.....`,````.`...*@#######################################
##############################@WM`.`.`.....,,,,:,,,..,,:;i*;:;;iii*i*;i****iii;:;;;:::,,,,,,,.......``.`.....,M#######################################
###############################M#`...`....,:,:::::.,,:;;i**ii;ii****++*++****iiii;;;:::::,::,,...:...``.`..,.:*#######################################
##############################@#;.`.`.,..,,:::,::.,:;ii****++***+++++#++++****iiii;;;;;::,,:::,.....```..,.,:,;M######################################
###############################n`..``....::,,,.,.:;ii+*+++###+#########+++****iiii;;;;;;::::::,,,...,....,..;,:n######################################
###############################i`.......,,::,..,;;*+#####z##z##########++++***iiiiiii;;;;;:::::,,:..```.:...,::*######################################
##############################@.:.`....,:;i**+iii*+##zz#zzz###z########++++++***iiiiiiii;;;::::,,,,..``......,:*######################################
##############################z`......,,;i***++++#####zz####zzzz#######+++++****iiiiiiii;;;:::::,.,,,,.`.`,..,:i@#####################################
###############################`,`..`.,,;**++++++#########zzzzzzz#######+#++****iiiiiiiiiii;;:::,...,,...,.,`,:iW#####################################
##############################z.......,:i**+++++##########zzzzzz#########++++**iii**iiiiiiiii;;::,,..,,.,.,:.,:ix#####################################
##############################@,`.`..,::i*+++++###########zzzzz##########+#++**i*iiiiiiiii*ii;;::,....:,,,.;..:i######################################
##############################@,``...::i*++++++#########zzzzzzz############++***iiiiiiiiii*+*i;:::,...,:,:.:.,:;i@####################################
###############################*`.``,:i**+++++++######zzzzzzz##zz########++++****iiiiiiii*+++*;;::,,,,,:,:.,,:;;i@####################################
################################..`.,;i*+++++++#####zzzzzzznzzzzzzzz######++****iiiiiiiiii*++*ii;:,,,,,,..,.:.:;i@####################################
##############################@;:...:;i++++++++###zz#zzznnnnnzzzzzz#######++******iiiiiiii*++**i;::,,,,,,,,,,.:;*W####################################
##############################@;,..,:i*+#+#++++####zzzznnnznnnnzzzzzz#####++****i*iiiiiii***+****i;:,,,:,,,:,::;iM####################################
##############################@i,..,;i++++#+++++###zzznnnnnnnnzznzzzzzz###++****iiiiiiiiii**+++++*+;:,:,,,.,,::i:z####################################
###############################z,.,,;*#+++++++++###zzzzznnnnnnznnzzzz#####+*****iiiiiiiii***++++#*+#*:,,,,,.,,;;:#####################################
###############################n..,:;*#++++++++####zznnnnnnnnnnnnzzzzz####++****iiiiiiiiii***+++#+###i,,,.,,,,:;:#####################################
###############################x,,,:i+z+++++*+++####zznnnnnxnnnnnzzzzz###++*******iiiiiii*i*+*++#zzzz*:,,,,,:,:;;+####################################
################################;,,:i+z+++++++++####zzznnnnnnnnnznz###z#+++*******iiiiiiiii**+++##nzz+;:,,,,:::;;*@###################################
################################i,,:i#z#++++++++#####znznnnnnnnnzzzzzzz###++******iiiiiiii**+++++zzzn+i::,,,;::;:i+z@#################################
################################i,,,i#z#++++++++####zzzznnnxxxnnnnzzzzz###++******iiii;;iii**+++#nzz#zi::,,,:::,:*+++W################################
################################+;,,*zz#+++++*+++###zzznnnnnnxnxnnzzzzz###+++++***iiii;iiii**++##zznzzi::,..,,,:i+i,:#################################
################################M:,:*zz#+++**++++###zznznnnnxnnnnnznzzzz##+++++****iiiiiiii*+++##zznxz#;:,,.::,:*#:,:*W###############################
################################@+,:+zz#+++***++++##zzzznnnnnxnxnnnnzzzzz###+++++****iiiiii*+#++#zznxz#;;,:.,,:;+n#::iz###############################
#################################M::*zz#++**+*++++##zzznnnnnnnnnnnnnzzzzzz###+++++*****iii*++++#zzznnn+i;::,,,:;;+xi;i#@##############################
##################################+:izz#++++**+++####zznznnnnnnxxnnnnnzz####+++++++**iiiiii+##++##zznn+*;:,,.,:;:iM+;i+M##############################
##################################M;;#z##+++*++++###zzznnnnnnnnnxxnnnnnzz###+++++**ii;;::::i+z####zznn+i;;,,,:;::inz:i#M##############################
##################################@i:+z##+++++++####zznnnxnnnnxxxxxnnnzz#++++*+*iii;:;::,,::i+zz##z#nn#*;;::::*:;i+n;i+M##############################
###################################*:*###+++++++###zznnnnxnnnxxMxxxxnzz##***ii;:::::::,,,,,:;*zzzzz#znn*i;::::::;iin;;+M##############################
###################################x:;z##+++++++###zzzznnnxxxxxMxxxnzz#++i;;;:,,,,,,,,::::::;i+zzz##zxn+;i;;;:,,:;*+#;*M##############################
###################################@*;z##+++++++####zzzznznnxnnxxxnn##*+*i;:,,,..,,:;;;;;::;;;*#z#zzznn#iii*:,,,,;i+#;*###############################
####################################n:*z##++++##++######z#znnnnxxnnz##*ii;:,,,,,,:;;::;;;;;:;;i*##z#znn#**i+:.,,::i*#iz###############################
####################################M;*z##+++++++###+*+#+*+#znxnnnzz#+ii;;:,,,,::;i;;::,,::::;;i++#znnnz+*i**,,,::;*+iM###############################
###################################W+;;z##+++****+*ii;iiii*+#zzznzzz#*ii;:,::,;;:,,..,::;,:::;;ii*#znnxn+**i**,::;;*+#@###############################
###################################n+i:z#z+iii;;;;:;:::;i***##zznzzz#*i;:,:,:;i;,,.,,::.,,,::;;;i*+znnxn#***i+:::;;i#z################################
###################################W#i:+z#i;::;:,,:,,:::i*i*+#zznnnz+*;:,,,:i;*+:i..,:;:,,,,,:;;ii+zznxxn***i+::::;i#W################################
####################################M*;*n+;:::;:::,,,,,,::;i++#znnz#+i:,.,:;;*n#::`.,:;:;;::;;;iii+#nnxMx*i*i+;:::;*#@################################
####################################@#i*n+;::;;i;;::::::::::i*#znnn#*:,..,;:;#nni:,::;;:;i;;iiiii*+#znxMx+;+i*::::i*n@################################
#####################################W+*n+iiiiii::;;i::::::::;*znnn#i,,..:i;#znn#ii;;;;;;;:;i*****+#nxMMn+:+*+::i++*x#################################
######################################z*nz****i:;i;:,,,,,::;:;i#zzz#i,,..;;i;;iii*;;;;;;;:;i******+#nxMxn#;z**,:*z#*W#################################
######################################z*zz+**i:;;:;;:,.,:*i;iii+zzz#i,,,,:;iii***iiiii;;:;i+******+#nxxxn#iz*i:;*n+z##################################
######################################z*zn+**i;;,izi,#,.:i+***i+zz##i:,,::;iiii**iiiii;:;*+++++*+*+#zxMxnz*z*;:;*nzM##################################
#####################################@n+#n#**i;,;#z*:,.::**ii*i+#z#+*:,:,:;iii;iii;;;;ii*+#++++**++#znxxxn+n+::i+nx@##################################
######################################z+#n#+*i::;*##;:;;;;;ii*i+zzz#*;:::::;iiiiiiii**+++###+++****#zxxxxn#z+::;#nM###################################
######################################M**xz+*i;iiii**iiiiiiiii*+zzz#*i::;;;;iiiii***++######++++++++#nxxxnzz*:;;+nW###################################
######################################W+*xz++***ii;;iii;iiiii**#zzz#*i;;;iiii******+++######++++*+++#nnxxnz#*,:i+n@###################################
#######################################zinn+*++*******ii*i****+zzzz#*iii;iiii*+++###########++++++###zxxnnzz*,:;+z@###################################
#######################################nizn#++++*************++#zzz#iiiii;ii***+#####z#zz###+++++###zznxnnnn#,::*n####################################
#######################################M*+nz#+++++********+++++zzzz#*iiiiiiii*++##z#zzzzz####+++++#zznznnnznxi::*W####################################
#######################################@++xz##+++++***+++*++++#zzzz#*iiiiiiii*++####zzzzzz###+++++#z#zzzznnzx@zzW#####################################
###MMW@MM@##############################x*nz#######++++++##+++#zzzz#*iiiiiiii**+##zzzzzzz####+++*++zzzzznnnnn#########################################
##@ii+Miiz##############################@zzn##########+#####++#zzzz#+*iii;ii***+##z#zzzzz###+++***++zz##zz#nn#########################################
##@ii+Miin##MxW##WMW#MMW#################@xn#####zz####z#z##++#zzzn#+*i;;;ii;i*+##z##zzz###+#++***+++##+###zn#########################################
##@ii+Miin@#ii*#@zi+@*in##################Wz####zzzz#zzzzzz##+#zzzz#+*i;;;ii;;i**++########+++***iii*++*+#zzn@########################################
##@ii+niinxi*n*inxi*W*ix###################n+##zzzz#zzzzzzz##+#zzznz#**;;:iii;;;i**+++####+++***ii*ii*+*++#zn#########################################
##@iiiiiinzi*M*i#M**x**M###################Wzzzzzzzzzzzzzzz##+#nzznz#+*i;;i*ii;,:i****+++++++**iiii;;iii+###n@########################################
##@iiiiiinziiiii#@**z**W###################@nzzzzzzznzzzzz#+++#zzzxn#+*i;;i+**;,,;i*******+****i;;i;::i**++#n@########################################
##@ii+xiinzi*znzx#+i#**@####################nzzzzzzzzzzz##+*++#zzzxnz+**i;i*+*;,.:i*++**i****iiii;;;::;i++#zn#########################################
##@ii+Miinzi*W#+z##i***#####################Mnzzzzzzzzz##+**+##zzzxxz#+*iii**i:.,:i*+**iiiiiiiii;;;;::;i*+#zn@########################################
##@ii+Miinni*W*iz#xiii+Wx@##################Wnzz##zzzz##+**++#zzzznxn#+*i:;i;,,,:;i***iii;;;;iii;;:::::;+++#z@########################################
##@i*+MiinMii+*ix#WiiizziW###################nz###zzzz#++*+######znnz#+i:,,..,,:;;iiii;iiii**ii*;::::::;i+#zzW########################################
##@++#M+*n#x+**n#@niiixziW###################nz########+**+##+++###z#+i:,...,,:;;;;;ii;;iii*ii**;;:::;;;i*+znW########################################
#############@###W*ii#@nz####################Mzz######+**+###+****+#+*;,...,,:;;iiiiiii;;:;;;i**i::,,::ii++zzM########################################
##################@@@##@#####################W#######++**+++++**i****;:,,,,::;;;*****i;:..iii***i::::::;i++zzM########################################
#############################################@####+#++*****+++*i;**ii;:::::;;i***+**i;,..;+***+*;:,,,:;;;*+#zM########################################
##############################################z++++++*iii*****iii**iiiii*****++**i;:;:.,;+++i*+*;::,::;;i*+zzx########################################
##############################################M**+++**iii********+****+#+##++iii;i*i:i:;*++****i;::::::;;i+#zn@#######################################
##############################################@+**+++ii***i*+*+*+#++++###+**ii+x###+:;;i++**iii;::,,,,,:;i###n@#######################################
###############################################n*i**+*iiiiii**+*****i****i#xnnnxz+##iii**+*iiii;:,,:,,,,i*++#n@#######################################
###############################################W+i*****ii;;;;;;;;iii#+zxxnxxxnxnz:;iiii*+**ii:;::,,::,,:*+++#z@#######################################
#################################################;ii***ii;ii;::,+#z#xxxxxxnxnzii+iiii****+**;;:,,,,:,,,;*+*++zW#######################################
###WWW############@WW@@WW@##############WWW#####M+*;*++*i;*++*;;;#zzxxxxxn**zi*+iiiii******;;:::,,,,,,:i****+zM#######################################
##@ii+############MiinniiM#############@+i*W#####z+ii*++****##+iii+##n##*+zxn++*+*iii**+*i;;;::,,,,,,,,;**i*+zx@######################################
##@ii+###@WMW###MMMiinMnnW#@WM@###@MMW#@+i*@#####@+*ii**+i;i+##+ii**iii+#zz++++++*i******i;::::,,,,,,,;*iii**#ziW#####################################
##@ii+##M**i*n#z***iixn**M@#*i*n#W+*i*z@+i*@######M**;ii*ii**+#+*ii****++++++++**********;;:;:::,,,,,:i*;;;i*+z,;W####################################
##@ii+##+i##iiW+i*ziixniiMzi*ziiMni*niiW#i+########n*i;;i**ii++#++ii*+++++++##**********ii;::::,,,,,,:ii;;;i*+z:.;W###################################
##@ii+#@*izniiM+i+MiixniiM#i*Miinzi*M##W#i+########@zi*;iii;*i*++++**++####++************i::::,:,,,,,ii;:::;*+n;..*###################################
##@ii+##Mxz*iiM+i+MiixniiM+ii*iizMii*x@#zi+#########W*i;::;;iii++#+++++++++******i****+*i;;;:::,,,.,:ii;::;;i+z;...###################################
##@ii+##M+i*iiM+i+MiixniiM+i*zzzM#n*ii#@zi###########Mi;:::i;ii+++++##+++***iiiii**+++***i:::,,,.,,:;i:::::;i*z;`..,W#################################
##@ii+#@*i#niiM+i+MiixniiM+i*W++x@Mx#iiMni############W*:::::;***+++++++*iii;iii**+#++**i;:::::,,,:;;::,,,:;i+z:``..*#################################
##@ii*MM*izniiM+i+MiixniiM#i*Wiinni+WiixMnx############n::::;;;i****+++***ii**i**++++++*ii;::,:,.,:;;:,,,,:;i*#i```.,M################################
##@iiiiz+i++iiM+i*+iixniiMni*#iiMxi*#iiM#i+############x:::,::;;i***++++**i+***i+++*+*i*i;;:::,.,:;;:,,,,,::i*##```.,+################################
##@****nn**#**Wx**z**xn**M@z***x##z***n@z*+############i,i;:,:;;*i*i++##+***+++++******ii;:,,:,,:;;:,,.,,,,:;*##````.;W###############################
#########@@#####@@###########@######@#################z:.:+i:,:;;;*i+++#+++++##+**+***iii:,::,:::;:,...,,,::;*+#````.:z###############################
####################################################@zi,.`+*i::;i*ii**++++#####++++***i;;;:,,:,:;:,,....,,,:;*++.```.,+M##############################
###################################################@#*;,.`*++i::;*i*****++#####+#+++i*i;::,,::::;:,.....,,,:;*+*.```.:izM#############################
##################################################@#;*;.``:+**i:;;iii**+*+###+####++*;;;:,,,:::;;,.....,,,::;i*;.```.,;zzW############################
#################################################@#ii*:.``,****;:;;i*****++#+++#+#*ii;;:,,::::;::,.....,,,::;ii:.```.:;#zz@###########################
###############################################@M*ii*i:.``.ii++*;:;iii***+i++++#**ii;;:,,,:::::::,..,,,,,,::;;:,.```.:;+z##zx@########################
############################################@nz+iiii*;,.```;i*++*;:;iii*+*++**++*i;i::,,::,:::::,,,.,,,,,:::::,..```.::*zz##i*nW######################
#########################################@x#iiii;;;i*;,````;***++*i;;;;i******ii;i;::,,::,,,,,::,,,,,,,::::::,,..```.:;*###++:;*#xW###################
######################################@M+*iiiii;;;;*i;,``.`:i**+++*i::;;iiiiii;:::,,,,,,,,...,::::,,,::::::,,,,..```,:;*####++:;ii*+nW################
###################################@Wn+iiiiiii;;;;i*i;,``.`,i***++++i:::::;;::,.,..,,,,,....,:;::::::::::::,,,,..```,:;i####++*:i;i;;i#M@#############
#################################Wx#*iiii;;ii;;;;;*ii;,.`.`.i**++++#+*;;;::,,,,,,,,,,,..,,,,,:;;;::::::::::,,,,..```::;;+####++;i;;i;;;i+nW###########
##############################Wx#*iii;;ii;iii;;;;iiii;,.`.`.i***++++#+*iiii::::::,,,,,::::::::;:::::::::::::,,,..``.::;;+####***;;;;i:;;;i++xW########
###########################@Mz+iiiiii;;iii;ii;;;;*iii;,.`.`.;***+++++++*iii*iii;;;;;;;;;;;;;;;:;::::;:::::::,,.....,;:;;+#####**i::;;:;;;i***+#nW#####
########################@xz***ii;;iii;;;;;;;;;;;iiii;;,,`.``;**+++++++++**********ii*ii*ii;;;;:::::::::;::::,,.....,;;;;*+####+**;;:;::::;i*+*+**zx@##
#####################@Mz**iiiiiii;;i;;;;;;;i;;;;iiiiii::`..`:i*++++++++******++++++++*****ii;;::::::;;;;;::::,,....:;;;;*++##++**i;;:::::;ii*+******nM
###################Wx+iiiiiiiiii;;;;;;;;:;i;;;;;iiiiii::`..`,i**++##++++**+++#+++++++++****ii;::::::;;;::::::,,....:;;;;i++##+++**;;:,,::;;i*********+
################@xz*iii;iiii;;;i;;;;;;;::;i;;;;;iii;i;;,.`.`,i*++++#++++***+++###++++##+++*ii:::::;;;;;;:;;::,,...,:;;;;i+++##+***i:,,,:::;;iii**i****
##############Wn*ii*iii;i;;;;;iii;;;;;;::;i;;;;;iiiiii;,,`.`.;*++++##++++**++++++#+#+####+*i;:::::;;;;;;;;::::,,..::;;;;;*+++#++*ii,,,,::;;;;;iiiii**i
###########@Wz*iiiiiiii;;;;;;;;iii;;;;;;:;;;;;;;iiiiii;:,....:*++++###++****+++#######z##+*;:::::;;;;;:;;;:::::,,,:;;;;;;**++##+*i*:.,:::;;;;::;i;iiii
#########@n#iiiiiii;;iiii;;;i;;;ii;i;;;;;i;;;;;;i;ii;i;:,....:i+++#####++***+*+++####zz##*i;:::::;;i;;;:::;;:::,,,:;;;;;;*+++++#+*ii.,,:;;;;:;:::;;ii;
######@x#**iiiii;;;iiiiiiiiiiiiiiiiiii;;ii;;;;;i;i;;;i;:,...,,i++######+++****++*##+####+*i:::::;;;i;;::::;;;::::::;;;;;;i**+++++***:,,:::;;:;:;::::i;
####Wn+*iiiiii;i;iii;;iiiiiiiiiiiiiiii;;;;;;;;;iii;iii;:,,..,,;*+######+++*****+++#++#+#+*;:,:::;;ii;;;;;;;;;;;::;;:;;;;;i***++++***;,,:::::;;;;;;;;:;
#@M#*iiiiiii;iii;;iii;;iiiiiiiiiiiiiiii;i;;;;;;;;iiiii;,:,,..;:i+######+++++*****+++##++*i:,:::;;iii;;;:;;;;;;;;;;;;;;;;;i***+++++*i*,,,::;;;;;;;;;;;:
n+**ii;iiii;iiiii;;;;;;iiiiiii;iiiiiiiiii;;;;;;;;iiii;;::,,..,*i+########+++++****+++++*i;::::;;iiii;;;;;;;;;i;i*;;;:;;;;;****++#+**i;,,:::;;;;;;;;;;:
iiii;;;;;iiiiiiiii;;;;;;;iiiiiiiiiiiiiiii;;;;ii;;iiii;;:;,,,..;z+##########+++*+*******i;;:::;;;iiii;;;;;;iiii*x#;;;:;;i;;i***+*+++*ii,,:::;;;;;;;;:::
i;;;;;;;;;;;;i;iiiii;;;;;iiiiiiiiiiiiiii;;;;ii;;iiiiii;:;,,,,.,+xn######+#+##+++++*****i;;;;;iiiiiii;;;;;iii*zMxi;;;;:,,:;******+++*i*:::::::::;::;:::
;;;;;;;;;;;;;;;;iiiii;;;;;;;iiiiiiiiii;i;;;;ii;;iiiiii;;:,,,,..;zMMzz#########+++#+#++***iiiiiiiiiii;;;;iii#xMxn;;;;;.``..;*****+++***:,,::::::::::::;
i;;;;;;;i;;;;;;;iiiiiii;;;;;;;iiiiiiii;i;;;iiii;;i;iii;;::,,,,.,*xWWMn##############+#++**iiiiiiiiii;;iii+nWWMM+;;;;,.````.;+****+++*ii,,,,::::::::::;
iii;;;;;;;;;;;;;;;;i;iii;;;;;;;;iiiiii;i;;;ii;;i;iii;;i;::,,,,..;#xWWWWxnz#zzz#######+**+******iiiiiii*#xMMMxxnii;;;,``````.i*********i,,,,,:::::::;;;
iiiiiii;;;;;;;;;;;;;;;;;i;;;;;;;iiiiiiii;iii;;;iiii;i;,`.;,,,,..,*nMWWWW@WMnzzzz####++#++*****iiiii**zxMMxxxnn#;;;;:````````:**********:,,,,::::::;;;;
iiiiiiii;;;;;;;;;;;;;;;;;;;;;;;;i;iiiiii;;;;;;;;ii;i;````;;,,,,.,;#nMWWWWWW@WMxnzz#####+++++*****+znMMxxxxxnn+;;;;;.````````.:*********;,,,::::::;;;;;