.:+X$$X+:
;+$&&&&&&&&&$$$$$XX$X;
:x$$&&&&$$$$$$$$$&&&&&&$$XxxXXX$$$$$$$$$$$$Xx++x$$$$XX$&&&&&&&&&&&&&$$$$X+
:$&&&&&&&&&&&&$XX$$$$$XXX$XXXX+;;++xXXXXXXXXXXXX$$$&&&$$$$$$$$$$$$$$$$$$XXXXXXXXxX+
:XXX$&&$$$$$$$$$$$$$XXXXX$$&&&&&&&&&&&&&&&&&&&&&&&&&&$$xxxxxX$$$&&$$$$$$$$XX+;++++XXx+;XXxxXXx;
XX+$$$XXXXXXXXXX$$&&&&&&&&&&$$$Xxxxx$&&&&&&&&&&&&&&$$$XXX$&&&&&&&&&&&&$$$$$XX+::$$$$$$&&&&$$$$$$$&&$
:$$x;$&&&&&&&$$$&$$&&&&&$&&&&$$XXx++;x$&&&&&&&&$$$$XXxx++$&&&&$$$$$$$$XXXXXXx++$&&&&&&$$XXX$$$$$XXXXXX$$$X
+$$$&&&$$$$$$$$$$$$$X$XX$$$$$$$$XXx++;:$$$$$$$$$$$$XX++;:x$$$&&&$$$$$$$XXx++++;;;$$$$$&&&$$$$XXxX$$$XXXXXXXXXX$+
:$$$&&$$$XXXXXXXXXXXXXxxxX$$$$$$$$XXXx+;:X$$$$$$$$$$XXX+;: +X$$$$$$$$$$$$$$$x;:::. x$$$$$$$$$$$$$$X++xXXXXx+++xxxXXXX+
:$$$&$$$$$Xx++;;;;;;;;;;+XX$$$$$$$$$XXXx+;:+XXX$$$$$$$XXXx+: .xXX$$$$$$$$$$$$XXXx++. .++xXXX$$X$$$$$$$X;:;+++++++++++xxxXXX;
x$$$$$X$$$$$$X+. .X$$$&$$$$$$$$$$$$$$$$XXX+: +xXX$$$$$$$XXXx+: ;+++XX$$$$$$$XXx+++;;::::;X$&&&$$XXXXXXXXX$:;;;:+$$&&&$X++++++xx;
;$$&$$XxxXXXX$$X+ X$$$$$$$$$$$$$$$$$$$$$$$Xx: :+xXX$$$$XXXXx+;: ;+X$$$$$$$XXXXx++;;::.:X&&&&$$$$$XXXXXXXxx+x+ :$&&&&&&$&&$X$$$$$$$$X;
.$$$$XXXXx;;++$$$$$x +xXX$$X$$$$$$$$$$$$$$$$$$$X: :;+xxXXXxx++;:;X$$$$$$$$$$$XXXXx++;;. x$$$$&&$&&$$X++xxx++++;;:+XXXX$$$$$$$$XxxxxXXXXXXXX+
+$$$XX$$$$$$$$$$$$$$X+.++++xxxxXXX$$$$$$$$$$$$$$XXx :;;++;;::+$$$$$$$$$$$$$$XXXXx++;:. .xX$$$$$$$$$$$XX+;++++;:: .xXXXXXXXXXXXX+;;;+XXXxxxXXX$X
x$&&&$$$$XXXXXXXXX$$XX+.;;;;;;;+++xXXX$$$$$$$$$$XXXxx+ .::.+$$$$$$$$$$$$$$$XXXXx++;;: ++XXXXXXX$$$$XXx+;.... ;;+++++xXXXxxxx;xXXXXXX$XXxxXXXX;
&&$$$$$$XXx++++++++xxxx;.::. :;;;++xXX$$$$$$$$$XXx++ +$$$$$$$$$$$$$$$XXXXx++;;:: :+xXXXX$$$XXXXx++;: ;X$$$$$$$XX+;;++++++;:+XXXXXXXXxxXx++xx.
&&&$$$$$$XX$$$$XXXx++;:;;;::xX$$$$Xx+. .:;;;+xX$$$$$$XXXx+;: +$$$$$$$$$$$$XXXXXXx++;;:. .;X$$$$$$$$$XXXx++;;:. ;$$$$XXXXXXXXX$$$$X+;;;;.;xxXXXXXXX$x++Xx;;:
&&XXXXXXX$$$$$$$$$$$$XX+: x$$$$$$$$$$$$$x; :;+X$$$$$$XXx+;.;X$$$$$$$XXXXXXXXXXx+;;:..+$$$$$$$XXXXXXXxx+++;;::X$$$$$XXXx++++++xxXX$$$X;:..;+XXXXXXXXXX+++x$&
$XXXXXXX$$$$$$$$$$$$$$XX+;.+$$$XXXxxxX$$$$$$$$$$$$$$$$$XXx+;: X$$$$$$$XXXXXXXXXx++;:.+$$$$$$$$$$XXXXXx+++;;;:;$$$$$$$XXx+;..+XXXXXXXXXX$$$$x;;+xXXXXXXXXXx:;;+XX:
.&Xx+xxx$$$$$$XXX$$$$$$XXx+:;XXXX++;;;+X$$$$$$$$$$$X$$XXXX++;:.:XX$$$XXXXX+++xxx+;;::+$$$$$$$$$$$$XXx+++;;;: ;X$$$$$$$$Xx+ ;XXXXXXXXXXXXXXXXXX$$$XxXXXXXXXXXX:.:;;+XX
$$Xx+++$&$$$$$Xx;++XXXXXXX+;:X$$$X+;. :X$$$$$XXXXXXXxxxxx+++;;. +XXX$$XXXXx+:;++;;::;$$$$$$$$$$$$$XXXx;:::. .X$$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXxxxxXXX$XXXXXXXXXXxXX$$$&$$
;&&$X:;+$$$$$Xx;:::.:+XXXXXXx+X$$$$$$$$$$$$$XXx++++++++;;;;;;;:. xX$$XXXXXX++; :::..x$$$$$$$$$$$$$XXXx+: ;xX$$$$$$$$$$$XXXXxxXXXXXXXXXXXxxxxx+++xxxXXXXXXXXxxxxxXXXXXX$$+
$$XX$$X$$XX++;::;XXXXXXX$$$$XXXXXXXXXXXXXXXx++;;;:::::::::::::: XX$$XXXXXxx+;: .+X$$$$$$$$$$$$XXx+;. :++xX$$$$$X$$$XXXx+++xXXXx++++++++++++++++;;;;;+xxxxxxxxxx+xx+xX$$;
XxX$$X$XXx+;:::XXXXXXX$$$$$$$$$$XXXXXXxx++++;;:::... :: +XX$$XXXxxx++;. +xX$$$$$$$$$$$XXx;. :++: :;+xXXXXX++XXXXx+;;:;++xxxx+;;;;;;;;;;;;::::::::;+++++++++++++++xXXX
;&&&$XXX$$X+;: ;XXXX+;+XX$$$$$$$$XXXx+++;;;;;:::. .;+++++;:. ;XX+.;XXXXXXXXxx+;;. +xX$$$$$$$$$$$XX+; .xXX+; .;++xXXxx;.;++++;:.:;++xXXXXXX+++;;;:::. .:+x++;:;;;;;;;+++;;+++XX
$&&$XXXxXX$$Xx: +XXXx+:.+XXXXXXXXXXx++;:::.. :+xXXXXXXXXx+;: :xXXx;:xXXXXXXXx++;: ;+xXXX$$$$$$$$XX+; +xXx+;. :;++xXXx+;..:;: .;++xXXXXXXXXXxx+++++xXXXXXXXXXXXXXX:. :;;+++xx++;++X:
X&$XXXxx+xXXXXX+ ;XXXXX+: ;xXXXXXXx+;;:. .+x+;: +xXXXXXXXXXX+;: +X$Xx; +X$$XXXXx+;;: ;+xXXXX$$X$$$XXx+; :+xXx++;..;;+xXXX++; :+xxXXXXXXXXXXxxx++xxxxXXXXXXXXXXXX;;+:;X$XX;;;;+x+;;+x;
$$XXXXX$x:;xXXX+.;xXXXXx+: ;xxXx++;::. +xXXXX++: ;xXXXXXXXXXx;;:;+X$XX; +X$$XXXX++;: .;+xXXXX$XXXXXXx++; :+xxxXxx+;;;+xXXXx+;: ;+xXXXXXXXXXXxxx++++xxxXXXXXXXXXXXXxxx;::+XXXXXX+;;+x+++X:
+XXXXX$$$X+.;+++::+xXXXX+;: :;;;;;::. :xXXXXXXX+; :+xxX$$XXX++;::+XX$Xx;.+XX$XXX++;;. :++XXXXXXXxXXXXX+;; ;+xxx++++xxXXXXx++;: :;xxXXXXXXXxxxx+++;;;+xXXXXXXXXXXXx++++;+XX++xXXXXX+;;+x;+X
:XXXX$$$$$$$Xx; .;;++++;:. ..... .xXXX$$XXXx+::++xXXXXX++;::;+X$$X+;:XX$XXXX++;: ;++xXXXXXx+xxxx++;; ;++++++++xxxxx++;;: ;+xxxXXXXXxxx+++;;:. +xXXXXXXXxx++++++++++xxxx++XXXX+;++x++x
xx+++$XX$$$$$XXXx+. .::::. :XX$$XXXXXX+;.;+xxXXx++:: :+XX$Xx+;;xX$XXXx+;;. ;+++xxxxXx++++++++;: ;;++++++++++;;;:. .;++XXxXXXXXxx+++;;: +xxxxxXXxx+;;;;+++xxx+++++++++xxxx;;+xxX;
;;;;;XxxxxXXXXX$XXX+: :xXXXX+;: :xXXXXXXXXXx;.;++xxx+;:. :;xXX$Xxx++XXXXXx+;;: :;+++++++x++;++++;;;:. ;;;++;;;;;;::. .;++xXXXXXXXXxx++;;: ;xxxxxxxx++;: ;+++++++x++++++++++++x;;+xX+.
+;::;X++;+++xxXXX$XXx+;. xX$$$$X++: ;xXXXXXXXXx;::++xx+;:. ;+xXXXXXXXXXXXXx++;:. ;++++++++++;;:;;;;;;:. :::::::::.. .;;+xXXXXXXXXXx++;;:. ;++++xxxx++;: :+++++x++++;;;;;+++++++x::;+x;
+::$+;;;;;;+++xXXXXXX+;: ;+XXX$$Xx+;;+xXXxxxxxxx+++++++;: ;++xxXXXXXXxxxx+++;:. ;++++++;+++;;:: .:::.. . :;++XXXXXXXXXx++;;:. ;+;;+++++++;: :++++++++;;::::::::::::;;::;x;
X$$X+;:::::;;;++xxXXXXx+: .;+xXXXXXx++xXXxx+++xxXxx+++;: :;++++++++++++++;;;:. ;;;;++;;;;;;;;::. .:;++++++++;;.::+xxXXXXXXXXx+++;;: ..:::;++++++;: .;;;;;;::: .;xx; :;;;;+;x++X
+$Xx;:::...:;;;++++xXXXXx;. .:;+++xxxXXxxxx++;;++++++;:: :;;;;;;;;;;;;;;;:::: .::::::;::::::::. :;++xxXXXXX$$XX$XXx++xXXXXXxxxxx++;;:: .;++;;++++++++;. ::... :;+++x+;;;;;;;+:;xX$.
$X++;:::::.. ;;;++xxxXXXXx;: .:;;;++++++x+++;;;;;;;;: .::....... ..... ........ :;+xxxXXXXX$$$$$$$XXXXXXXXXXXXxx++++;;;:: :+++++++++++++++;: .;+++++++++:;;;;;+.:;xX
x$x;;;;;::::. ;;;+++xxXXXXx+: ::;;;;;++++;:::::::. .... .;+++xxXXXXXXXX$$$$$$XXXXXXXXXXXXXx++++;;;::. .;++++++++++++++++;;;;++++++++;;:::;::;;;;;.:;;++
++;:+;;;;;;::. ::;;;+++xxXXXX+;: .:::;;;;;;:. . :;+++XXXXXXXx++;:. .++xXXXXXXXXXXXXx+:+xXXXXXX$XXXXXXXXXXXXXxxxxxxx++++;;;;:::::. .;;;++++++++;+++++++;;+++++++++;;;;. :;;;;. :;;;++
;++:...;;;;;:::;:. :::;;;;++++xxx++;:: .::::::. .;xXXXXXXXXXXXX$$XXXXx+XXXXXXXXXXXXXXX$$XX++XXXXXXXXXXXXXXXXXxx+++++;;;;;;;;;::::::. :;;;;;++++++;;;;+++;;;;++++++;;;;;;;;;..:;;;; .:;;+X+
+;:::. ::. ::.;:::::::;;;;;;;;;:::. :xxXXXXXXXXXXXXXXXXXXXXXXXX$XXXXXXXXXXXXXXXXxxxXXXxxx+xxxxxxxxx++;;;;:::::::::::::.. :;;;++++++++;;:.:;;+;;;;;:;;;;;;;;;;;;;;.::;;; ::;;X;+
x;::.. .:: :;;:::::.:::::::::::.. ++xXXXXXXXXXXXXXXXXXXXxXXXXXXXXXXXXxxxxxxxx++++++++;;;;+++++++++;:;::: :;+++xxxx++++++;;. :;;;;;;;:::;;;;;;:::::;;:.:;;; .::;;+X;
:::.... .: .;:.......... ;+++++xxXXXXxxxXXXXXXx++xxxXXXXXXxx+++++++++++;;;;;;:.::;;;;;;;;;:.. .:;++++++xxx++++++++;;;: .:;;;;;;;: .;;:::::::::;;.:.:;: ::;;;+X:
::........ . .:..:+;::.... ;+++++++xxxxxxxxxxxxx++++++xxxxxx++++++++;;;;;;;;;::: ::::::::::.. :;+;;;;;;;++++xxxxxxx+++++++++;;;;: .;;;;;;;;: ::: .::;::;. .:;; .:;;;++X
;::............ .::. ::;;;::.. :;;;:;;;;;;+++++++++++++;;;+++++++++;;;++;;;;::::::::. ... .:;;;;;;;;;;;+++++++++++++++++++;;;. ;+++++;;;:. ::;;;;;:;:.::;;: .:;;;+:+.
;::... . : x+xxxx;::::::;;+;;;;;;+;;;:;;;+;;;;;;:.:;::::::::.... :;;;;;+;;;;;;;;;;;++++++++++++++;;;;: .;++x+++++;:. ;;;;;;;:::::.::;;; .:;;;::++
;::.... ... :. .+++;;++++:....::::::::;;;: :::::::::. :;;++++++++:::;;;;;+++++++;;;;::;+++++++++++;;;;; ;++++;;;;;;:. :;;;;;:..:::: ::;;; :::;+ :;X
;::............ . ;;: ;;;;;;;;++;: ..... .. .;;;;;;;;:: .:;;++++xxxxx+++++;;;;;+++++++;;;;;:. .:;+++++++;;;;;;;:;+++;::::;;;:: :;+;;;:. ::::;.:::;;.;;X
:;:......:..:........ ;;.::;;;;;;;+;;: . .;;;;:.;+++++++++++++;++xXXxxxxx+++++++++++;++++++;;;;;:::.. .:::;;;;;;;;;;;;++;;: .::::;:: ;;;;;;;::::: .::;..::;;::+X
++:.....::................ ++;:..::;;;;;;;+; :;;;;;:;+++++;+xxxxxxxxxxxxxxXXXXXxx+++++++++++++++++++++;;::. ..:::::;;;;+;:. .::::;;;: :;;;::::::::::. .:: :::;; ;X.
.:::....... ............;++++;::.:;;;++++: ;++++++++++++++++xxxxxxxxxxxxxxxxx+++++++++++++++++++++;;;:. ;+xXXXXXXXXXX+;: .::::. ::::;;;;;: :....:..::::::::::: ..::;.;X:
..::::. ..........+x+;+++;;::;;++;: ++++xxxx++++++++x+xxxxxx++++++++++++;;;;;;;;;:;;++++++;;;+XXXXXxxxxxxxXXXXXXXxx+;;. .:::;;;;;:: ......::::::: .:::.++;
. ..... .........x;++;;+++++:.::: +++++xxxx++++++++xxxx++++++++++++;;;;:..::::. :;;+++++++xXXXXxxxx+++++xxx++++++++++;:. ::;;;;;;:. :;;;:. .....:::: .::::+++
..:::::::;::::;;++xxx+: +++++xxxx+++++;;;+++++++;;;;;;;;;:::: :::;;;+++++++++++++++++++++;;;;;;;;;;;;: .:;;;;;::::;;;++++;;;;: ...: ..::;;X+X
.::::+;::. ;+xXXXx: ;Xx++++++++;;;;;;;;;;;;;;;;;;;;::::. .;;++++;: .:;;;;::;;;;;;;;;;;;:::.....::;;;::. .:;;::::;;;;;;;;;;;;;+++. ..::;+X+X
;+++;;;:: ;+xxX+ ;+XX;;;;;;;;;::::... .::.. :;+xXxXXXxXXx+++;: :::;;:::::: .::::::;;;;;;;;;;;;;;++++;:. ..::++++X
;;++++++++; ;++x+: ++Xx+::::::. :;;++++++;;:. :;+xxxxXxxxxXxx+++++++++xxx++++++;:. .:::::::::::::: .:::::;;::::::::;;;;+++++;; ...:;;++++
;:++;;;;;++;;;+++; ;+;;+;. :++;;;;;;;;;;;;::;+;::;;++xxxxxxxx++;::;;;+++xxxxxxxx++++;. ...:::::::::::: ...........:::;;;;+++++;..::;;;;+:
.:x;;:::;;;;;+++++:.+xxx+:.;+++++;;;;;;;;;;;::;+++++;::;++++++++;;:..:::;;;;;;;;;;;;;+++;: .:: .::::::::::;:: :::;;;+++++;::::;;+
:+;:::::+;;;++++;; :+++;;+++++++;;::::::::::::::;;;;;;;;;;;;;;;;:::::::::::::::::::::::;;;: .:::. .:;;;::;;;;;;;;;;;;;;;;;;;;:. .::;;+++++;;::;+:
::+;:::. ;;;;;;;;:. ;+++++++++;;;:::::::::::..::::::::::::::;;;;;;;;;;;;:::........:::::::;:::::::. ::::;;;;;;;;;;;;;;;;;:::::: .::;;;+++++;;+;
:;x;::. ;;;:::::. ;;++++;;;;;;;;:. .::::::....::.::::::::::::;;;;;;;;;;;;;:: ...::::::::: :;;;;;;;;;;;;::::::::::::: ..:::;;++++;+:
:++;. ;;::.. .:::;;;;;;;;;;;;;;;:. :......................:.:::::::::::::::.. ..... .:;;;;;::::::::::::::::::;;: ..::;+++xX
:;+;:..:;. .:;++;:::::::::::::::::::.. ..:::::::::...::;;::::::.....::.:..:.... .:::: .:;::::::::.......::::::::;;; .::;+XXx
:;x;::. :;:;;;;;:::::..:.:::::::::::::..... ::::.. .. .::::::. ::::::::..............::::;;; .;: ;
;:x;:: +;;::::::.............::::. .:::::: :::::::: ...::;;;++xX:.
::+;:.. :.+:::..::....:::;;..:::;;: .. . ::. .::::::::::::::.. ..:::;;;+X$::
::;;:...;: .;+;;;;;;++;:. :: ::..... :;;::. ... .. .::::::::::::::. ..:::;;+X$$:
::::;;++:... ::+;. .; ::. :;;;;:::.... ... .........::.. .: .:;;+xXX$+
.:::.::. ....:. ::. . .:::.:;;:::. .. .. ... .....:::::: :;+xXX;
;:.. . ...::::::..:::.:;:::.. . ......::::;;+;:+xX
;:... . . ....::::::..:::::::.. ........:::;+X++x+
;:... . .. ...::.:: .::::::.::...:. ... ........ :;+xXx+
;:... : . :.:..::.::..:. .::::: :. .. . ..::;;++XX+x
;:.... : : : :..:..::.::: .:. ..:. .. : . +:;++++x+:++
;:..... .: : : :: .:..::..:: ::. .. . .. .. ..: ::..::+x
::....... . :::...... ::. :. :. ::: :. .. .. ...
;:........ .. :.: :. .. .:. .:. .. .:: .. .:;;++
::...... .::.: .: . :: .:. .. ..: . ...:::;;
::.. ::.:... . . :. .. .. .. .::;+x
:: :.: : . .. .. .::;;
.... .:..... : . .. . ..:;++
::..... . : . .:.. . ..::+;
:::..... . . . ...:. :;
;;::.... . .:.: . .. .::;:
;;::::.. . ...::: ... :;;;+x
:;::::... . .:;:. .::.. .::;;++
;;:::::. . ..:::.: :++;:.:;;+++
:::::...... ...:::
::::::::.. .:
::::::::..
.::::::::....
::::::::::.:
:::::::::::
::::::::::..
:::;;;::::.:
::;;;;;:::.;
:;;;;;;:..;
:;;;.