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