#########################+######++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++####
#########################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##
####################++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
################++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
############+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#########++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**+*****************+*++++++++++++++++++++++++++*********+++++++++++++++++++++
#######++++++++++++++++++++++++++++++++++++++++++++++*++++++++*+++*+**+*+****************************************************************+++++++++++++
###+++++++++++++++++++++++++++++++++++++++++++++++**++***+++++++++*+++++++*++++***************************************************************++++++++
+++++++++++++++++++++++++++++++++++++**+++++*************+++++++++++#+###+*+##++++++**************************************************************++++
++++++++++++++++++++++++++++++++++***********************++#++################+#++++******************************************************************
++++++++++++++++++++++++++++*************************+++++####zz###################++*++**************************************************************
++++++++++++++++++++++++*****************************++####zz#z###z###zz#########z######+++***********************************************************
++++++++++++++++++++*******************************+++#z#zzzzz###zz##zzz####z###zzzzzzzzz#++**********************************************************
+++++++++++++++++*********************************+####zzzzzzzz###z#z#zz###+#+###zzz#zzzzz##+*********************************i***********************
+++++++++++++*************************************+#zzzzzzzz#zz#######+###+##++##++###z#zzzzz++************ii***iiii*iiiiiiiiiiiii*ii*i***************
+++++++++++***************************************+##zzzzzzzzz###++###+++#++##+#++#####+#zzzn#++**iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii************
++++++*+******************************************+##zzzzzz##+**++*++++++#+++#####++++#+##zznzz#++*iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii******
+++++****************************************ii**+###zzzz++******+#+#+###+#*+++++****++++###zznzz#*iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii**
***************************************i*ii*iii*+###zzz#+******+++++#+###++*****+******+#+######z#+*iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
**********************************ii***iiiiiii**+++#z#+*i**+++#+##+######++*ii*i**iiiii**+##########*iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
***********++************************ii*iii****+++##*iii***+++##########+**iiiiiiiiiiii**+#########+**iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
++###zz#########++++******++++#######***+*****+###+*iii**+++###########++*iii*iiii;;;;;i*++#####+####*iiiiii;i;;;;;;;;;;;;;;;;iiiiiiiiiiiiiiiiiiiiiiii
#z#zzzz##zzzzzzzz##++++++++++#z####+##zzzz#**+#zz#*iiiii+++###zz#z##zz#++*i*iii;;;;;;;iiii+z####z##zz#+*ii;ii;;;;;;;;;;;;;;;;;;;;;;;;;;;iiiiiiiiiiiiii
zzznnzzn#z#znnz###++++#zz#zz##z#z####+##zzz##+zzz*i**i*i*++##zzzzzzzzzz#**i*ii;;;;;;iii****+#zzzzzzzzz#**iii;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;i;iiiiiiiii
zzzz####z##zz####+####zzz#z####zz#znnznnzzz####n#*****+***###znzzzzzzz#+*iiii;;;;;;ii****+*+++#####zzzzz#*ii;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iii
nzznzzzzzzzznz##+####+######++#zz###nnzzzzz++#zn#+++*++++*+#zzznzzzz###+*iiii;;;;;;ii**+++++##+++##zz##zz+ii;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
znznzzzzzzz##zz+#+##++##+#####zz########zzz++znxnnz+#zzz##++zzzzzzzz#+++*iii;;;i;;i***++++++##+###+####zz#*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
nnzzzzzzzz####z#++#++++#####+++####++++++##+#nxxnnxnz#nnnnz##zzzz######+*i;;;;;;;ii*****+******++++++###zz#*iii;i;;i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
zzzzz#######zzzz#z########+#+++++++++++++##**#xnznnnnnnxxnnzz##zzzz###+**i;;;;;;ii***********+++#+++++##z##++*i**i*i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
nzzzzznznzzzxnzzzz###zzzzz+##+++++#++++##+#+#zn++zxxxxMxMMxnnzz#zzz##+**i;;;;;;iii*******i**+++++###++###+#z##z++**;;ii;;;;::::::;;;;;;;;;;;;;;;;;;;;;
xnnnxxxnzz##nnz#####z#zzzz##++++++++++++#z+*#z+;*#xMMxMMMMMnznz##zz##+*i;i;;;;iiiii*****i*++*++++##++#####zznnz#+****i;;;;;:::::::::;:;;;;;;;;;;;;;;;;
xnznxxxxnzz#zz###z#zn##++#+++++++++++#++++*i*+;+znMMMMMMMMMMxnzzzzz#+*ii;i;;;;;iiii*********+z############zxMxnz#+*;;:::::::;;:::::::::::::;;;;;;;;;;;
zzzznxxxxz##zzznnzzzz#++++++++++++++*++++++*++*+nxMMMWMMMWMMxnzzz###+*i;;;;;;;ii;;i**ii*+***+zz#zzzz#zzzznxMMMnz*i;;;;;;:::::::::::::::::::::;;:;;;;;;
z#zznnzzzz#znzzz######+++++++#####zz###++*+*++#xMWWWWMMMWMMxxnnnz##*ii;;;;:;;;;iiii****+**+##zzzzzzzzzzzznMWWWn+ii;;:::::::::::::::::::::::::;;;;;;;;;
###zzzzzzzzznn##zz+#++####+#znnnzzzzznnzz+**#zxW@WMW@WxMMMxnznzz##+i;i;;;::;;;;iii*+**+++###zznnznnzzznzzznW@Wn*i;;;::::::::::;i*iiii;;;;;;iiiiiii;;;;
####zzzzzzzzzzzz##++++++#+++############++i;+MWM@WWW@@xxMxnz#zz##+*iii;;;::::;;iii****+##z##znxxnzzzzzz##nnx@WM#+**+i:::::::;i****iiiiii**iiiiiiiiiiii
##################++++++#++*++++++#######*i;#xzn@@@@@@MnMnnz##+++*i*ii;;::::;;;;iii*+#zznz##znxnnznnnnzz#znnW@x++*iii;;;;;;i*iiiiiiiiiiiiiiiiiiiiiiiii
#############++++##++++##+****++++++++++++*ii*+#W@@@@@@nxzzz#+*****ii;;;:::;;;iiii*++####z#znnzzznnnnzzz#zxxxWW#*iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
++++++##+#+++++++++++#+*******+*+*******++*;i*++xWW@@@Wxnz#++**ii*iii;;:;;:;;;;iii*+++####zznn#zzznnnn#zzzxxxMWxiiiiiii;;iiiiiiiiiiiiiii;;;;i;;iiiiiii
##+*#+*++##++++****##*++****+*****+**++**iiiii*+nWW@@WMxz+**+*iiiiii;;:;;;:;;ii;i****++####zzzzzzznznn#zzzzznxxx#iiiiiii;;;;iiiiiiiiiiiiiiiiiiiiiiiiii
#n#+nM##nn+#+#;;:i*+*+#zz*#++++##*+*+zn#;;;;iii+zMWWWMMn#++**iiiiii;;;;;i;;:;;;i##+*ii+###zzzznnnzxnzx#zz###nnxn*ii;;;;;;;;;;;;;;;;;iiiiiiiiiiiiiiiiii
zz#n#z##nnzznn*i*#####xM+++++++zn+**zMxz;i;iiii*#xMMMMnzz+*****iii;;;;;;;:;;;;i;*##z+ii*+##zzznnnznnnxnznzz#zznn+*i*iii;i;;::::;;ii;;;;;;;i;;;;;;iiiii
nxnnz###+##nMM#++#####xM#++++++zx+**zn**:;:;#+**+zxxxnz##+i*ii*ii;;;ii;::::;;;i::;i*++***+##znxxnnnxxxnzznz##zznn+*+++*ii;ii;;;;i++*ii:;;:;iiii*ii;;;i
zMWWnz##+##nMMz++##z##nx#+++#+*xMn#+z#;i:;:;**+###zzzzzz##iii*iiii;iii;;:::;ii*i::;;ii*+++##znnxxnnxxxxzz####zznx+***ii*i;ii;;;ii++*+*iiiiiii****;;;;;
#znxxnz####nMWxnnnnn++nn#zzn#n#MMz##+**++++****+##zzznzz#++iiiiii;ii;i;:::;;ii**i;;;iii*+###zznxxxxnxxxz####zzznxz+*i**iiiiii;;;ii***iiiiiii**iiiii;;*
+#nxWWz#+##nMzzzz##++++#nMnMnzn#zzzzzzzzz##+###+#zznznnz+#+*iiiiiii;i;::::;;i**++*iiiiiii*#zzznxxxxnxMxnzzzzzzznxn#++++*i***+**i***++iiiiiiii*i******i
#n#zWWWz+##zM#######znnnMWWMxxx#zMxMMxzzzzz##z##zznxnnnz++i*iiiiiii;;;;::;;ii**+#+**iiiii**+znnxxxxnnxxxnnzzzznnxxz#**iii+#+#+****+*##***++++++*****+*
###MW@Wn##zzx#+###znnxxxMMxnMnn+nxz#z##zxx##+#+#zzznnnz##++**ii*ii;;;;;:;;;ii*i*zz#++****i***#znxxxnznnxnzzz##nxxMxz+****#+*#*****+*#+#zzzzznz#zz#+#zz
##zMW@@Mz##zz#+#nxxMxnnnxxz+#+##xWxn###znnzznznzzz##zzzz##i****iiii;;;;;;i*ii+**+znz###++++***+znnnnnnnxx##zzzxxMMxn#+###z+ii*#z#zzznzzz##nz##++++++##
###MWWWWxzznn++zxxMMMMnnxMW###nnnxxxxxzznnnnxxxnnz++###z++*++*iiiiiiii;;i*iii+++++zxxnz####++++##znnnnnxxn####nxMMxnnzzzzz##+#znnnzznnzznnnnznz++*++##
##zxMMMMMnznn++zxxMWWMnxMMWnnnnnnxxxMMzzzznxxxxxnz++++##+++++*iiiiiiii;;iii*i*++++znxMMxnz####++#+znxxnnxnzzzzzxMxxxxnnzzznxnnxxxxnnnnnnn#zznnnnz#nnnx
#znxxxxxxxxxxz+#zxMWxnnxMWMxxnxnznxMMxnxxnnxMMxxnz***+++##*+**iii;iii;;;iiiii**+**+###nzxxnzz######nnxxxnzzzzznMMxxxnnnznxnnxxxxxMnxxMxxnnnzznxnnznxxM
xnxxxMMMxnnnxnzznxxMxz#nMMMWMxxnznxnxnnnxnnnxMMxxz**i*+#+++**iiii;;i;;;i*iiii+*++ii***#+#zznnz####znxxnxnnzzzzxMMxxnnnnnnxxxxxxxxMxnnxxnznnnnnxxnnxxnn
xxnnxxxnnnnnnxnnxxnnzznnnxxWxxxxnnnzznnnxxxxMMMxnz+*ii*++***iiiii;;;;i;i**iii**+******i*ii**+##zz###nxnnxzzznMMMMxxnnnxnznnxxxxxxnxxxxzznnnnnxMxxnnnxn
WxxxxxxxxxxnxxxxxxxxxxnnxxxxxxxxnnnnznnMxxxxnxxnn#+*ii*+***iiii;;;;;;iii**iii**+***i*i*iii******##zz#z##nz##zxMWxnxznxMxznxxxxxnxxMnxnznnnnznnxxMxnxxn
WWWMMMMMWxnxMxxxxxxMxxxxxxxMxMMMnnxxnnnxnnnzzzxxnz+*ii*****iii;;i;;;;iii**ii*++******iiiii;i****++#zzz###z+*#MMMxnzznxMxnnnnxxMMMMMnnnznzznnnnnnxnnxxx
W@@W@WWWWxxxMxMMWWxxxMMxnMxxxMMWMnnxzzzzznnnzznxxz+**ii**+**iiiii;i;;;i;*i;i*****iiii;;;;;ii*i**+*##zz####+*zx*#nn#znMxxxnnnnnxWMnnnnnnzznxnxnxnnnnnxx
@@@W@@@@WMMxxxWW@WMWWWWxnMMMxMMWxxxxnnnznnnnnznxnz++iii******iiiii;;;;;iiiiii****ii;;;;i;iiiiii+####zz##z++in+i*#n#nnxxxxxnnnznnnznxnnnnnxxxxxxnnnnxnz
@@MW@@@@@MWMMxW@WWxMW@@MxMWMWWMWWxxMxnnnnnxxMMxxnz#+ii*i**+**i;iiii;;::;i;ii**i**i;;;;;;;;;;iii+####zz#++++izi;+#nnnnxMxxxnnnnnz##znxxnnnxxMMMxnxxxnnz
WWW@@@@@@MMWWMWWMxMWWMMMM@@W@WMMMnxMnznnxxMMWMWMnz+*iii*****i;;;iii;;;:;i;ii*****i;;:;;;;i;;;i*+#z#zzzz+##+*#*i+zzznnMMxMxxxnxxnz#znxMnnxxxxnnznMWMxxn
WM@@@@@@@MxMWWMMMWWWxxxMW@@W@WxxznnnzzxxxxWWWWWMx#+*;;iiii*iii;iiii;;;;i;;iii*iiiii;;;;;;;;;ii*++zzzzzz+#++++i;i**+zxxMMMnMxxMxxxzzxxxxMnnnMnnnMMWMnnz
MWWW@@@@@MxxMWMnMWWMxxxxxMWWMWxnzzzzzznxMW@@@WWMMn+*:;;;;i*ii;iiii;;;;;;;;ii*iiiiiii;;;;;i;:i**++#zzzzz##+##**;ii*+#nnMxMxMMMxnxnznxxxMxnnMnnxxWW@Wzz+
MMxzMWW@WMxMMMxxxxxMxMMMxxnxxnzznzzzzznxxM@@@WMMMn+i:;;;;i*iii;;;i;;;;;;;;;;iii;;ii;;;:;;:i;;**++#zz##zn##+#**i;;**+#nxxMxMMWMMxxxMWWMMn++nzzxWM@@Mzz#
@WnzxWWMnnxMnnxxMMMxxMMMMxMMMxnznzzznxxxxMMMMMxxnz+;:;:;;iiiiiiiii;i;;;;:::;iiii;;;i;;;;::;i;***##zzz#zzz#++**;:;i++#nxxxMMMWWx#znnnzzxz#####znMMMnzzz
@MnnxWW@WxxxnnxMMMMMxxxMMMMWWxnnnnnnnnxxxxxnnxxxn#*;:::::;;;iiiiii;;;;i;:::;ii**ii;i;i;;::;;*+**+#####znz#z#*ii****+#zxxxxxMxxxxxxxxxxnxxxxxxxxxxxn###
WMMxxMMMMxMxxxxxMMMMxxxMxxxMMnnnnnnnnznxxnnnnnnnz#*;:::::;;iiiii;;;iii*i;:::;iiiiii;i*i;;iiii#+++#+##zzzz+zz#***iii+#zxxxxMMnnnnnxxxnnnnnnnnnnxnxxxnzz
MxnxMMMMWMMxnznxxWMnxxxWMMMMWWxxxnnxnznnnnnnnnnzz#*;:::::;;;;;ii;;;;;;;;;;:::iiii*ii*;iiii;ii****+#zznzzz##z#+i**+*+#zxxxMMMxz#+###########znnnznxxnzz
MMxxxxxxxxxnnnznxxMMnMnWMMMMMWxnnnnnnnznnnnnnnzzz++;:::::::;;;;;;;;:;;;;;;::;ii*iiiii*iii*i******+##zzzzz+#zz+i*i*i+#znxxMMMxzzz##+++###zzzzznnznxxnnn
MMMMxnxxxxxzznnznxnxnznW@nMWWWxnnnnnznnzzzz###zz##+i::::::::::;;;;;:;iii;::::;iiiiii*ii**iii*i***+#+#zzzzz#zz#***i*##zxnnMMMxnzzzzz###zznnzzzzzzz###zz
MxxxnxxxxxnzznnnnMxxMxMW@WnW@@xnzzzznxxxnnnxxxxxn#+*;;;:::::::::::::;;i*;:::,:;iii**ii*ii;iii;****###zzznnzzn#++**+*#nnxnMMMxzzzzzzzz+++##z#zz##zzz###
xxxxnnnnxxnzznnxxnWMMMMxMMxxMMxxnnnnnnxxxxxxxxxxn##+;;;::;::::::::::;;*+i::::;;iii**iiiiiiiiiii*++zz#zzzznznx#*+#+**#nnnnxMMxzzzzzzzzz#++##zz##znnnzzz
xxxnnnnnnzzznnxxMxxMMMxxMMMMMMnnnnxnnxnxxMMxxxxxnz##;;;::;:::::::;::;i*+*;:,:;;i*****ii;;ii*i*+i*++#z#znzn##xz+z#**+znxxxMMMxnzzznzzzzzz+*+n#++z#zznzn
xxxxxxxxxnxxxnnzxWMM@WxMMMxxMMnznnxxnxnnxMMMxxxxnz##;;;;;;:::::;;::::;i++i:;::;i;i***iii;iiiiii***+###zzzz#zxn#+++###zxxxMMMnznxzznnnnnzz++znz+n+#znnn
xxxxxMxxxxxxxxxnxMMMWMxMMxMnMnxnzxMxxxnnMMMMMMMxxz##;:;;;;;:;;;;;::;;ii*#+;;:;;iii***iiiiii*+***++##zzzzzz##xnzz##*+#znMMMMMn#nxz###+++++++#zxnxzz#zzn
xMMMxxnnnMxxxxxxxxMxMxMMMxxMxnznxxMMMMnMWW@@@@WMxnnni:;;;;;;;;;;::::;ii*##*;;;;;iii**i***ii+***++++zzznn#+#znnz++#+++znnxMWMxznz+#+**####nn+zxnMnnnnxn
xMWMnznxxxxxxxxxxMMMMWxMxMWWWMxxxxWMMWMW@@@@@WMMxnxni:;;;;;;;i;;::::;ii+##*+iiiiiii**ii*ii*****+++####zz#++znn#z###+#zxxMxMMxxMMMxxz##nnnxn#znznzznnxx
WMxMnxxxxxxxxxxxxMMM@WWW@@@@MxxMMMMxnMxnMWWMMxMMxnxzi::;ii;;;i;;;;::;ii*#++++***i;iiii*ii**i+*++++#z###z####xnz#++##znnMMMMMnnnxnzzzzzz#z#zzzzzzxnxxMW
MWMMxxxxxxxxxxxxxMWW@@@@W@@@xxMMWWMMnxMxMMMxMMMMMxnn*:;;;iii;i;;;;;;;;i*##*+##++i**iiiiiiiiii***+++####n#+#znxz+#z++znxMMMMnz############znznnxxxnxxxM
xMWxxxxxxxxxxxMxxxWWWWWMMMMMxMxxMMMMxxxMWMMMMMMMMMxn#;;;;i*i;;ii;;;;;:i+##*+#z##+++***iiii*iiii**++z##zz+zznxnz####zznnxMMxz##z##zzzzz#nnnnnnxxxxxxxxx
xxxxxxxxxxxxMMxxxxxMxnxMWWMMxxxxxMWxxxMW@WW@@@@WWMn#+iii;;i*iiiiiiiii:i+#+**+#+zz##+++***iiii;*i**+#+###+#znxzz#####nxnxxMxzzzznzzznnnnnznnnnnnnnnnnnn
xMxMxxMxxxMMMxMxxnnn#znxMWWMxzzzxxMMMMMWMW@@@@@Wxz#+****i;iiiii*ii***:i+++**+#*+n##z###++**iiiiii**++#####znnzz###zznnxxMxxnnzznznnzzznnnnnnnnnnnnnnnn
WWWWWxn##znznxnnzzzzznznMxnn#++zMMWMMMxMMW@@W@WMxn####+*iii;;ii*i*++*;i+#+i*+#i:x**#znnz##++i*ii****+z##zzzxzz####znnnnxMxnnnnzzzznnnzznnnnnnnnnnnnnnn
MWMMMxn+++#zz#++#zzzzz##z#zz###zx@@@WMWW@@@@@@WMxnzzzz#+*ii;;;i;i;i;::;++*i*+#*:xz*i+zxxxnz##+*****+##z#znnnnz####nnnnxxxxnnnnnnnznnnnnzznnnnnnnnnnnnn
WMMMxxMxxnnnnnznxMMMxnnnnnxxnnxxxMMMMMWWWWMMxxMMMn#n#zz#**ii;;;;;;;::,:i+*i*+##*#+#i;+zxMxxnz####+++#zzzxxznnz###znznxMMxxxnnnnxnnzznzznnnznnnnnnnnnnn
MMMxMMMMMxnxxxxMMMMMx##zzzMMMMMMMMMxMMMMMz###xxMxzxMnnzz#+*ii;;;;;:::,,i***ii*i+*+#+;;*zMxnxxxxnnzzzznnxMMnnnz####znxMMMxxnnxxnxxnnzzzzzznnznnnnzznnnn
MMMMMMMMMMMMMMMMMMMMn####xMWMWMWMMMMMMMMx##+#xxMznWxxxnnz#+**;;;::;::,,;**iii*:;#++#*;;*nnznxMWMWMMWWWMxxMnxxnzznznMMWMxxnnxxxnxnnxnnzzznxnnnz#+***##+
MMMMMMMMxMMMMMMMMMMxzznnxWW@@@@WWMMMMMMxz###nxxx#xxxxxnnnnz++ii;;;:::,.:*+*i;i;::+++#+ii#+*+zMWMWMW@WWMxMMxxMMMMMxMMMMxnxnxxnnxxnznxnnnznn+*+*iiiiiiii
MMMMMxWMMMMMMMMMWWWMMMMW@@@@WWWMMMMMxxxxz###xxxn#nxxxxxnnz###+*ii;;:::,:i**ii;ii;,,;*##***;i#xxxMW@@MxxMMxxMWWWMWMMWWxxnnnxnzznn*;i*+n#++*iiiiiiiiiiii
WMMMMWWMMWMMMWMWWWMMWWWW@@WMMMMMMMMxxxnnzzz#nxxzzMMMxxxnnzz###+**i;:;;,:i***iii+,,,.,;*##*i*#z##zzxWxMMxxMxMMMWWWWWWMxxnnnnz#*iiiiiiiiiiiiiii;iii;;;;;
WMMMMWWWMWW@@@WWWWWWWWMWWMMMMMMMMMMxxnnxxxxnnxMzxWxxxxxnzzzzz###+*i;::,,;**i*iii,,,,:::i:.:;ii;i;:i+##zxMMxxMMWWWWWx+#z#*iiii;;iiiiii;i;;i;;iiii;;;;;i
WWMWWWWxM@@@WMxMxnnnnzxMMMMMMMMMMMxnnzznMxnnnxx+xMxxxxxnznzz##+##++i;;,,:****ii;;:::::;:,..,:;*z*:i#zznMMMxMMWWWWWM*;;;;iiiiiiiiii;;;iiiiii;;;:;;;i;ii
MWWMMWMMWWWWMnnMnnnnnnMMMMMMMMMMMMxz##znxxxxxxx+MWxxxxxnnnzzz##zzz#+ii:,:ii**ii;;i;;;i:::,,::i#n*;+zzzMMMMxMWMWWWM+;iiiii*;ii;iiiiii*i***i;;:;;;;;;;ii
MMMMMMMMMMMMxnnMMxxxxxMMMMWMMMMMMMnz###nnxxxMx#zWMxxxxxnnnnzzzzzzzzz+ii,:;i***i;;;***i:::::;;+nn**#zzxMMMxxMMMWWM*;;;i*i**;iiiii+iiii;**;:;;;;:,;iiii;
MMMMMMMxxMMMxxxMMxxxxMMMMMMMMMMMMMz####nxxnnxn#zMxxxxnznnznzzz##zznz#+*:,:;i*i*;;ii+#;:;;i**+zMn##znxMMMxxnMMMWWn;;;;iiiiiiiii+ii;;;;;;;;;;;;;;;;ii;;;
MMMxxxxnxxnnnnzxMxxnxxnMMMMMMMMMMMz####xxnznxn#zxxxxxnnnnnzzzzz#znzz#++;,,:;ii*iii;i*iiii*++zMMnzznxMMMxxxnxMWMM+;;;i;;;;i;;i;*;;;;;;;;i;;iiii;;ii;ii;
z#+++++#++++*++#+*++#+*n#++#nzzznMz###nMxnznxn#zxxxnnnznnnznzzz#nnzz##++:,:;iiii;i;;ii*i*+#nMWWxnnxMxMxxxnnMMMMx*;i;;;;;;i;;;;;;;;;;;i;ii;iiiiii;i;i;;
*+++++#++++**z#+i+##+**++*******#z####nMxxzzxxznxxxnz#znzzzzzzzzzzzzz###;,:;ii*iii;ii;i*+nxMWWWMxxx#zzzzzznxMMMni;;;;;;;;i;;;;;;;i;;;ii;i;;iiiii;ii;;i
+++###+#+##+++++++zz#***+**+++**+#*+++#nnnznnnznMnzn#++z#zzzzzznz#zzzz##+:,:ii*iii;i;;;iiznxMMWMzz***++*+#nxxMM#iii;;;;;i;;;;;;iii;;i;;;i;ii;;;iiiiiii
#zzz+####+###+++*+#++++++*##++++#z#+++*+#zz#zznnnz#+#+*#z#z#zznzz#zzzzzz#*::;ii***;ii;;;i*+#zz##***i**+i*#nnxMx*;*i;;iiii;;;;;;;;;;iiiii;;iiiiiiiiiiii
########+##z##+++++**#++##+#+++++#i###*+*++++**+#+*++++####zzzn#z#zznzzz##;::;i***iii;;i;ii***ii*iii**+*+#nnxxxiiii;;i;;;;;;;;;;i;;ii;i;iiiiiii;;iiiii
#*#######zz#+#z##*++*##zz###+#+++*+**##**+#+++*+***i+++####zzzz###nnnnnz##+;::;i**ii*i;i;iiiiiii*i*i**+*+#znMMn;;;;;;iii;;;i;;;;ii;;;;iiiiii;iiiiiiiii
+++++#+#zzzz+#z#+++++*+zzz++#zz+**+++*+++#z+++#+++***+#zz###zzz##znnnnnzznz*;;;;******iiiii**ii*******+*+#xMMWzi;i;;;iiii;;iii;iii;ii;i;iiii;;iiiiiiii
#++++znnnz###z++zzz++++#+++#+##++++**+#zn+n##++;++;##+*+###z#zz#zznnzzzznnnz*i;;ii*******+*+**i+**+++++++nxMMM#iii;;iii;;;i**;;i;iiiiiiii;iiiiiii*****
#+####z##+++##+##z#++*##++*+++#+++z#+++#+#+#+i;ii;iii***####zzzzznzzzz#znxnzz*;;;ii***+++#+##+*++#+#++++znxxMMziiii;iiiii*i;ii;i;ii;iiiiiiii*+##zxMMMM
#zz###z##++#z####zz+++++****+**++z*++*#z*i*iiiiii;*;i**++###zzzznzzzzzznnxnzzz+i;;i*++++####z#+######++#xMMWWWni;i;;;;iiiii;ii;iiiii*i;*++znMMMWMMMMWM
zzz#+n+#+#+z##+++z#++i#++z+;i##+***+*ii*ii**;;i*i;ii*+#++#+#zzznnzz#zznxxxznnznz#i;i+++#+######z#zz##+#nxMWMMWzi;iiiiii;iiiiiii*iiiiiii+xMMMMMMMWWWWWW
#z#**xMz+#z#+#+++**+++*+++**++**i**+i*iiiiii+*i*iiii+***+++#z#znzz###znxnnnnnnnnnz+ii*+##z#####zzz##++znxxxMMW#iiiiiii;;iiiiii**ii**i*#MMMMWWWWWWWWWWW
znz+#+#++#z+#+*##++#**+****+*****i*+**ii;i+i*+*ii*+i#***+#+#z#zz#####znxnnnzznnxnnn#i;*+##zzz##zzzz++#zxxMWWWM+iiii*+*iiiii;i*i******zMWWWWWWWMWWWWWWW
z#z#z#+i#+##+iz##++***iz**++#++*++*+i*i*****+*i+i+**+**+++#z##zz####znnnnznzznxxxxxx#*i*+#zzzzzz##++znMMMMWWWW+;;ii*iiiiiiii;iii*i*+xWWWWWWWWWWWWWWWWW
znnnz+*+#+#***+*+n+*##++**#++***+*i*#+i*+******#+*****++++#z#zz###zznnnzzzzzznxxxxnxxz+**+#zznzz###zxxxMWW@WWM+;iiiiiiiiii*iiii*i*#MMWWWWWWWWWWWWWWWWW
####+++#+#+*++++###*+++**iii**++++i*+***+*+*+******+**+++++z#####zznznnnzzz#nnnxxxnxnzz#***#zzzzzzxxxMWMMMWWWW#ii*iiiiiii;*+iiii*zMWWWWWW@WWWWWWWWWWWW
##+#+#z+++++++++*##+***+*+*++*+++**+*++*+*+**+++**++**+*++#z#z##zzznzznz##zznnnnnxnnnnnn+++znnxxxMMMxMW@WW@@@W#iii*iiiiiii*iii**zMWWWWWWWWWWWWWWWWWWWW