###############################################################################################################;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
###############################################################################################################;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
##############################################`################################################################;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
#############################################`: ###############################################################;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
#############################################:,## ######## `````..,.`##########################################;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
############################################ :,#  .``......,,,::;ii;:,.``######################################;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
############################################ ;.,,,,,,,,,:::;;;ii*iiii;;:,,.`###################################;#zzzzzzzzzzzzzzz++++++++zzzzzzzzzzzzzz
########################################`.,::*::::::;;;;iiiii****iiiii;;;;:,,.`################################;#zzzzzzzzzzzzzz*zxxxxxxz*zzzzzzzzzzzzz
######################################.,:ii;;*;;;;iii;iii*ii****iiiiiiii;i;;;::,.`#############################;#zzzzzzzzzzzzz#zxxxnxxxxn+zzzzzzzzzzzz
####################################`,ii+*ii*xi;;;;;;iiiiiii*++*iiiiiiiii*iii;;;::,.`##########################;#zzzzzz+z+*zzz+xxxz.zxxxx+zzzzzzzzzzzz
###################################.:i+#+++inx*;;;;iiiiiii**++*iiiiiiii;;*;i*;;;;::::,.`#######################;#zzzzzz;#+*+zz+xxx#,nxxxx+zzzzzzzzzzzz
##################################,;*++++#+**i;;iiiiiiiii***++*iiiii;i;;;ii***iii;;::::,,.`####################;#zzzzzz*##;zzz+xxxi:nxxxx+zzzzzzzzzzzz
#################################,i*++*+##+iiii**+++###zzznn+++*******i;;;****iiii;;i;;:::,,.`#################;#zzzzzzi+;+zzz+xxxi:++xxx+zzzzzzzzzzzz
################################,i**++#znnn#+*+********++#nn++*####+*iiiii;;ii*iii;;;;i;;::::,.` ##############;#zzzzzz+#++zzz+xxx*::,xxx+zzzzzzzzzzzz
###############################,*#zznnxMMx+****iiii***++##x+#+M@@@@@Miii+*ii;;i;;i;;::;;;;;::,,,..`############;#zzzzzzzzzzzzz+xxxxzz:xxx*zzzzzzzzzzzz
############################# ;+##++#xMMx*iiiiiiii****++#zn++nW###@@@*ii###zn#*;;;;;::;;;;;;:::,,,..`##########;#zzzzzzzzzzzzz#zxxxxxnxxz+zzzzzzzzzzzz
#############################i#++*#++znx*;;iiiiii*****+#zx+##zW@WWWW@+ii+*++zxx#**i;;;::::::::,::,,,.##########;#zzzzzzzzzzzzzz+#xxxxxxz*zzzzzzzzzzzzz
########################### :#++;i#+zz#+;;iiiiiii*++#zzznn++z#z++i*+n#i;+****zM*ii****i;::::::,,,,,,,`#########;#zzzzzzzzzzzzzzz#+++++++zzzzzzzzzzzzzz
###########################,#*+;:i+#z#zi;;i;i*zxMWW@@@@WM+#+##z++***zzi;**i**i*i;;ii*****i;;::::,,,,,.#########;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
##########################.+*+i:;i##nz*;i*##+#nWMxMW@@@@n++#+#z+++**zzii**ii*iii;;;;**;;iiiiii;::::,,.#########;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
#########################`++**::;izzxzi+MWWx##MMMxnMMnxM+#+#+#z++***znii**iiiiii*;;;ii,::::::;iii;;::, ########;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
########################`*+++;:;;*xzxnnWWWWx#zMMWMxWMMMn++zxMMM#****znii**iiiiii*;:;i*;:::,,,,:;:;;;;:`########;#zzzzzzzzzzzzzzz*++++++*zzzzzzzzzzzzzz
####################### i#++i:;;;*xnMxnWWWWxzxMMMMMWWWM++#zWWMWni***znii*+iiiii*;i;;i*i;;;;:::::,,,,:;`########;#zzzzzzzzzzzzzz*xxxxxxxx*zzzzzzzzzzzzz
#################,;*:  ;n+#i;:;;;*nzxxxWWWWMMMMMMWW@WWz+zxzWWWWx****zziii#**ii;::i*ii+*;;;;:::;;:,,,,:,########;#zzzzzzzzzzzzz+nxxxxxxxxx+zzzzzzzzzzzz
################.nW@n :n+z#;;;;;;i***#nWWWWWMMxMWWWWWM+#nMz@WWWx****zz;i;**:,....;##*nn+ii;::::;,,,,,:, #######;#zzzzzzz#zzzzz+xxxx+*xxxx+zzzzzzzzzzzz
################:WW@x`z+#z#;ii;iii*zxMMWWWWWMnxWWWWW@z+zMWM@WWWM****nz;;;i;::,,,,:#zznMnz+i::::;;:,,,,:`#######;#zzzzzzz#+zzzz+xxii,,i;xx+zzzzzzzzzzzz
################iWW@xzx+zzzii**+zxMWWWWWWWWWWWWWWW@@M++nW@W@WWWx+***x#;;;ii;,,...,+nnWWMnz*;;+;;;::,,;:,#######;#zzzzzz*i;+zzz+xx:;# ;.xx+zzzzzzzzzzzz
################iWW@@WzzxWMMMMMMMMMxxxnnz##++++++#zn###M@@WW@WM**++zn*;i;;*i::,,,,*nxxWWx#i#nni;i:,,,,;,#######;#zzzzzzz#+zzzz+xx:;# ;.xx+zzzzzzzzzzzz
################iWWWMMxxnnnnznnxxxxxxxxz*;:;;;;ii*++*+zW@@WWWWn##z#*ii;;;;++::,,..:nnMMMnn#nxn#ii;;i;i;,#######;#zzzzzzzzzzzzz+xx:;  ;.xx+zzzzzzzzzzzz
################`z##xxxnnz#++****iiiiii;;;;;iii+++****zW@@@WMMz+iiiii;;;i;*+ii;;;:;nMWWWMn#nnxnz#*i*i+#,#######;#zzzzzzzzzzzzz+xxnnzznnxx*zzzzzzzzzzzz
##############`,:;i*iiiii;:::::::::;;;;;iiiii+++******nWWMz+*iiiiiiiiiiiiii+i;;:::,+MMMWMzi#MWMn#**ii*#:#######;#zzzzzzzzzzzzz##xxxxxxxx##zzzzzzzzzzzz
############`,:;;iiiii;;;;;;;;::::;iiiiii**++++*******nn#+***iiiiiii**iiii;;;;:;:::*nnnxxn+nxMWz+****#zi#######;#zzzzzzzzzzzzzz++znnnnz++zzzzzzzzzzzzz
##########`:;;;;;;;::,,,:::;::::;i****####+++************+********i*zn*iiii;::,,,,,;**ii**ii**+**iii*+#i ######;#zzzzzzzzzzzzzzzz######zzzzzzzzzzzzzzz
######## :ii;;;;;;:,,,:;;;;;;;;*###zxMMMn#++******************ii*ii*xxziiii;::,,,,,;ii:ii;:::;iii;;;;;;:`######;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
#######.*+ii*iiii;:,:;iiiiiiii+###MWWM#nz++***++************iiiiiiii**iiiiiiiiiiiiiii::i;:,,::;i;::;;,,,,######;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
#####  *n+*****ii;:;ii*******+###nzzz#+z++#++++********i****;;ii***iiii**ii**+****+****+**iiiiiii;;ii;i;.######;#zzzzzzzzzzzzzzz++++++++zzzzzzzzzzzzzz
######`nxMWWWWWWWWWWW@@@@@@@Wz###xMMM++#+##+##++****ii;i*++++++++++****++**i;;:,,,;i**i***ii**i;;:::::::.######;#zzzzzzzzzzzzzz*nxxxxxxn*zzzzzzzzzzzzz
######;MMW@@@@@WWWWWWWWWWWWWM##+#MWMWxn#+######++*ii;i*+####+++++++**ii;;;;;;;;;;;;i*+**+******iiii****i,######;#zzzzzzzzzzzzz+zxx#zzzxxn+zzzzzzzzzzzz
##### *MM@@@@@@WWM@@@@@@@@@Wn##+nMMMxxx########++*i*+###+#+++++********+++++***++++++++++#z##++*ii**iiii:######;#zzzzzzzzzzzzz+xxn:ii,zxx+zzzzzzzzzzzz
##### nMWW@@@@@WWxW@@@@@@@@Wz###+i*#Mnn###################+#zzzxnnzzz####+z######z#####+znxnn#++*+******;######;#zzzzzzzzzzzzz+xx*+i*#*xx+zzzzzzzzzzzz
##### zxW@@@@@WWWzWWWWWWWWWM###zi;inMzn############+**ii*z##Mnxxxzxnxzn###nznnnxznxnnn##nnxnn##*;;+##+++,######;#zzzzzzzzzzzzz+x#:+:.+,#x+zzzzzzzzzzzz
##### nxW@####@WWW@@@@@@@@@x##zz;i+zzzn##########+*****ii*znxxnxxxMxxnn#z#xnnznzzzn#z#########+*##*#####.######;#zzzzzzzzzzzzz+xn;z;,z:zx+zzzzzzzzzzzz
##### MMW@@@@@@WW@@@@@@@@@Wn##zz;z+xzzn##########***+#z#+i*zzzzzzzzz##z#z###########zzzzzzzzzzzn@@n##++#.######;#zzzzzzzzzzzzz+xx+;*+;*xx+zzzzzzzzzzzz
#####`xMW@@@@@@@@@@WWWWWWWWzz#zz+xzMMxz#########+*+zM@#@M#i#zzzzzzzzzznnnnznnzzzzzzzz#zzzzzzzzn@@@Wnnnnn,######;#zzzzzzzzzzzzz+xxx;;i;nxx*zzzzzzzzzzzz
#####.xMW@###############@Mzzzz+*#+#z#z###zzzz#+*+z@#####WzzxxxxxnnnnznnnzzzzznnnnnnxxxxxxxxxMMWW@@xxxn+ ######;#zzzzzzzzzzzzz##xxnxxnxxz#zzzzzzzzzzzz
####`*MMW@@@@@@@@@@@@@@@@@xzzzznnnnnnnnnxxxxxMxxnx@#######@xxnxxxxxxxxxMMMMMMMMMMMMMMMMMMMMMMxWW@@@n##+;#######;#zzzzzzzzzzzzzz+#nnxxxn#*zzzzzzzzzzzzz
### iWWW@@@@@@@@@@@@WWWWWWxzxMWWWWWWWWWWMMMMMMMWW@@@@@@@##@WMMMMMMMMMMMMWMMMMMMMMMMMMxxnnzz###WW@@@M###,#######;#zzzzzzzzzzzzzzz#+####+#zzzzzzzzzzzzzz
### *@@@W@##############@@WWWWWWWWWWWWWWWWWWWWWW@@@@@@@@@##@MWWWWWWWWWWMWMMMMxnnzz###########z@MM@@M##*`#######;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
####.@@@W@########@#####@@@@@@@@@@@@@@@WWWWWWWWW@@@@@@@@@@#@MWWWWWMxxxnnzz###########zzzzzzzzx@MM@@W#+, #######;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
####.M@@@W@#############@@@@@@@@@@WM@@@@@@@WWWW@@@@@@@@@@@#@xnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzW@WWW@Wni`########;#zzzzzzzzzzzzzzzz#****#zz*#nzzzzzzzzzz
####`x@@@W@@@@@@@@@@@@@@@@@@@@@@@@@M@@@@@@@@@WW@@@@@@@@@@@@#WnzzzzzzzzzzzzzzzzzzzzzzzzzznnxMW@@WMW@W*.`########;#zzzzzzzzzzzzzz#;.    .;i`#nzzzzzzzzzz
#### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WWWWWWW@@@@MMMW@@@@#@nzzzzzzzzzzzzzzzzzzzzznnMW@@@@@@@@@MW@z` #########;#zzzzzzzzzzzzz+, .;++i. # #nzzzzzzzzzz
#####;@@@@@WnxznxxMxM@@@@@@@WWW@@@@@@@@@@@@@@@@@@@WWMWW@@@@#@nnzzzzzznzzzz#zznxMMWWWMWWWWWW@#@@@WWi` ##########;#zzzzzzzzzzzz+.`*nxnnx* # #nzzzzzzzzzz
#####`W@@@@WxM#znxnnn@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MMWWW@@@@#@nnnnznzzznxMMWWWWWWWMMxxxxxxnnM@@@@WW.  ##########;#zzzzzzzzzzz#, *xnzzz*....#nzzzzzzzzzz
#####`x@@@@Wxxnzxxn#n@@@@@@@@@@@@@@@@@@@@@WW@@#@@@MW@@WW@@@#@xnnnxMW@@@@WWWMMMxxxnnz##+*i;;i@#@@@z ############;#zzzzzzzzzzzi ixnzzzzznnnnnzzzzzzzzzzz
######;#nMW@@@@WWMMMx@@@@@@@@@@@@@@@@@WWWW@@@@@@@@@W@@@W@@@#@W@@@@WWMMxxnzz###++**i;:,..````*zz#+. ############;#zzzzzzzzzzz, zn;i;:i:;*zzzzzzzzzzzzzz
######  ``.,#################@@@@@@@@@@@@@@@@@@@@@@W@WW@@@@#@@@WMxnz##+**i;;::,,..`````           #############;#zzzzzzzzzz#`.xni+;i*;*+zzzzzzzzzzzzzz
######## ```,@#################@@@@@@@@@@@@@@#@@@@@W@@@@@@@#@Wxn#+*ii;:,,..```````   ##########################;#zzzzzzzzzz# ,nzzzzzzzzzzz++zzzzzzzzzz
######### ```M###########@nnnxxxxxxxMMWWWWMxW@@@@@@@WWW@@@@#@z+i;::,,.`````     ###############################;#zzzzzzzzzz# ,nzi**+ii;*#z; #zzzzzzzzz
###########  +@#########W*ii*****+++####zzzzM@@@@@@@@@@@@@WWz;,..`````    #####################################;#zzzzzzzzzzz.`zz;;i*:;:;#z,.nzzzzzzzzz
############# ;z@######n,....,,,,::;;i***+++#@@@@@@@@@@@@x,.````    ###########################################;#zzzzzzzzzzz; +nzzzzzz#zz* ;xzzzzzzzzz
############## `,#MMMni` `   ```````..,,,:::;M@@@@@@@@@@@:`    ################################################;#zzzzzzzzzzz#`,#nzzzzzzz#,`#nzzzzzzzzz
##############     ``    #####       ````````*@@@@@@@@@@+` ####################################################;#zzzzzzzzzzzni#:#nzzzzz+: ixnzzzzzzzzz
###############         ################     `+W@#@@@@M;`   ###################################################;#zzzzzzzzzzzzz; `i+##+i. ;nnzzzzzzzzzz
##################     ###################### `.;i#**:`    ####################################################;#zzzzzzzzzzzzzz*. ```` `*nnzzzzzzzzzzz
################################################          #####################################################;#zzzzzzzzzzzzzznz+i:,i+zxnzzzzzzzzzzzz
###############################################################################################################;#zzzzzzzzzzzzzzzznnnnnnnzzzzzzzzzzzzzz
###############################################################################################################;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
###############################################################################################################;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
###############################################################################################################;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
###############################################################################################################;#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz