;;+xxx+++x++++xxx+$$&&$$$$$&&&$$$$$$XXXXXXXXXXXXXxXXX$XX$$$$$$$$$$$$$$
;;+xx++++x++++xx++$$&&$$$$$&&&$$$$$&$$XXxxXXXXXxxxXXXXXXX$$$$$$$$$$$$$
;++xx++++x++++++++$$&&$$$$$&&&$XXXXXXXXxxxxXxxxxxxXXXXXXXX$$$$$$$$$$$X
;++xx+++++++++x+++$$&&$$$$$&&&XXXXXxxxxx++xxxXXXXXXXXXXXXXX$$$$$$$$$XX
;+xxx+++++++++++++X$&&$$X$$&&$XXXXXXXxxX+xxxXXXX$XXXXXXXXXXX$$$$X$$$XX
;+xx++++++++++++++X$$$$$X$$&&$XXXXXXXxxXxxXXXXXXXXXXXXXXXXXXXX$$X$$XXX
;+xx++++++++++++++X$$$$$X$$$&$$X$$XXXXXXxxXX$XXXXXXXXXXXXXXXXXXXXXXXXX
;+xx++;+++++++++++X$$$$$X$$&&$$$$$$$$XXXXXXX$XXXXXXXXXXXXXXXXXXXXXXXXX
;+xx++;+++++++++++X$$$$$$$$&&&$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXXX$XXXXXXX
;+xx++;+++++++++++X$$$$$$$$&&$$$$$X$$$$XXXXXXXXXXXXXXXXXXXX$$$$$$$$$XX
;+xx++;+++++++++++X$$$$$$$$&&$$$$$$$$$$X$XXXXXXXXXXXXXX$&&&&&&$XX$$$$X
;+x+++;+++++++++++X$$$$$$$$&&$$$$$$$$$$X$$$XXXXXXXXXXX$$$$$$&$XxXXXXXX
++x++;;+++++++++++X$$$$$$$$&&$$$$$X$Xx++++xxXXXX$XXXX$&&$$$$$Xxxx+xXXX
+++++;;+++;+++++;+X$$$$$$$$&&$$$+::.........::;XXXXX$&&&X$$XXxxxxxxxxx
+++++;;;++;+++++;+X$$$$$$$$&X+:.....:........ .;xXX&&&$$$Xxxxxxxxx++x
++++;;;;++;;++++;+X$$$$$$$$x:.......::...:.. . :XXXXxxxxxxxxxxxX$
++++;;;;++;;+++;;+X$$$&&$$x. .... ::. . :xXxxxxxxx$&&&&&&$$
++++;+xX++;;+++;;;X$$$$&$$; ..... .::....... .+xxxx+x$Xxx++++;;
;++;x$&$$x+;++;;;;x$$$$&$$: . ...:;::...... ;xxxXxx+;;+++xxxx
;++;;x$$$X+;++;;;;x$$$$$$X. ...:;++++++;:... :xXxxX$Xxxx+++;;;
;++;x$X$$X+;++;;;;x$$$$$$X.. ..::++xxxxxx+;: .. .x$&&&$X+++++++++
;+;;;xXX$&$+;;;;;;x$$$$$$x......:+xxxXXXxxx+;:.:. .x&&&&$Xx;:;;;+xx
;+;;;;xXXXXX+;;;;;+$$$$$$+:....:;;+++xXXx++;;::::. .x&&&$$XxxxXXXXXX
;;;;;xXXXxxxXx;;;;+X$$$$X:;+:..:++;::+xx++;:::;;: .+$$$$XXX$$$$$$$$
;;;;+XXXXx+xxxx;;;+$$$$$X:;+:...;+;+++xxx++++++;: ;XXXxx++XXX$$$$XX
;;;+X$XX+;;+xxxx+;+$$$$$XX+:+;::+xxxXXXXXx+xxx+;. :xXXXx;. +XXXXXXx+
;;+X$Xx+;;;;+xxxXx+$$$$X$$x++;;;:+XXXXXXXx+xxx+: .xXxxXXX$$XXxxxx+;;
;+X$Xx+;;;;;;+xxxXX$$$XX$Xxxxxxxx++xXXXxxx++x+; .xxxxx$&&&&&&$X:...:
+X$XXxxxxxxx++xxxxXXXXxXXX$$XXXX&&Xx+xxxx+xx+: ;XXXX$&&&&&&&$;:...
XXXXxxXxxxxxxxxxxxxxX$&XXXXXXXXX&Xx+:;+xxx+;. :;;+x&&&&&&&&&$x;;+
XXXxxXxxXXX$$$XXXxxxxxXXXXX$XXX$$xx;.;;+;;:. :++++xX$$$$$&&&$$$Xx
XXxx&&&&&XxxXXXXXXXXXXXXXX$$$XXX$Xx;.:;;;:. ;+xx+;+++xxxXX$$XXXx
x+x$&XxXXXXXXXXXXXXXXXXXX$$$XXxXXXXx::;;;: :;;;;;;;;;;;;;;;++;
x$&xxxXXXXXXXXXXXXXxXxxXX$$$XXx++XXx;;;::: .. .;;;;;;;;;;;;::::::
&XxxxxXXXXXXx++xxx+++xXXX$$XXxx;x$X;;;;;;:.. .;;+;;;;;;;::::::::
xxxxxxXXXx+;+++;++++xXXXXX$XXxx+$$+;;;::::.. .;++;;;;;;;;;::::::
xxxxxxx+++++;;+++xxxXXXXXXXXXx+xX+;:::...:;: ;++++;;;;;;;;;::;;:
xxxxx+++++;;++++xxxxxXXXX$$XXx;;;:...:;+++;;. :;+++X$Xx;;;;;;;;;;:
xxxx++++;;++;;xxxxxxxxxX$$$$Xx++;::;+++x++;;: :;++++$&&&&&$$$x+;;;:
xxxx+++++++++++xxxx+++xX$$$XXx;+xx+++x;;++;;. ;+xx++&&&&&&&&&&&&$$$
$Xx+++;+++++++xxxxxxxxxX$$$XXx++xxx+xx; :+++++;..;xxx++$&&&&&&&&&&&&&&
&$Xx+;;;;::;++++++++++xXX$$XXx++xx++++x::xxxXXXX++xxx++&$$$$&&&&&&&&&&
&&&$$$XXXXXXx+;;::;+++xXX$$Xx+;;+xxxxxx++xxXXXXXXXXXxxxXXXXXXxX$$$$$&&
&&&&$&$$$$$$$XXXx;: .;xXX$XXx+;:::;x;;;;;xXXXXXX$$$$$Xxxxxxxx+;+xxxXXX
&&&&&&&&&$$$$$$$XXx;;:xX$$XXx+::.....:+XX$XXX$$$$$XX$$$X+:..:;::;;;:..
&&&&&&&&&&$&&&$$$$XXx+XX$XXx+;. .;xXX$$$$X$$$$$$$$X+xX$$X;.......:.
&&&&&&&&&&&&&$$$$$$$$$XXXXXx++:+XXX$$$$$$$$$$$$$$$$$$+.:XX;..:.::::;X$