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