######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
##############@#######################################################################################################################################
##############;*******************i************************i*************************************************************i*************;##############
##############*,,,:,:;;,,,.,.::,.`....................`````...````````````...`````````````````````.....```````.`...````````......`..`..i##############
##############*::;;#nzzz*:,,::i,,......,..,,...........``.........`.``..`..,.`.``````````````````.....```````...``````````.............*##############
##############*;;:#z#+;*#i;;;;;;::,,...,..,,..,......,......,,,.............````````.````..```...............````````````..............i##############
##############*;:in*;*:;+*;;;ii;::,.,,..,.,:,.:,,....,,,,,,,,:::,,.....,,,,.``.`.``........``..........,...,...`.```````..............,*##############
##############*;iinz+#z##n#i;;;;;:i:,,...,.:,.:::,,,,.,:::,:,:,::,.,,,::,:,.....`...,..,:,.,........,,,:,..,,......``````..........,,,:*##############
##############**ii#zz;,;:z;ii;;:ii*;,,.....:,,::;:;:i++i:;:::::::,,,,,:;:,:.,,...,::i;,,;::i:,......,,,::,,,,::,,.``````............,,:*##############
##############*i*+nn+:,,,i::;;ii*ii;,.,,..,,:,;;iiizzz#z+;::,,,:::;;:;;::;:::..,,;i***ii*i*+*::....,,:,,:,,::;;::,...````........,,,,,:*##############
##############*ii+x#*:,,,;;::i;i*iii:,.,..,::,;iii*nz+::#::,,.,::;i*ii*;;;izz#*;;;*+**i++++++ii::..,::::;:,:;+iii;.`.```.........,,,,::*##############
##############+**+#i#,.:;;;;i****;i::...,,::;,;iii#znzi:+i..,,:;;;i**iiiiizz+:*ii*++**+####+++#+*:.,:,,:;:,+++*##+i:````.........,,..:,*##############
##############+*+i*+z:,:i;;;i*#*;i:::,...,:;;:;ii;+nnz+i##:.,;;;;*i*****i+n#i.i**++++++######++##+*::,::::;#####+++;..............,,.::*##############
##############+++i;,;n+i+;;i;i*;i::,,...,:;i*iii;:znnnn#*:;:;:iii*i*+*i*i*nnz++i*+*#++zzz#####+###*;::;;ii#######+**:.............,,,:,*##############
##############++*+ii,:*n++ii*;*:i,,;:,,,:::**;+ii:ixn,.:,;ii*:iiii:i+ii*;zMi+**M++*+i###zzz#####z#*:;;::i*####zz#***:............,,.,:,*##############
##############++*z*;zi#*z++i+;i:;,:;::,,:;;i#*ziiixMni:;:++*;iii;;::+##+#iz;i,,****++#+#zzzz##z#z#*;::;;i*###zz##+#*;............:,..;,*##############
##############+++***i***###+i;i;,,,;::,:iii;*xnz*++#+z;:i+#+*+++;:;#+#++#+x;*::;*i;*#++zzzzz#z####*i;;;;iz##z##z##+*i:.,.........:,..:,*##############
##############*++*+*ii;ii*+#+*zz+,:;:;::i++*##+**+**;:z+**+*###**ii;++i++nn+,.*i*i;*++zzzz#z######*;i;::*zzzzz#zz#+i,,;:,.....,,.;,.,i,*##############
##############+*zii*i*iiiz###++n#++++#+*####+**i*****+*n*i;+#zz##:::n++++z+##,****ii##zzzzz###z#z#i;ii;i#z#zz##z#z++*i:i,,.,,,,,i#*::;:*##############
##############+*n+iiii;**+####+++#zz##+*+#+z+**iiiii*;;#i;ii*++*i,;#z*ii+*+*++**iiii*nnznznzzz####*:i:*i#zzzzzzz##+i:,,;:,.*,,,*###*:;,*##############
##############+*zz**i*i*i+zz#z#*+znzz#i;;++#*iiiiiiiii*iiiii**iznz#zz#*++**+;**iiiii*znnnznnnz####;,;i;+zzznzzzzz#**:,:;;,.:::i+##+zi;:*##############
##############+*#niii*;*+zMnz+#+**zz++i;;,;#****+**iii*iii*i*+zzzn#+#*i#*+*+ii**i;iii#nnnxnzz#n#zz*:*x#+nnzznnnnz#+i:,,;i;:;,,**+###;ii*##############
##############+*+x*i*****znnn+*+*izzi,..;;#++*izz+:ii*;;*ii***++#*:;+*+#i***;+*ii+**i+xnnnxnzzzzz#++*#*+z#zxxnxnz#i*i;i#*i;i:i+:#zz#;*i*##############
##############+*+xz******i*i:`i+:;**:.``:i+++**##+++zi;i++++;+;,:;**+*#x*z+#i+++i##*i+nzz#zz+nnnz###++i+#zznnxzn##++###znzz#zzz*zznn*#+*##############
##############***#x+z:i`.``,.,+#::iiii:::i+****z#+*;iiii*+#z:*,..,+#**+x##+#++**i#n#*+##zz#*+zzn#z###++#zzzzzz#zzzz##zzzzznzzznzzznxnzn+##############
##############+***x#x#,.`,;...,,.i;i+###+#++**#z#+x*i*ii*xnnn#i,..;+**#Mz++#;+****xn#i#zzz#+####**#;*+#z#z#zz##znxMxxnzznnz#zzzz+#+n#n++##############
##############+***znz*.:;i*i+*;`:i:i*+++#++**+nzzM#ii***+xnzzzi...*+**+xxz##:+#+*+zxz**####*++#++#++i*##+*z#z+znxxxxMxMMMMMxxMMxxxxxnxx+##############
##############*i*i+#`z+i;#xxMMz.:*;zn+++z+++**xnn*iiii**+xMxzz#:.,+***ixzz#zn++###zMn+i*+**+++*++#+#++*++***#*#nxxxMMxMMMxMMMMxxMMxMxxx+##############
##############+i*i;+:zi;:zxnMMxMMzzn#++*n++*+xxnMxn#*+i*nMMMxnni:i+***;zxxn+zn;;MxxzMz*i+***+*++#+++++##++*i;ii++#+zznnnnxxxxxxxMMMMxxx###############
##############*iii+++n*;zMxnMMMMz##;*+++n++*zz+znxMM;`.zxxMMMMz+#z+***+zxMx``xMMMMM+xn+i*++*++*+++**++++++*+*++++++++###+##########zzzz+##############
##############+ii**#+z,*+xMxMxzzzzi++***n#+*+z+****#+:,xMMzi+###zz+*i+n#+*#+*xnnMMxzzx#**####+#######+++++++++****++**++###z#znzzzzzzzz+##############
##############+i**+n#++++nxMMxz+z+*+#+#+n+**zn*;*iii*#+*Mx+**+++#z++*zzn#+#+#*z+***zzxz*inzzznnzzzzzzz#####zzzzznnznnnnnz#zznnnnnnnnnnn+##############
##############+ii***+z**+nMMMxz###+##+##M#***n++*+ii*+#**i++++++*zMMnnznz+#n#i*+++*+#zxxn##zzzzzzznznzznzzzz#z#######+#++#+#+###+++zzxn+##############
##############+***iii+i**#MMMxzzi++#+#+#nzzzzn********z*i*++####+zMMMx##z+zM+**++**+#+xMMnzzzznzzzzznnnnnnnnznzzzz#zzzzzzzzzzz#znznnnnn+##############
##############+***iii#*i*#MMMxn#*z#+#+##zMMxxz****i***#zi######z#zM##n###+#x#z+*ii**##xMMMzzzzzzzzzznnnnnnxznnnnznzzz#z##znxxnxxnnxnnnz+##############
##############*;**iiix+**+MMxx#+i+++#z###xxxxz+********x++#zzzz##nn##z#z++zx**++i*i*##zxz####z#z#zzzznznnxnxxxxnxxxnxxxnnnnnznnnnxxnnnn+##############
##############**+zii*n#***MMx**i:;:,,:;;ixxxnz+***ii***Mn+########xzznz#*+nM+**+****#+*nn**#z#zzz####zzzzznxnnxnnzznxxxxxxnnnznnnnxxnxx+##############
##############*,:+x+*zx***Mxii*;:,,,,:,,,zn#**#+***ii**xxz#+###z#+nx+nxn##MMxz#**+++zzzzn#*###z#z#####zzzznnnnnxnnnxnnnxxxxxxxxxnnnnnnn+##############
##############*:ii*##zM#+zM*;i*i::,,::,:::#####zz+*iii+zMx##++#####nznzz##znxxz#++++#+##zz###++zzzzzzzz#zzzzzzzznnnnnnz#zxxxxxxxxxxxxnx+##############
##############+#:ii+#+n#*zxii*ii;:,,:,,:;;*xnz+#*++znzz**iiii***+++*+xnz###zxnnz+*+#zn##z#zz#######+###+##z#+*+z####+*zn#*zzznxxnxxxxxx+##############
##############*+;ii++*i**#ni;*ii;::,:::;;;;ix#zz+***z#zii*+**ii****izxz#+#zzxzxn++#*##++##z#zzzznnz###z#znzz+++n######nnz#iznnnnxxnxxxn+##############
##############**iiin+******;i+**i;:,::::;i;*z*+z**+*#z**i*********i*nxzz++z#nxxz++#*##zz###+**++++####nzx#*++++##zzxnnn#**i#znzz#zzzzzz+##############
##############**;i+n+*++**ii*+**i:::::::;ii*#i+##*i*z++*i;iii*ii**i+nxz#++##nMx#+##+##+++*+++****iii***zx#+++++*+MxxMn#+;.*+zznnz#zznz#+##############
##############**;izn++++***i****i;:::::;;i*+#**+++**+++*;;;ii******#zxz#++##xMn#+#++#+++***+#+**iiiii*zMxnz#+++##MxnnM+,;*z#++###zz#zzz+##############
##############*i;izz++++***ii*****i;,,:;:;i*#*i*+**i+++i;;;;;******#zxn#+++#xxz###++++#+*+****iiiiii*nMMxnzz++##iix+nnxi*zn;,:;i**ii***+##############
##############*;;inz+*+****i*+***i;;:,,:;;i*ixz#+**i++*;;:::;ii*****znn#+*#*#xz##+++##zzz##++*i;*+#xMMMMMM+zx##*iiz*x*#x+z:,,,,::;:ii;;*##############
##############*iiixz+++****i****+**i;i*iiiii*+nn++#+*+i;;:::;ii*++***###+##i*xz######zzzzzzz#++zMMMnMMMxxMMnMn**#;z+#zznx:,,,,,:::;;;;;*##############
##############+iiizxzz#**i*i**iiiii;;ii****iiiinn#+*+**iii;;;iii*+++*+z##+*i#xz#z#+**ii*i***+#nxxx#xMMMxzxn**x#*znn#i,:,:,,,,,,::::;;::*##############
##############+ii**xn##++*ii**;;;i;;;;;;i**ii*;z##+i+;iii;;;iiiii****n###+;;;zxMxii;;i**iii*##znxxxxxMxzxMx#i:xn##*+#,,,,,,,,,,:::;i;::*##############
##############***ii+nz+**iiiii;::;;;;;ii**iii*innz#+iiiiiiii***iiiiii+xn#i::,nxxxi;;::;::;nn#+znxxxxxnn;+nMxxzin*+;i#*,,,,,,,,,:::;;;::*##############
##############+*ii*ixxxnz;;i;;;:::;;;;ii*+*ii*inz++*i;i;;i;iiiii;;;;;*n+z+::,zMMx:::::;;:i#z#++nxxxxn+..;znxnz**z**;i:,,,,,,,:**;;;i;::*##############
###############*i*iixxxM#;i*i;::::;;;iii***iii+MMnMi;;;;;;;;;;;;;;;;;*n,Mz::,xxxn:,,,,,;+#+++#znxxxn***.:ninnn##*##i;,,:::::::;ii;i;:::*##############
##############+***;*MxxM+:;iii;:::;;;;iiiiii;ixMMnMi;;;:;;;;;;;;;:::;iMMMx:::MxMx;::::;z#++++zzxxxn+*+#+x++zxxxx:+**;;;,,:;ii;::::;:,,:*##############
##############*i*i;#MxxM+i;ii;;:;;;;;;iiiiiii*MMMxMi:::::;:;;;;;;::;:;MMxn::;MMMn:::+###++++*#Mxxn#***#M+i#nzxnxz#i;:::::::,,::,:::::::*##############
##############*i;;;zxxnMi;;;;;;::::;;;;iii;i;zMMMxMi:;:;;;;;;::::::::;MMM#:::xMM#::i+##++*++#nxxxn+i*++nn+nMMnxzn+i,,,,,::,,,,,::::::::*##############
##############*;;;;zMxzMi;;;;;;;;;;;;;;;i;;;;nMMMnMi;;;;;;;;;;;;;;;;::nMM#;;;xMM+;i;##++++++nxMMxx#+***nxxnnnMxzn**::,,:,:,,,,:::::::::*##############
##############*;;iizMxzx;iii;;;;;;;;;;;iii;;;MMMMnMi;;ii;;;;;;;;;;;;;:zMM+:;;xMMi:;zz#+++**+nxxxMxz##+zMMM##ixnz##i::::::::::,,,:::::::*##############
##############*;;i;nMM#niii;;;;;;;;;;;;;;;i;*MxMMnMi;;;;;;;;;;;;;;;;;;iMx+,,:xxx:,+#++++++++#zzzzxn##z#nMMn#+nnz*#,:::::::::::::;:;::::*##############
##############*;;i;zMx#z;ii;;::;:::;;;;;;;;;*MMMMxxi:;;;;;;;iii;i;ii;;;xM+;;iMM#:#n#+++++++++++++zxzznz#+nMnz#n#*+:;:::::;;::::::::::::*##############
##############*;;;i#xxn#;iii;i;;;;;;;;ii;;;;*xxMx*xi:,::;;ii;i;;ii;;i;;xx#;;iMM#xnn++##+++++++#znnznnnzz###nxznz*;::::;::;;;:;;;;;;;;;:*##############
##############*;;i;*xz#iiiii;;;;;;;;;;iiiii;zMMMMxni;;;;ii;i;;i;iii;;:zxxn:;ixz*z#z########+;zMxxnnnnnnnzzz+#n#+*;;;;;;::;;;;;::;;;;;;:*##############
##############*:;iinxxn*iiiiiii;iiiii;iiiiiixMMMx#*i;;;;;;;iiiiiiiii*nxxMn:*xx+##++++##z#+i;;;nMMxxnnnnnnnzz##++*;:;:;;;;;;;;;;;;;;;;;;*##############
##############*:;iixMxxx+iiiiiiiiiiiiiiiiii*MMMMMz#;:::;;;iiiiiiiiiixMMMMz#MMx#*+++#++*;:::::;:+MMMMMxxnnnnz#++*i:;;:::::;;;;;;i;;;;;;;*##############
##############*;;i*xxxxxxn#iiiiiiiiiiiiiii**nMxxnz#n+;::;;;;;:;;;;iixMMMxxMxnxx*+#i;:;;;:;;;;;;::#MMMMMMxnnz####i;;:;:;:;;;;;;i;;ii;;;;*##############
##############*;ii*xxMxxx##iiiiiiiiii*iiii*+xMxxxn#zn;;:;iiiiiiiiiiinMMMxxxnxMM#*;:;;;;;;;iii;;;::;zMMMxxMxnzz#+i;;;;;;;;;;;;i;iiii;i;;*##############
##############+z#i*xMMMMMMx*iiiiiiiiiiiiiii+xMMMxxzn#;;i;iiiiiiiiii;;:zxxnznMMM+:;;;iii;;;;;ii;;;:;:;MMMxMxxnz#+*;;;;;;;;;;;;;;i;;i;i;;*##############
##############+*#**xMxMxxxzi*iiiiiiiiiiiii**xMMMMMM+;;iiiiiiii;;;;ii;+Mxz#zMMMn;::;;;;;;;iii;;iii;;:+n;nMMMxxzz#+;;;;;;:;;;;;;;;iiii;;;*##############
##############+xziinxxx#iii*iiiiiiiiiiiiiiiixMMMMMxi;;iiiiiii;i;i;iizMxz;zMMxxxi::;;i;iii;;;;;;i;;;ixi:,;zMxxnxMx*;;;;;i;;i;iiiiiiiii;;*##############
##############+xn**nxxM*ii***iii*iiiiiiiiiiizMMMMxxi;;iiiiiiiiixxz*nMMx+MMMi+MM*;;;;iiii;iiii;;;;;;z+:;;;:+MxxMMx#i;i;;;;;;;iiiiiiiii;;*##############
##############*#*i*xMxx+ii****iiii**iiiiiiiinMMMMxxiiiii*****iixxzznxzzxMn::zMMz;;;;;;iiiiiiiii;;;*Mi;;;;;;#MMxMxn*;ii;;;;;iiiiiii;;;ii*##############
##############*;ii+Mxxx+i*******************zMMMMxxii**********nMxnz#znxx:;;zMxz;;iiii;ii*+*iiii;;n#;iiiiii;nMMxMMzz+;:,:;;;;iiiii*iiii*##############
##############*;i*+MMxM#**i*****************#MxMnxniii********inMxxnxxMMn;:;zxxniiiiiiiiiiii**iii*n:;iiiiii;*MMMMMx#xn+;:iiiiiiiiiiiiii*##############
##############*;ii#xxxx#********************+MMM+zzi***********znMMMzMMMxi;ixxn+;;iii*iiii***i*i*+i;:;;;;;ii#MMMMMMx##*;;ii;izn;*i**iii*##############
##############*;i*#MxxMz****++****+*+*******+MMM+zzi************xz*i+MMxn;;ixMMxiiii***i**;****i*+z;i;iii;iinMMMMMxxx*ii*i*nnznz******i+##############
##############*i**zMMxnn++++++++++**+********MMM*xz*********+**xMMMz#MxMz;iizMMn***ii****ii;****i;nziiiiii**xMMMMxxMnM#+znMx*znn*+*+***+##############
##############*i**#Mxxxn+##+++*+++*+++++++*i*nMM+x#***********+MMMMMMMMMzi**xxzn*****++*++iiiii*+*+xz++****+MMMMMMxnxnxMxxxn##nn*+*****+##############
##############*#+##xMxMxzz++*++++++++++++**i;#Mx#M#******+++++#MMMMMxMMMz**#xMMn*i***+++*i**++****+nx#++++#zMMxMnMMnxxMxnnnxzzx+*+++++++##############
##############*zzznMMxMxxn++++++++++++++++++**xM*Mz+*++++++++++xMMMMMMMMx++nMMMn++#+++*+++i++++*+***xn+++++zMMxx*xMxxMMz**zxnx#++++#++++##############
##############*nnxxMMMMxxz#++*++**+++++###+++#xM#Mn#++++++++++#xMMxMxMMMMx#zx#z#i**i***++*+#+++++***#x##+#+nMxxx#*xxxM+;*+zxx+++++####++##############
##############*nxxMMMMxxxz+++**+++**+++++++++#xxxMnz++++++++++#MMMMMMMxMMMMxMMxx++++##++i#+++++++++#+xx++++nMMMM#+#MM+*#+##+*++++++###++##############
##############*nxxMMMMxMMx##++**+++++++++++++#xMxMxMn++++++++#nMMMxMMMnxMxxxxxxxxz#++#++####+#+###+#znxn#+*zxMxM++*zM;n+;++++++#######++##############
##############*xxxMMMMMMMx##+***+++++++++++++nxxxxMMn+++++++++zMMMnMMMxMnzzxxxxnxx#+#######+##zn+#Mx#xMMn#nxMMMxnnxMM+::+##++#########++##############
##############*xxxMMMMMMMMz#+**++++++++++#++nxxxxxxMx#++++++++#MMxxMMMMMzzxMMMzMMMx++########zxnxnMMMznMxznxMMMMMMMxMz#+#############*#+##############
##############i###########++++++++++++++++++#########+++++++++++#+######++#########+++++++++######+###+##############+##+#+++++++++++++i##############
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################W+*M#M*+W######Wn######x*#W######*z#*z+n########################################################
#######################################################+;###i+#######*:#######,n#######z#n,##z########################################################
########################################################;###i+######@*`M######,n#######@#n,##@########################################################
########################################################;###i+######zMi*######,n#########n,###########################################################
########################################################,zzz,+######*#M`@#####,n#########n,###########################################################
########################################################;###i+#####x*zz.z#####,n#########n,###########################################################
########################################################;###i+#####*###z,#####,n###x#####n,###########################################################
#######################################################+;###;+####M+###@ x####.z##x######n.###########################################################
######################################################WzzM#MzzW###nz@##xzz@##xzzzzzW####@nzx##########################################################
######################################################################################################################################################
######################################################################################################################################################
################################################################W#W###############WW##################################################################
################################################################n#+z#####+#zz#z*zzn+##################################################################
################################################################n@z*izzzzzzi*z#ni*nz@#################################################################
################################################################@#@WW@@@@@@@W@MM@W@W@#################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################