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