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