!!!!!!!!!!!!!;;;;:;;;;;;;;;;;;!*=#@@###$%??%##?>?%+;;;;!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!;;;::;;;;;;;;;;;;*>#@@@@@##$%?>$$?=%&=!;;;!!!;!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!;;;;;--:;;;;;;;;;;;!+%#@@@@@###$&!;=?%$$&*;;;;;;;;!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!;;;;;--::;;;;;;;;;;;!?$@@@@@@####&~.*=$$$$>;;;;;;;;;;!!!!!!!!!!!!!!!!!!
!!!!!!!;;;;;;;-:;;;;;;;;;;;;;*=#@@@@@#####>.'~+$###=;;;;;;;;;;;!!!!!!!!!!!!!!!!!
!!!!!!;!;;;;;;:-;;;;;;;;;;;;;)%##@@@##$&$$:,,^:=###%;;;;;;;;;;;;;;;;;!!!!!!!!!!!
!!!!;;;;;;;;;;;-:;;;;;;;;;;;;+&#@@@@##&&$>!>?)-*%!%%;;;;;;;;;;;;;;;;!!!!!!!!!!!!
!!!;;;;;;;;;;;;-:;;;;;;;;;;;;>$@@@@@#$$&=~:=&>*-)-?%;;;;;;;;;;;;;;;;!!!;!!!!!!!!
;;;;;;;;;!**!;;:~;;;;;;;;;;;;=$@@@@$=>+?+,,--^,^;!==;;;;;;;;;;;;;;;;;;;;;!!!!!!!
;;;;;;;;;*=?>+*!:;;:;;;;;;;;;?$@@@@&?)*+>,.,,,,^^!$?;;;;;;;;;;;;;;;;;;;;;;;!!!!!
;;;;;;;;;;!)>==?+));;;;;;;;;;+&@@@@&?++?>^,^^^^*)&&>;;;;;;;;;;;;;;;;;;;;;;;;;!!!
;;;;;;;;;;;;;;!+==+!))!;;;;;:*%@@@@#=>>?>:,,^^-$%&=+;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;!++>==>+;;;::!&#@#@@%?>?>!~^^~>$%&?+:;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;:;=$%!;*++::::;>%$@#@@#=>==>!~~!@$?&=+;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;:;>=)%;*!::;::;*=%#@#@@@$?>);~~~)@#%$&>!;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;::!?$&);:?*:::::;))%@##@@@$%?):~~^*@#%&#%);:;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;!=$&!*+!$%;::::::*&$#@@@@$%=>!~^,:@@$%$$=);:::;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;:?###=+*??>:::::::>$#@@@@@$%?+:~,,,?@##$$$=*::::::;;;;;;;;;;;;;;;;;;;
;;;;;;;;;:::>$&??>)**)::::;!+&@@@@@@@&=*!:~,.,;>@@@#$&>*;::::::;;;;;;;;;;;;;;;;;
;;;;;;;;;:::*&&+)>!;>;:::;*)?$@@@##$&&?!---^^:~^:%$$?+*!;::::::::;;;;;;;;;;;;;;;
;;;;;;;;::::;%&=*++)+::::--:;*=$?+>>++?!^-;:;-~~-*)=+~^^^-::::::::;;;;;;;;;;;;;;
;;;;;::::::::>&%?>=%!:::~-;;;+&=***!!!;*^:+!~~~^^;~=?-,..,-:::::::;;;;;:;;;;;;;;
:;;;:::::::::*$$%=%%:::-:*!!*&&!!!!!!;:!:!)-^^^,~+.)?!.....::::::::::::::;;;;;;;
:;;::::::::::>#$&%%%;::-))*)=$?:;;!!;:--)*-~~^^^-+.~=)..,..,::::::::::::::;;;;;;
:::::::::::::?$&%=?=;:-*+))?&&)::;;;::-~+)--~~~~-!''?+,,,,,.-::::::::::::::;;;;;
:::::::::::::?&&%??=!::+++>&$%*:-;::-~~~;!::::-~~,``!?~^-~^,,:::::::::::::::;;;;
:::::::::::::?$&%??=;:!>+>=&%>;~~--~~^^^~!)*!:~^.'``,>!+);-^,-::::::::::::::;;;;
:::::::::::::;+$$&&)::*>+>%==!-^,,^^^,,,-++*;-^..'```+?=+;-^,,-:::::::::::::::::
::::::::::::::!$#&%+::!>>?&$+;-^......,,!>):^,,..'```~==?*-^..,-::::::::::::::::
::::::::::::::!$#&==--!>=&$=);-^.''''..,^^,^^^,.''```'>%=+;-,..,!:::::::::::::::
::::::::::::::!$#$=&--+=%$#>)!-^,.''''..,,^^^^^,.'````)===+!-,.,?+::::::::::::::
::::::::::::::!$#$=$:;?%&$$+)!-~,,......,,^^^^^,.'````)=+?=+!--)?=):::::::::::::
::::::::::::::!$##=$+&#$$&$+)*;-^^,,,,,,^~~~~~^^,.'```?%)+>=??&&==%?%!::::::::::
::::::::::::::!$##=%#@@@@@#?**!:-~~^^^~~~-----~~^,.'`^&&>+;)$##$&%=%#$!:::::::::
::::::::::::--!$##%=@@@@@@@$)*!;:------:::::::--~^,..)$$=+:-*$##$&=+&@&;::::::::
::::::::::----*$##&?#@@@@@@#?)*!!;;;;;;;;!!!!;;:-~^^:=#$&*:--*$@##&==@@)::::::::
::::::::------*$##$?$@@@@@%##?+)*!!!!!;;;;!!!!!;;::**$$&?*----*$@@#$=&@=::::::::
::::::--------*$##$%&@@@@&+##%=>))*!;:-----------~-!?#&&+!----->@@#&>%@%::::::::
::::----------*$###&&#@@@)+$#%=>+)!:-~~~^^^,,,..',!!&##=*:-----!@#&)*&@?::::::::
:::::---------!&###$&#@@&:)&$$??+)!:-~^^^^,,.''''^!?##$>:------&@$>!>&#*::::::::
-::-----------;&###$$##@*:!=&$??+)*;-~~~^^,,.''`';+%#$&?:----->#$=*)%&>:-:::::::
--------------:=$##$$##%-;:+=#%?>)*;-~~^^^^,..''.)=&#&??;----;$#%)*=%*:---::::::
---------------?$######*:*;:*$&?>)*;-~~^^^^,.'''-%=$$=!+!----?#&+*=%*--------:::
---------------)$$####?-:+:!?#$=>)*;-~~^^^^,.''.)%%$=*-?:---!#$?*?%)-------:::::
---------------:%$##@%:--!??=$$?+)*;-~~^^,,,''',???=*-*)----&#%*>%)----------:::
----------------*$$#&;---:;>&&>+>)*;:-^^^^,.''':!;^*:*):-:*>#&)+%)------------:-
-----------------;**:----;)?=++)+)!;:-~^^,,.'',*,;,~);--:=&&%>)=)---------------
--------------------------:;!??+>+*;:-~^^,,...;!-)+%?--:=&%=>*>)----------------
---------------------------->$&#&%&=>)*;!*+>?=+)>>*+%++%#$%>!!+*----------------
----------------------------=#$#$######%%$&&%%??=*~)#&==?$#=*+?+----------------
-------------------------;*!=#@@@@@####>?$$$&%==+!?&&&%??>%#%?>!----------------
----------------------->?%=%$##@@#########$$%=?%?=!-$#$&???&#?;-----------------
-----------------------=#$&&$#########&&&&%&&%==?;;>%=%&%??%&;------------------
-----------------------=#=#&$$$$&&&&%&&&%=>==??=*)?)-*#@$=+!:-------------------
-----------------------=#$#&$$$$&&%%&&&&%=?====%?=)!+?&>;+:---------------------
---------------------~-=#&$&$@########&&%%=&&&%%==?>>?+;>-----------------------
-----------------~~-~~~!&$#&#@#######@######$$$$$$&%=&=%%!~~--------------------
----------------~~~~~~-:=#@#@@@@@########$$$$&&&&%%&%=?=&?--~~------------------
--------------~~~~~~~~->$#@@@@@@@@@########$$$$$#$$%%=?=&%;-~~~~----------------
--------------~~~~~~~~:=$#@@@@@@@@@###############$$&%%=%&*~~~~~----------------
-------------~~~~~~~~~!%$#@@############@@########$&%==?%&)~~~~~~---------------
------------~~~~~~~~~~)&$#@######################$$&=+*)=&>~~~~~~---------------
----------~-~~~~~~~~~~+&#####$$###@@@@@###########$&?+)>%&?-~~~~~---------------
---------~~~~~~~~~~~~~+&#####$$$$$$##############$$&=>+>%&>-~~~~~~--------------
---------~~~~~~~~~~~~~)&$#####$$$$####$$$$$$$##$$$$%?>+?%&+~~~~~~~~~------------
--------~~~~~~~~~~~~~~;$=+))+?%&&$$$$$$$$$$$$$$$&%=?+*?>!;-~~~~~~~~~~-----------