##############################zzznxMMMMMMMMWMMWWWWWWWWWWWWWWWWWWWWWMMxxxxMMMMMMMWWWMMMMMMMxMMxxxxxxxxxxxxxxxnzzzzzz##zz###zz###############z##########
:::::::::::,::::::::::::::::::;i**#znnxMMMMWMMWWWWWWWWMMMMMWWWWWWWWMxnnnnnnxMxMMMMWMMxxMMMnnn#zznz###z#zzzzz#*iii;;;;;;::;;;;:;;;::::;;::;:;;;::::::::
::::::::::::::::::::::::::::::ii**+znnxMMMMWWWWWWWWWWMMMMMMMWWWWWMMMMxxxnnxnMxxMMWWWMxxMMMxxzzznnnnz#z##zzzz#+iii;;;;;;;;;;;;;;;;;;:;;;;:;;;;;;:::::::
:::::::::::::::::::::::::::::;i***+zznnxxMMMMWWWWMWMMMMMMMMMMMWWWWWMMxxxxnxnMMxMMWWWMxxMWMxnzzzznxxnnzzzzzzzz#iii;;;;;;;;;;;:::;;:::;;:;;;;;;;::::::::
:::::::::::::::::::::::::::::;i****#znnnxxMMMMMMMMMMMMMMMMMMMWWWWWWMMMMMMxxxxMxMMMWWMxxMMMxnnznznxxnnnzzzzzzz#*i;;;;;;::;::::::;:::::;::::;;;;;;::::::
::::::::::::::::::::::::::::;i**++#+znnxxxMMMMMMMMMMMMMMMMMMMMWWWWWWWMMMMxxxxMxMMWWMMxxMMxxnnnnznxxnzznznnzzz#*i;;;;;;;:::::::::::::::::::;;;;;::;;:;:
:::::::::::::::::::::::::::;**######znxxMMMMMWWWWWWWWWWWWWMMMMWWWWWWWMMWMxxMMMxxMMMMMxxMMxnnnznznxxnnnnnnnnzz#*i;;;:;;::::::::::::::::::::;;;;;;;;;:::
::::::::::::::::::::::::::;*##zz#z#znxxMMMMMMMMMMWWMMMWWWWWMMMWWWWWWWWWMMxMMMMxMMMMMxxxxxnnnnzzzznxxnnnnnnnnz#*i;;;;;;::::::::::::::::::::;;;;;;;:;::;
:::::::::::::::::::::::::;*++#z##zznxxMMMMMMMMMMMMMMMMMMMWWMMMWWWWWWWWWMMxMMMxxMMMxxnxxxnnnnnzzzznxnnnnnnnnnzz*i;;;;;;:::;;::::;;:::;::::;;;;;;;;;;:::
::::::::::::::::::::::::;i#++zzzznnnxxMMMMMxxxxMMMMMMMMMMMWMMWWWWWMMMWWMMxMMMxMMMxxxxxxxnnznnnnzznxnnnnnnnnnz#ii;:::;:::::::::::::,::::::::;;;;;;;;:::
::::::::::::::::::::::::;*#++zzznnxxxxxMMMxxxMxxMMWMMMMMMMWMMMMWWWMMMWMMMxMMMMMMMxxxxxxnnnzznnnnzznnnnnxnnnnz#*i;::::::::::::::::::::::,::;;;;;;::::::
::::::::::::::::::::::::;*#++znzzznxxxxxMxxxxMxxMMMMMMMMMMWMMMMMWWWWMMMMxxMMMMMMxxxxxnnnzzzzzzzzzzznnnnnnnnnnz+*;;::::::::::::::::::::::::;;;;;;;:::::
::::::::::::::::::::::::;#nznnnnznnxxxxxMxxxMMMxMMMMMMMMMMMMMWWWWWWWMMMMxxMMxxxxxnnnzzzz###+++##zzznnxxnnnnnnz#*;::::::::::::::::::::::,::::;;;;;:::::
::::::::::::::::::::::::izz+nxnnnnnxxxxxMMxMMMMMMMMMMMMMMMMMMMWWMMMMMMMMxxxxnnnnzzz#####++******+#zznnxnxnnnnnz+i;::::::::::::::::,::::::::;;;;;;:::::
::::::::::::::::::::::::+#++zxxnnnnxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMxxxxnnnzzz###++++****iiiiii*+#zznxxnnznzzz+i:::::::,::,,,::::,:::,,::::::;;;::::;
:::::::::::::::::::::::;#**znnnnnnnxxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMxxxnnnzz###+++*****iiiiiiiiii*+#znnnnnnnnzz#i;:::,:,,:,,,,,,,,,,,,,,,::::::::::::;
:::::::::::::::::::::::;z+#zzznnnnxxxxxxxxxxMMMMMMMMMMMxMxMMMxxxxxxxxnnnzzz##++******iiiiiiiiiiiii*+#znnnnzznzz#*;:::,,,,,,,,,,,,,,,,,,,,,:::::::::::;
:::::::::::::::::::::::i##z#znnxxxxxMxxxMxMMxMMMMMxxxxxxxxxxxxxnnnxnnnzzz##+++*******iiiiiiiiiiiiii*+znnnnzzzzz#*;:::,,,,,,,,,,,,,,,,,,,,,::::::::::::
:::::::::::::::::::::::i#+#zznnxxxxxxMMMMxxxxxxxxxxxxxxnnnnnnnnnnnnnnzz##++************iiiiiiiiiiiii*+zznnnzzzz#+i:::,,,,,,,,,,,,,,,,,,,,,::::::::::::
:::::::::::::::::::::::;+##zznnnnnxxxxMMMMxxxxxxxnnnnnnnzzzzzzzzzzzzz###++*************iiiiiiiiiiiii*+##znnz#zz#+i;:::::::,:,,::,,,,,,,,,,::::::::::;;
::::::::::::::::::::::::i*#zzzzzznxxxMMMxxxxxxxnnnzzzzzzzz#############++**************iiiiiiiiiiiiii+###znzzz#z#*;::,,,,,,,,,,,,,,,,,,,,,::::::::::::
::::::::::::::::::::::::;;*zz###znxxMxxxxxxxnnnzzzzzzzzz#############+++********+*****iiiiiiiiiiiiiii*+###znnzzz#*;::,,,,,,,,,,,,,,,,,,,,,::::::::::::
::::::::::::::::::::::::::i+zzzznxxxxxxxxxxnnnzzzzzzzzz###########++++++*******+*+****iiiiiiiiiiiiiii*+###zzzzzz#*;::,,,,,,,,,,,,,,,,,,,,,::::::::::::
::::::::::::::::::::::::::;+znnxxxxxxxxxxxnnnzzzzzzzzzzz#########++++++++**************iiiiiiiiiiiiiii+###z#zzzz#+i;::::::::,:::,,,,,,,,,:::::::::::::
::::::::::::::::::::::::::;*znxxxxxxxxxxxnnnzzzzzz#zzzz#########++++++++++*************iiiiiiiiiiiiiii*+##z#######*i;;::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::;i+nxxxxxxxxxxnnzzzzzzz#zzzzzz#######++++++++++++++**********iiiiiiiiiiiiiii*+#####z##++*i;;::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::;*zxxxxxxxxxxnnzz#zzzzzzzzzzzz######+++++++++++++++*++******iiiiiiiiiiiiiiii+##zz#zz#++*i;:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::;i*#nxxxxxxxxxnzz###zzzzzzzzzzz######++++++++++++*++*+***+***iiiiiiiiiiiiiiii*###z#####+ii;:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::ii+#nxxxxxxxxnnzz#z#zzz#zzzzzzz#######+++++++++++++++++*******iiiiiiiiiiiiiii*+##z####++i;;::::::::::::::::::::::::::;::::::
::::::::::::::::::::::::::;i*#nxxxxxxxxnzzzz#z#zz##zzzzzzz######++++++++++++++**********iiiiiiiiiiiiiii*+#####+#++i;;:::::::::::::::::::::::::;;::::::
:::::::::::::::::::::::::,:i+#nxxxxxxxxnzzzzz###z#zzzzzzzzzz####+++++++++++++++********iiiiiiiiiiiiiiii*+#zz##+++*i;;::::::::::::::::::::::::;;;;:::::
:::::::::::::::::::::::::,,i+#nxxxxxxxxnzzzz#####zzzzzzzzzz#z####++++++++++++++*********iiiiiiiiiiiiiiii+#####+***i:::,::::::::::,,:::::::::;;;;::::::
::::::::::::::::::::::::,:,;+#nxxxxxxxxnzzzz###z#zzzzzzzzzzzz####++++++++++++++**+****iiiiiiiiiiiiiiiiii*+#z#++**i;:::::::::::::,:,::,,,,::;;;;;::::::
:::::::::::::::::::::::::::;+znxxxxxxxnnzzzzz####zzzzzzzzzzzzz###++++++++++++++++*****iiiiiiiiiiiiiiiiii*+#z#++*ii;:::::::::::::::,:::,::::;;;;;;:::::
:::::::::::::::::::::::::::i+znxxxxxxxxnzzzzzz#zzzzzzzzzzzzzzz####+++++++++++++++******iiiiiiiiiiiiiiiiii+#zz+*ii;::::::::::::::::,:::::::;;;;;;;:::::
:::::::::::::::::::::::,,,:;+#zxxxxxxxxnzzzzz#zzzzzzzzzzzzzz#z####++++****++++++++*****iiiiiiiiiiiiiiiiii*#zz+*i;;:::::::::::::::::::::::;;;;;;;;:::::
:,::,::::::::::::::::::::,:;*#zxxxxxxxnnzzzzzzzzzzzzzzzzzzzzzzz###+++++**+++++++++******iiiiiiiiiiiiiiiii*+zz#+i;::::::::::::::::::::::::;;;;;;;;;;:::
::,:::,::::::::,:::::::,,,::i+#nxxxxxxnnzzzzzzzzzzzzzzzzzzzzz######+++++*+++++++++***************iii;;;;ii*###*i;;:::::::::::::::::::::::;;;;;;;;:::::
::,,,:,:::::,,,,::::::,,,,::;i+nnxxxxxnnzzzzzzzzzzzzzzzzzzzzzz######++++*++++++++++++++++++++++++**ii;;i;i*###+i;;:::::::::::::::::::::::;;;;;;;::::::
::::::,:::::,,::::::::,,,::,:i#nxxxxxnnnzzzzzzzzzzzzzzzzzzzzzzz######+++++++##########zzzzzz#####++*ii;;;;i+##+ii;:::::::::,:::::::::::::;;;;;;;::::::
::::,::,::,,,,,::,:,:,,,,,,,:*#nnxxxxnnnzzzzzzzzzzzzzzzzznnzzzzzzzz####+++++#####zzzzzznzzzzzzzz###++*iiiii+##+*;;:::::::::::::::;;;;;;;;;;;;;;;::::::
::::,,,,,,,,,,,,:,,::,,,,,,,:i#znxxxxnnnzzzzzzzzzzzznnnnnxxxxnnnnnzzzz###+++#####zzzzzzzzzzz##++++++++*iiii+###*i;;;;::::::::::;;;;;;;;;;;;;;;;;::::::
::::::,,,,,,,,,,,,,,,,,,,,,,:i+znxxxxxxnzzzzzzzzzznnnxxxxxxxxxxxxnnnnzzz##++##########zz##+++**********i;ii*+#+*i;;;;::::::::::;;;;;;;;;;;;;;;;;::::::
::::,,:,,,,,,,,,,,,,,,,,,,,,,;+znnxxxxxnzzzzzzzzznxxxxxxxxxxxxxxxxnnnnzzz##+++++++########++++***iiiiiii;ii**+##*i;;::::::::::::;;;;;;;;;;;;;;;;::::::
::,:,,,,,,,,,,,,,,,,,,,,,,,,,:*znnxxxxxnzzzzzzzznnnnnnnnnnnnnnnnnnnnnnnzzz#+*****++##zznnnnnzzz##**iiiii;iii*+##*i;;::::::::::::;;;;;;;;;;;;;;;;::::::
:::,,,,,,,,,,,,,,,,,,,,,,,,,,:iznnxxxxnnzzzzzznnnnnnnzzzzzzzzzzzzznnnnnnzz#+*iii**++znnxxxxxnnnnnz+*iiii;iii+++*++*;:::::::::::::;;;;;;;;;;;;;;::::::,
:::,:::,,,,,,,,,,,,,,...,.,,,,:+znnxxnnnzzzzzznnnzzzzzzzzz#zzzzznznnnnnnzz#+*iiii*+#nnnnxxxxnzzzzz#+**ii;iii*++*#z#i::::::::::::;;;;;;;;;;;;;;;:::::::
::,,,,,,,,,,,,,,,,,,,,,,,,,,,::*znnxxnnzzzzzzznzzzzzzzzzznnnxxnnnnnnnnnnnz#+*iiiii*#zzzzzzz#+++*******ii;iii*+*ii##*;:::::::::::;;;;;;;;;;;;;;;::::::,
::,,,,,,,,,,,,,,,,,,......,,,,:i#znxxxnnzzzzzzzzzzzzzznnxxMxMxnnnnnnznnnnz#+**iiii*+#####++***iiiiiiiiii;iiii*i;i+#+;:::::::::::;;;;;;;;;;;;;;;:::::::
:,,:,:,,,:,,,,,,,,,,.,,,,,,,,,,;+znxxxnnzzzzzzzzzzzznnxxxxMMMxnnnnnnzznnnzz#**iiiii*+#####++*****iiiiiiiiiiii*i;;*#+;:::::::::,::::;;;;;;;;;;;;::::::,
:::::,,,,:,,,,,,,,,,,,,,,,:::::;+znxxnnnzzzzzzzzzzznnxxnnnnnnnnnzzzzznnnnzz#+*iiiii**+######+++*****iiiiiiiii*i;;i#*;:::::;::::::::::;;;;;;;;;;::::::,
:::,,,,,,,,,,,,,,,,,,,,,,,,:::::i#nxxnxnzzzzzzzzzzznzzzzzzzzzzzzzzzzzzznzzz#+**iiiii***+++++++++***iiiii;iiii**i;i+*;:;::::::::::;:;::;;;;;;;;;;::::::
:::,,,,,,,,,,,,,,,,,,.,,.,,,,,,,;+nxxxxnzzzzzzzzzzzzzzzzzzzzzzzzzznznnnnzzzz+***iiiiii******+++*****iiii;iiii++i;i+*::::::::::::::::::::;;;;;;;:::::::
:::,,,,,,,,,,,,,,,,,..,,.,,,,:;i+#nxxxxnzzzzzzzzzzzzzzzzzzzznzzzzzzzznnnzzzz+***iiiiii*******+*****iiiii;;i;i++*ii*i:::::::::::::::::::::;;;;;;:::::::
::::,,,,,:,,,,,,,,,,,,,,,,,::;++##znxxxnzzzzzzzzzzzzzzzzznznzzzzzzzzzzzzzzz#+***iiiii*************iiiiii;ii;i++*ii*;;;;;;;;;;:::::::::::;;;;;:;:::::::
::::,::,,,,,,,,,,,,,.,,,,,,,,i#zzzznnxnnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz#+***iiiii*************iiiiii;ii;i+++*ii;:::::::::::::;;;;;;;;;;;;:::::::::
:,::::,,,,,,,,,,,,,,,,,,,,,,,*#zzzzznnnnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz#++*i**iii************iiiiiiiii;;i+++*i;:::::::::::::::::::::;;;;:;:::::::,
:::::::,,,,,,,,,,,,,,,,,,,,::+####zzznnnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz##+**iiiii***********iiiiiii;ii;;;*+++i;::::::::::::::::::::;;;:::::::::,,,
::::::::,,,,,,,,,,,,,,,,,,,,,*##+#zzzznnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz#+*iiiiii**++******iiiiiiiiii;i;;*++*i;::::::::::::::;;::::;;::::::::::::,
::::,,:,,,,,,,,,,,,,,,,,,,,,,*##+##zzznnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz#+****i****+##+****iiiiiiiii;;i;i***ii:::::::::::::::;::::::;::;:::::::::,
::::::,,,,,,,,,,,,,.,,,,,,,,,;##+##zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz#+***iiiii*+###++**iiiiiiii;;i;;iiiii;,,,:,,,::::::::;::::::;:::::::::::,,
:::::::,,,,,,,,,,,,.,,,,,,,,,:+####zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznzzzzzzzzz#+****iiiii*#zz#++**iiiiiiiiii;;iii;i;,,::::::::::::::::,,::::::::::::::,,
:::::::,,:,:,,,,,,,,,,,,,,,,,:*####zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznzzzzzzzzz#++*iiiiiii*+#zz##+**iiiiiiiiiiii;i;;:,,::::::::,::,::,,,,::::::::::::,:,,
::::::,,,,,,,,,,,,,,,,,,,,,,,,;+###zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznzzzzzzzzz#++*iiiiiii**#zzz#++***iiii;iii;;ii;;:,,,:,:::::,::,::,,,,::::::::::,,,,,,
::::::,,,,,,,,,,,,,,,,,,,,,,,,:i####zzzzzzzzzzzzzzzzzzzzzzzzzzzzzznzzzzzzzzz##+****++****+#zzz#++***iiiiiiiiiii;:,,,,:::::::,::::::,,,:::::::::,,,,,,,
:::::::,,,:,,,,:,,,,,,,,,,,,,,:;*####zzzzzzzzzzzzzzzzzzzzzzzzzzzzznnzzznnnzzz##+*+##+*iii*#zzzz#++**iiiiiiiiiii;::::::::::::,:::::,,,,:::::::::,,,,,,,
::::::,,,,,,,,::,,,,,,,,,,,,,,::i+###zzzzzzzzzzzzzzzzzzzzzzzzzzzzznnxnxxxxnnzz#++++*iiiii**+zzzz##+**ii;iiiiiii:,,,,:::::::::::::::::::::::::::,,,,,,,
::::,::,,,,::::::,,,,,,,,,,,,,::;+###zzzzzzzzzzzzzzzzzzzzzzzzzzzzznnnxxxxxnnnzz+***iiiiiii**#zzzz#+**ii;ii;iii:,,,,,:,:::,:,,,,,:,,:,,::::::::::,,,,,,
:::::::::::::::::::::::::::::::::i####znzzzzzzzzzzzzzzzzzzzzzzzzzzzznnnnnnnnnz#+****iiiiiii*+##zzz#**ii;ii;;::,,,,,,,,,,,,:,,,,,,,,,,,::::::::,,,,,,,,
:::::,::::::,:::,,,,,,,,,,,,,::::;+####znnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnnzzz##++***iiiiiii*++#zz#+*iiii;;:,,,,,,,,,,,,,,:,,,,,,,,,,,:::::::,,,,,,,,,
:::::,::::::::::,,,,,,,,,,,,,:::::i####zzzzzzzzzzzzzzzzzzzzzznznzzzzzzzzzz##++++++***iiiiiiii**+#z#+**iiii;,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::,,,,,,,,,
:::::,:::::::::::,,:,,,,,,,,,:::::;*####zzzzzzzzzzzzzzzzzzznnznzznzzzzzzz##+++++++***iiiiiiii***#z#+**iiii;:::::::::::::,,:,,,,,,,,,,,,:::::,,,,,,,,,,
::::::,:::::::::,,:,,,,,,,,,,::::::;+###zzzzzzzzzzzzzzzzzznnnznnnnzzzzzzz##++++++++**iiiiiiii***+z#+**iiii;::::::::::::::::::::::::,,,:::::::,,,,,,,,,
::::::::::::::::,,:,,,,,,,,,,:::::::;+##zzzzzzzzzzzzzzzzzznnzzznnzzzzzzzz##+++++++****iiiiii****#z#+**iii;;,,,,,,,,,:,,,,,:,,,,,,,,,,,:::::::::,,:,,,,
:::::::::::::::::::,,,,:,,,,::::::::,;+#zzznzzzzzzzzzzzzzznzzzzzzzzzzzzzzz##++++++++++++***+++*+##+***iiii:::::,,,:::,,,,,,,,,,,,,...,,,,:::,,,,,,,,,,
::::::::::::::::,,:,,,,,,,,,::::::::,,;+#znnzzzzzzzzzzzzzznzzzzzzzzzzzzzzzzzzz#######z##z#z+***+##+****iii:::::,:::::,,,,,,,,,,,,,,,,,,::::::,,,,,,,,,
:::::::::::::::,,,:,,,,,,,,,:::::::,,..:;+###zzzzzzzzzzzzznzzznnzzzzzznnnnnnnnnz##z#*++zz#+*i**+#++**iiii;:::::::::::::,,::,,,,,,,,,,,::::::,,,,,,,,,,
::::::::::::::::,,,,,,,,,,,,:::::::,,.,,,;*+#zzzzzzzzzzzzzzzznnnnnnnnnxxxxnzzzz#+*#*i**++**ii**+++****iii;::::::,::::::::::,,,,,,,,,,,,:,::::,,,,,,,,,
:::::::::::::::,,:,,,,,,,,,,:::::::,,,,,,:i+##zzzzzzzzzzzzzzznnnxxMMxxxnnnz#+++***+*i+++*iiiii*******iiii;:::::::::::::::::,,,,,,,,,,,,,::::,,,,,,,,,,
:::::::::::::::,,,,,,,,,,,,,:::::::,,,,,,,;*##zzzzzzzzzzzzzzzznnnxxxxnnnzz#++++*+##+*+**iii*ii*******iiii:::::::,::::::::::::,,,,,,,,,:::::,,,,,,,,,,,
::::::::::::::::::,,,,:,,,,::::::::,,,,,,,;*+#zzzzzzzzzzzzzzzzzzzznnnnnnnnzz##z##zz#+**iiiiiii*******iii;:::::::::::::,,,,,,,,,,,....,,::::::,,,,,,,,,
::::::::::::::,,,,,,,,,,,,,::::::::,,,,,,:;*+#zzzzzzzzzzzzzzzzzzzzznnzzzzznnzznnzz#+****iiiiii*******iii;:::::::::::::,,,,,,,,,,,....,,,:,,,,,,,,,,,,,
::::::::::::::,,,,,,,,,,,,,:::::::,,,,,,,,:i+#zzzzzzzzzzzzzzzzzzzzzzzzzz##zz#####++*ii**ii*iii******iii;:::::::::::::,,,,,,,,,,,,,,,.,,::,,:,,,,,,,,,,
:::::::::::::,,,,,,,,,,,,,,:::::::,,,,,,,,:i+#zzzzzzzzzzzzzzzzzzzzzzzzzz####++++++*****iiiiii*ii****iii;:::::::::::::,,,,,,,,,,,,,,,,,::::::,,,,,,,,,,
:::::::::::::,,,,,,,,,,,,,::::::::,,,,,,,,:i+#zzzzzzzzzzzzzzzzzzzzzzzzzzzz##+++++++*******i***i****iiii;:;::::::::::,,,,,,,,,,,,,,,,,,::::::,,,,,,,,,,
::::::::::::::,,,,,,,,,,,,::::::::,,,,,,,:ii+#zzzzzznzzzzzzzzzzzzzzzzzzzzzz######+++***ii**i**iiii*iii;;::::::::::::::::::,:,,,,,,,,,,::::::,,,,,,,,,,
:::::::::::::,,,,,::::,,,,::::::::,,,,,,,i+*+#zzzzznnnzzzzzzzzzzzzzzzznnnnzz######++*********i*i***iii;;::::::::::::::,,:,,,,,,,,,,,,:::::::,,,,,,,,,,
:::::::::::::,,,,,,,,,,,,,::::::::::::::;##*+#zzzzznnnzzzzzzzzzzzzzzzzzznnnzzzz###++**********ii***iii;;:::::::::::::,,,:,,,,,,,,,,,,,:::::::,,,,,,,,,
::::::::::::::,,,,,,,,,,,,:::::::,,,,,,:*##*+#zzzzznnnnzzzzzzzzzzzzzzzzznzzzzz####++********i*iii*iiiii;::::::::::::::,,:,,,,,,,,,,,,:::::::,,,,,,,,,,
::::::::::::,,,,,,,,,,,,,::::::::,,,,,,i#zz++#zznnznnnnnnzzzzzzzzzzzzzzzzzzzz####+++******iiiii***iii;;;::::::::::::::::::,,,,,,,,,,,:::::::,,,,,,,,,,
::::::::::::,,,,,,,,,,.,,,:::::::,,:::;#znn#+#zznnzznnnnnnzzzzzzzzzzzzzzzz#z###++++********iiiii*iiii;;:::::::::::::::::::,,,,,,,,,,,::::::::,,,,,,,,,
::::::::::::,,,,,.,,,,.,,:::::::,,,,,:+znxxz##zzznnnnnnnnnzzzzzzzzzzzzzzz####++++*********iiiiiiiiii;;;;;;;;;;;;;;;:::::::,:,,,,,,,,,:::::::,,,,,,,,,,
::::::::::::,,,,,,,,,,,,,::::::::,,,;+zznxMn##zzznnnnnnnnnzzzzzzzzzzzzzz###+++++*********iiiiiiiiii;;;;::::::::::::::::::::::::::::::::::::::::,,,,,,,
:::::::::::,,,,,,,,,,,,,:::::::::::;+#znxxMx##zzzznnnnnnnnnzzzzzzzzzzzzz###++++++*********iiiiiiiii;;;;::::::::::::::,,:::,,,,:,,,,,:::::::::::::::,:,
::::::::::,,,,,,,..,,,,,,::::::::,;+#znxxMMxzzzzzznnnnnnnnnnzzzzzzzzzz#####++++++++*****iiiiiiiiiii;;;;::::::::::::::::::::,,::,,,,,:::::::::::::::::,
::::::::::,,,,,,..,,,,,,::::::::,;+#znxxMMMMzzzzzzznnnnnnnnnnnnzzzzzzzz#z###+++++++******iiiiiiiiii;;;;;;;;;;;:;;;;::::::::::::::,,,:::::::::,,:::,,,,
::::::::::,,,,,..,,,,,,,::::::::;+#znxxMMMMMnzzzzzzzznnnnnnnnnnnnzzzzzzzz###+++++++******iiiiiii*i;;;;::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::,,,,,,,,,,,,,,:::::::i+#znxMMMMMMMxzzzzzzzzznnnnnnnnnnnnzzzzzzzz##++++++++********i*iiii;;;;;::::::::::::::::::::::::,,,,,::::::::::::::::::
::::::::::,,,,,,,,,,,,,::::::;i+zznxMMMMMMMMMnzzzzzzzznnnnnnnnnnnnnzzzzzzzz###+++++++*********iiii;;;;;:;:;;:::::::::::::::::::::::::::::::::::::::::,
:::::::::,,,,,,,,,,,,,,:::::;*#zznxMMMMMMMMMMnnnzzzzzznnnnnnnnnnnnnnnznzzzzz######++++********iiii;i;;::::::::::::::::::::::::::::::;;;::::::::::::::,
::::::::,,,,,,,,.,,,,,,::::;*##znxMMMMMMMMWWxznnznzzznnnnnnnnnnnnznnzznzzzzzz######+++++*******ii;;;;;::::::::::::::::::::::::::::::;;;:;;;:::::::::::
:::::::::,,,,,,,,,,,,,,::;i+#zznxMMMMMMMMMWWMzznnznzzzznnnnnnnnnnnzzznnnnnnnnzzzzzz###+*****iiiii;;;;;:::::::::::::,::::::::::::::::;;;;;;;:::::::::::
::::::::,,,,,,,,,,,,,,:;i+#zznxxMMMWWWWWWWWWMzzznzzzzznnznnnnnnnnnnnzzzzznnnnnnzzzz##++*****i*iiiii;;;::::::::::::::::::::::::::::::;;;;;;;:;::::;::::
::::::::::,,,,,,,,,:;i*+#zznnxMMMMWWWWWWWWWWWn#zzzznnznnnznnnnxnnnnnnnzzzzzzzzzzzz##++*****iiiiiiii;;;::::::::::::,:::::::::::::::::;;;;;;;;::::::::::
::::::::::::::,,:;i*##zzzznxMMMMMWWWWWWWWWWWWn#zzzznnnnzzzznnnxxnnnnnnnnn##znznnzzz#++****iiiiiiiii;;;;::::::::::::::::::::::::::::;;;;;;;;:::::::::::
:::::::::,,,:,:;*+##zzznnnxxMMWWWWWWWWWWWWWWWx##zzznnnnzznzznnnxxxxxxnxnn+zxxxxxxxnnnnnzzzz#+iiiiii;;;::::::::::::::::::::::::::::::;;;;;;;:::::::::::
:::::::::,,,:;*+##zzznnnxxMMMWWWWWWWWWWWWWWWWM#+#znnnnzzzzzzznnnnxxxxnnnz#xxxxnzz#####+++++*i:iiiiii;;;::::::::,::::,::::::::;;::::;;;;;;;;:::::::::::
:::::::::::;*###zzznnxxxMMMMWWWWWWWWWWWWWWWWWMz+#zznnnzzzzzzzznnnnnnnnnnz+xxxxxnz###++**+++ii;ii*iii;;+*i;:::::::::,,:::,::::::::::;;;;;;;;;;;;;;;:;::
::::::::;i*##zzznnxxxxMMMMMWWWWWWWWWWWWWWWWWWMn#+#znnnzzzzzzzzznnnnnnnnzz#xxxxxnnzzz##++###**i*i*iii;;*zz+*;:::::::::,:::::::::::::;;;;;;;;:::::::::::
:;;:;;i*+#zzznnnxxMMMMMWWMMWWWWWWWWWWWWWWWWWWWx#+#zzzzzzzzzzzzzzzzznzzzzznn##zxMxnxMMMxnMn#nnnz**iii;;i#znnz+i;::::::::::::::::::::;;;;;;;::::::::::::
;;;ii*+zzzznnnxxMMMMWWWWWWWWWWWWWWWWWWWWWWWWWWx#++#zzzzzzzzzzzzzzzzzzzzzz##+#nnzzxnxnzxnn+**+xz+*ii;;:;+zznnnz#+i;:::::::::::::::::;;;;;;;;:::::::::::
;i*+#zzzznnxxMMMMWMWWWWWWWWWWWWWWWWWWWWWWWWWWWMz++#znnzzzzzzzzzz####zzzzz#zznzznnxnnnxMxnn#+*x#**ii;i;;*zzznxxnnz+*;:::::::::::::::;;;;;;;;::::;;:::;:
*+#zzznnxxxMMMMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWn#++#zzzzzzzzzzzzz#####zzz#zzzzxxnzzxxnnnxx#*+x#**ii;;;:i#zzznxxnnnz#*i;;;:::;;::::;;;;;;;;;;::::::::::
#zzznnnxxxMMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWx#+++zzzzzzzzzzz##########+#nxnzzzxxzznxxnz###nz*+*i;;;:;zzznnnxxxxnnnz+*;;::;;;;;;;;;;;;;;;;;:;::;:;;:
znnnxxxMMMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMz+*i+zzzzzzzzz##########zznnnznxnz#znnnznn#++z#***ii;;:;#znnnnxxxxxnnnnz#+i;;:::::;;;;;;;;;;;;;;;;;;;;
nnxxxMMMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMz#*ii+###zzzzz#############nnnnnznznnzznnz+*+z#***i;;;;;+znnnnxxxxxxxnnnnnz+*;;:::;;;;;;;;;;:::::::::;
xxxMMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWn#*i;i+####zz#####+#+######nxnzznxnz#zxnz###+#+i**i;;;;:*znnnnnxxxxxxxnnnnnnz#+i;;;;;;;;;;;:::::::::::
xMMMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWxz+i;;*+########++++++####nnzzxxnzzxxnz#nn+*+#+i*ii;;;;:izznnxxxxxxxxxnnnnnnnnn#+iii;;;;;;;;;;;:;;::::
MMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWxz+*i;i++########+++++++#+#nxnnznxnnzznnz#++#z+i*ii;;;;;i#znnxxxxxxxxxxnnnnnnnnnnz#*i;;;;;;;:::;;;;:::
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMn#+iiii++#######+++++++##znxnnnnxnnznnnz##+##*i*ii;;;;:;#znnxxxxxxxxxxxxxnnnnnnnnnz#+ii;;;;:::;;;;:::
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMn#+*iii*+++######+++++++#nnnnxxnznxxnzznn+*++*i*ii;;;;:;#znnxxxxxxxxxxxxxxxnnnnnnnnnz#+i;;;::::::::::
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMWWWWWWWWWWWWWWxz#*iiii+++#####++++++++##nxnnznxnnznnnz#+++#*i*ii;;;;:;+znnxxxxxxxxxxxxxxxxnxnnnnnnnnz#*i;;;;;:;::;:
WWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMWMMWWWWWWWWWWWxz#+*iii*+++####++++++++##nnnxxnnnxnnnzzz#*+#*i*ii;;;;:;+znnxxxxxxMxxxxxxxxxxxxxxnnnnnnnz#*;;:;::;:::