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