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