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