+;;;:::::::::::::.::;
;;;;;:;::::::;;:;::::::::::::.::::
;::;;;;:::::::::::;;:;:::::::::...::::..:::::
++::::::::::.::::::::..::++;:::::.:::::::::::......:::
;;+::::;;;;:;;;:::;;;::::::;:::::::::::;.:::::::::::::::.......::::::
:;;;;:;;;;X;;;:::::::::::::;;;:;;;;:;;;;::.::::::::::;;;;;;::::::...:::::::....::.
:;;;:;;;;;;;;::::::::::::::::::::;:;;;:::::::::::::::;:::::::::::::::......::...:..:::
:::::::;:::::::::;;;;:::..:...::::::::::;;;:::...:::;;::::::::::......:.::....:.:::::::::
;;+;;;;+;:::..:.::;::;:::...:..::::::::::;;:::.:.::;+;;;;;:;;::::.........:........::....::::
::;;;++;::::::::::::::::::..::::::::::.::::::::::::::::.:::::::.::::::::.:::::::...........:::::
::::;;;;;::::::::::;;::::::..:::::::::::::::::::;+;::::.....:::::::::::;;;:::::....:............:::
:::::::;;;x+:::::::::::::;;:::::;::::::::::.::::;;;;;::::...::..:::;;::::;;::::.:::................:::
;::::;;:;:;;::::;;:::..::::::::..:;::::;::::.::::::::.......:::..:::;;:::;;;;::..::.............:::::::::
:;;;+;:;:::...::;+;;:.::::.::...:::..::::::...............::::::;::::;:::;::::..::.................::...::;:
;;;;;;;;;::....::::::::::::.::.:;:......:::.........::::::::::::::::::;;:::::..:......................::.::::::
;+;;;;:::::::..........:.::..:............:.....:::::::::::::::::::::::::::::::.::........:..............::::::::
:;;:::::::::::............................:..:::..:::::::::::::::::::................::.......................::::
;;;:::::::..:..:::........::::::::::::::::::::::;;:::;::::::::.::::::::................::.:......................::;
;;;;;:::::::::..:...:::::::::::;;;++;;;;:;:::::;;::::::::::...::....::::..........................................::
;;;;;::::::.::;::::::;xx++++;;+++xxxxxxxxxx+;;;;;;;::::::.....::.:.................................................::
;;::;;;:::::....:::;;+xXXXXXXXXXXXXXXXXXXXXXx++++++;;;;;::::::::....................................................::
;;:::::::::..:...::;;+xXXXX$$$$$$$$$$$$XXXXXXXXXx++x++++;;;;:::::::.................................................:::
::::::::::......::;++xXXXXX$$$$$$$$$$$$$$$$$$$$$XXxxxxxx+++;;;;;;;:::::::::::.:::.......::.............................
:::::::;;::::::::::+xxXXX$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXxxxxxxx++++++++++;;;;;;;;;;;;;;;;:;;;::::......................::
::::::;::::::;;;::;+xXX$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXXxxxxxxxxxxxxxx++++++++;;;;;;;;;;;;;::....................:.
:;::...:::::::;::;xXXXX$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxxxx++++++;;;;;;;;;::...................::
::::::::::.::::;;;xXXXXX$$$$$$XXX$$$$$$$$$$X$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxx+++++++;;;;;;;;;::..................:;
:::.:.::::..::;;;+XXXXXXXXXXXXXXXXXX$$$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxx+++++++++;;;;;;;::....................
:::.:::::::...:::;xXXXXXX$XXXXXXXXX$$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxxxx++++++++;;;;;;:::...................
::..::...:.....:::+XXXXXXXXXXXXXXXXXX$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxXxxxxx+++++++++;;;;;;::..................:
:::...:::......::;xXXXXXXXXXXXXXX$$$$$$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxx++++;;;;;;::::..............:.
;::::..........:::+xXXXXXXXXXX$$$$$$$$$$$$XX$$XXXXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxxxxxxx+++++;;;;;;;::::..............::
::::......:::.:::;xXXXXX$$$$$$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXxXXxXXXXXxxxxxx++++;;;::;::::::;;;;;;;::::............:::
::::.....::::::::+xXXXX$$$$$$$$$$XXXXXXXXXXXXXXXXXXXxXXXXXXxxxxxxxxx++;;;:::::::::::::::::::::;;;;:::..........:::::
;::..........::+XXXXXXXXXXXx+xxxxx+++;;;;+++++x+xxxxxxxxxxxx++;;;;::::::::::::::;;;;;;;;;;;;;:;;;::::......::::::::
:::::::::..:;+XXXXXxxx++++++;;;:::::::::::;;;;;;++xxxxxx+++;;;::::::::::::::::::::::::::::::;;;;;;:....:::;;;::::
;;::::::::;+XXXXXxxxxxxx++++;;;::::::::::;;;;++xxxxxx+++;;;::::::::::+;;:::::::::::::::::;;;;;;;::...::::;;;:;+
x+;;;;::::+XXXXXXXxx+;;+xxx+;:::::::::::::;++xXXX$XXxx+;;::::::::::;;++;;;;;;:;;;:::;;;;;;;;;;;::..::::::;:;;
XxXX$+;::;XXXXXXXXxx+;;;;+xX+:::::::;;;;;+xxxXXX$$XXx++;;;:::;;+++++xxxx+++;;;;;;;;;;;;;;;;;;;::::::::::;;;;
$XXXX+;;;xXXXXXXXXXXXXXXXxxXxxx+++;;;;+xXXXXXX$$$XXxx++;;;++;++xx+++++++++++++xxxxxxx++++;;;;;:::;:::;;;;;+
XXXXx;:;XXX$$$$$$$$XXXXXxxxx++;;;;+xxXXXXXXX$$$$$XXx++++++++xxxxxxxxxxxxxXXXXXXXXXXxx++++;;;;;::;::;++;;;
XXXXxx;+XXX$$$$$$$$$$$$X$XXXXxxxxxXXX$$$XX$$$$$$$XXxx++++++++xxxXXXXXXXX$$$$$$$XXXXXxx+++;;;;;:::;;;;++;;
X$XXXxxXXX$$$$$$$$$$$$$XXXXXXX$$$$$$$$$$$$$$$$$$$XXxxxxx++x++xxXXXXXX$$$$$$$$$$XXXXxxx++++;;:::::;;+;+++
X$$$$xXXX$$$$$$$$$$$$$$$$$XX$$$$$$$XXXX$$$$$$$$$XXXXxx++++++xxxXXXXXX$$$$$$$XXXXXxxx++++;;;:::;;;;;+++
X$$$$XxXX$$$$$$$$$$$$$$$$$$$$$$$$$XXXX$$$$$$$$$$$$XXXxx++xxxxxxxxxXXXXXX$$XXXXXXxxx++++;;;;:::;;+++++
$$$$$xXXX$$$$$$$$$$$$$$$$$$XXXXXXX$$$$$$$$$$&$$$$XXXxx+++xxx+++xxxxxXXXXXXXXxxxx++++;;;;;;:::+;;;
X$$$$XxXX$$$$$$$$$$$$$$$XXXXXXXXXX$$$$$$$$$$$$XXXXXxx+++++++;;;;++++xxxxxxxxxx++++;;;;;;;;:::
$$$$$xXXX$$$$$$$$$$XXXXXxxxXXXXXXXXxx++xXXxXXXXXXx+;;::::::;;;;;;+++++++xxxx++;;;;;;;;;;::::
XX$XxxXX$$XXXXXXXXXXxxxxxXXXXXXXXXXXXXXXXXxxx+++;;::::::::::;;;;;;;;;;;;;xx++;;;;;;;;;::::
+XX$$XXXXXXXXXxxxxxxXXXXXXXXXxxxxxXXXXXx++;;:::::::::::;;;;;;;:::::;;xx+;;;;;;;;;::::
xX$$$XXXXXXXXXx+++xxXXXXXXxXXx++xxX++++++++;;;:::;;;;;;;;:::::::;;;+xx+;;;;;;;:::::
X$$$$XXXXXXXX++++++xxXXXXXXXXXXXXXxxxxxxxxx+;;;;;;;:::::::::::;;++xx+;;;;;;;;::::
X$$$$XXXXXXXx+++++;::;+++++++xxxx+++++++;;;+;+++++++;;;::::;;++xxx++;;;;;;;::::
+X$$$$$XXXXXXxxxxx+++++XXX$$X$$$$X$$$XXX$$$XXXXxx++;:;;;;+++++xxx+;;;;;;;::::::
XXX$$$$XXXXXXxXXXXXXxxxXXXXX$$$X&$$$$X$$$$x;+xxxx++++++xxxxxxx+;;;;;;:::::::;;
xXXXXXXXXXXXXX$$$$$$XXxxX$$&$$XXXXXXXXXXXXxxxx++;++++xxxxxxx+;;;;;:::::::::;;
XXXXXXXXXX$$$$$$$$$$$XXXXX$$XXxxxxXXXXxxx+++++++++xxxxxx+;;;;;;::::::::::;;;
xxXXXXXXXX$$$$$$$$$$$$XXXXXxxxxxxxxxx+++++++++++xxxxxx++;;;:::::::::::;;;;;
+xXXXXXXX$$$$$$$$$$$$XXXxxxx+++++++;+++++xxxxxxxxxxx+;;;:::::::::::::::;;+
;+xxXXXX$$$$$$$$$$$$$XXXxxxx+++xxxxxxxxxxXXXXXxx++;::::::::::::::::::;;+
xXx+xxxxXXX$$$$$X$$$$$$XXXXXXXXXXXXXXXXXXXXXxxx+;::::::::::::::::;::::;+
+XXXX+;++XXX$$$$$$$$$$$$$$$$XXXXXXXXXXXXXXXx+++;:::::::::::::::;;;;:::;:
xXXXXXx;;+XXX$X$$$$$$$$$X$$XXXXXXXXXXXXXx++;;;::::::::::::;;;;;;;;;::::.::....
;+XXXXXXX$+:;XXxXXXXXXXXXXXXXXXXXXXXXX+++;;:;:::::::::::;;;;;;;;;;;;::::..........:.
:::::;XXXXX$$$$$Xx;++x+xxxxxxxxxxxxxXXxxx+;;:::::::::::::;;;;;;;;;;;;;;;::::..............::
:::::::::;xXXX$$$$$$$$$$XX;;++++++;+;++x+++;;;::::::::::::::::;;;;;;;;;;;;;;;;::::...............
:::::::::::::.:+xxXXX$$$$$$$$$$$XXxX+;:;::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;::....:...........
:::::::::::::::::::.++x+XXX$$$$$$$$$$$$$$$XXXXx+++++;;;;;;;;;;;;:;:::;;;:;;;;;;;;;;;;;;;;:;:::....::.........