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