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