==++=----::-*%%###%%%%%%%%%%%%%@%@%%%%%%%#****+=--========-------------------------==--==------------
-::::=--==--+*+=-====*%@@@@@%%%%%%%%%%%#****#*+=---======--------------------------==--==----========
**++++-=+==-+**=:----=%@%@@%%%%%%%%%%###****+*+=-----------------------------------=======+++++++++++
-=-===-==-=-+##=:-:--=##***####%%%%####**==++++=-----------------------------------=+**+++++===---:::
:::::::+**+=+#*+:-:--==++=++++++*#*++*###*=++++=------------------------------------=--::::::::::::::
-------=++=-+***-=---++++=++****#%%##*+++===+=+=----------------------------------:-:::::::::::::::::
+++=======-----------------=====++*+**++=-:=+++=------------------------------------:::::::::::::::::
#################******+++++++==========------==------------------------------------:::::::::::::::::
############################################%#*=-------------------------------------:::-:::::-::::::
#######################%%%%%%%%%%%%%%%%%####**+=-------------------------------------:::--:-::::---:
######################%%%%%%%%%%%%%%%%####*++++=-------------------------------------:-------------:
#######################%%%%%%#####%%####*++++++=-------------------------------------:------------::
#######################%%%%%##########*+++++++==-------------------------------------:---:-:------::
#####*****#############%%%%##########*+++++*#*#*=------------------------------------:------------::
**********************#%############**+*#%%@@@@@@%+---------------------------------:::------:---:::
**********************###########******%@@@@@@@@@@@#---------------------------------::----:-----:::
******++***************########*******#@@@@@@@@@@@@@*------------------------------=-::----:-:--::::
******+****###*#%#*****######*********%@@@@@@@@@@@*-=------------------------------=-:::-------:::::
******+****%%*++%#*****####****+******%@@@@@@@@@@@#*---------------------------------:::-::-::::--::
**%%*+****#%%+++%*++***###*****+*****+%@@@@@@@@@%+=**---------------------::::::----::::-:::::::::::
#%%###*#*##%%***%#****###******++*+*++#@@%*=****++*+-:-------------------=-----:----::::---:::::::::
##**++***#*########**+*#*****++++++*#*#%*=--=---:=+-==-------------------=--=--:----::::::::::::::::
%%*++++++#==**+=+++=+=+******++++*#%%%%#%%%%%#+-:=*====------------------=-==--:----::::::::::::::::
@@#**++++*+=+=-----=+*#%##****##%%%%%%%%%%%%%%%%%%+=++++-----------------=--=--:----::::::::::::::::
@@#**+===*+=+------*%@@@@@#*#%%%%%%%%%%%%%%%%%%%%%#%%*+=*=::-------------=-----:----::::::::::::::::
##**+======++=======+++***+*%%%%%%%%%%%%%%%%%########%%###=-:------------=-----::-:-::::::::::::::::
**############=%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%#%#####%%%%%%#=::---------::=-----::---::::::::::::::::
########%###**=%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%+-:--------::=-----::---::::::::::::::::
*******####***=%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+=----::::----==----=-:::::::::::::::
********#*****=*+#####**#@@%%@%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%+==-------=+++===+=========-:-------
+=====+******=+===+++=-+@@@%@%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%++============-----------------------
========+**+++=+===+*+--*%@@%@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%@@@*=**#*###*****+++++=================
========+++*=--===++++--#%%@%@%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@%+==*#*########%%%%%%%%%%%###*****+++
========+++=-++=++++++--###*%@%%%%%%%%%%%%%%%%%%%%%%@#**++*#%@#===-=#*#########%%%#%%%%%%###########
===+=-====--+*==+++*+=-=##**#@%%%%%%%%%%%%%%%%%%%%%%%#*+++++++====--**#########%%%####%%############
++=-------=====+++**+--+##**+@%%%%%%%%%%%%%%%%%%%%%%%*++++++**+++=--+=**########%######%#*********##
++=-=====+*+++=+++*++--*##**=%%%%%%%%%%%%%%%%%%%%%%%%+====++++*++=--=-=*###############%#***********
++=-====+**+++=*++*++==##%**=*%%%%%%%%%%%%%%%%%%%%%%%+=====+++**+=--=--+#########%%%%%%%#######*****
##*-=-=****+++=++**==-=##%#+++%%%%%%%%%%%%%%%%%%%%%%%+-====+**##+=--+--=#*++++*#####%%%%%###########
###=-+*++*+++==+***+===**##*=+%%%%%%%%%%%%%%%%%%%%%%%+-==++*####+=--+--=*=##**+===--==++****########
**%#=====+++++====+++++++***+*%%%%%%%%%%%%%%%%%%%%%%%+==+**####*+=--+--=*=*@@@@@@@@%****::--+**####%
++##*++++++=+++++++******#####%%%%%%%%%%%%%%%%%%%%%%%+=+*#####*++=--=--=*=-%@@@@@@@@@#+*-::-=+*###%%