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