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