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