;;!******!!*!!;;;!:::;::-~~~~~~~~~~~~:+!;;:;::::;;!*+????======%*-~-~~----------
;;!*******!!!!;;;;--~~-~---~~~--~~~~-*!;;;;::::::::::;!*??=======%*-------------
!;!!!;:;!!!!;:------~~~-----~~~-~~~~*!;;:::::::::::::;::;;*+======%%;-----------
!;!;:~-~~---------~-~~~~-~~~~~~-~~~*++***!;:::::::::::;;;;;;!*=%=%%$$*----------
;!!!;--~~~~~--::;!!*+++????+++**;;!&&==????=?+*!;::::::;;;;;;*!*=%&$$#?-~-------
!!!!!:~~~-;*?=%%&&&&&&&&&%%%%%%=====%=%==???+?????*;::::;;;;!!;!!*%$$##?~-------
!!!!!--;?&$$&$&&&&&&&%&&&&&&&$$$$%%&%%==%%%==??????=+!;;;;;!;;;;!*!+$###+-------
!!;;;:%$$&%%%%%%%%%%%%%%%%%%%&&$$##$$&$&=%%=%%%%==????+!!!*!;;;;;***+&###!------
!;;:!$$%======%%%%%%%%%%%%%%&&&$#########$&&=%==%%%%%===+**;;;;;!*+++?%##+~-----
!!:-%%========%%%%%%%%%%==%&&&###############$%%===%%%%%%=!;;;;;;!+????%$:~-----
!!*;%===========%%%%%%=====&&###################&$=%=%%%%=;;;;;*+**+*?===-~-~---
!!!*%========%===%%%%%====%$#######################$&&%%%%=+!;;!+??*!*==?!;!!*--
!!!!============%%%======%&#############################&&%%%?++?%%??+=?*!!!!+;-
!!!!+===========%=======%$########$########################%%%%%&&=??==??**!*+!~
*!!!!+==================&##&&==?====%%&#####################$$&&&&&%=%?;;!!*+?*~
*!!:-:?================%$&=%=?????=%&=%%=&$####################$&&$&&&%+!!*+??*-
*!!:--:+????==========%&%%%%==???=%&&=%%===&&$###################$$$$&&=+++?+:--
!!!!;---?????????==??=%&%%&&=====%%%$%==%==%%%%$###################$$$$$%???----
!!*!!:---*???????????=%&%%&$=====%&&+&=%%%=%%==%$$#####################$$$&+----
!!**;--~~-*+????????==%&%&$&%%==%%&%;+%%%%%%&===%$&$#########$##########$$$&+:--
**;--:-~~~~-????????==%&%$#&=%%=%=+%*:?&%%&&&===%$$&%$$$$$$&&$##$$######$&$$$%*-
!!;~-------~:!??????===%&$#&==&%%=;%&$&?=&&$$%==%&#$$$$#$$&&####$$$#####$%&$$$$=
!!;~--;;;;:--~:*?????=?=$&##$&&&%%$&%=;:-!!*&&===%$$#$$$#$#####$#########%%%$$#$
;:---:!!!!;;-~~-!+???==?%&#$?=%&?=%?*?===+!-;&%==%$$$#$$######$$#########&%=&&$$
!!!:;**!!!!!;::-~-;+????==$#&%*;!;!+%#$##$&?!?%==%%#$##$%??&#$$#$$#######$%=&&%&
!!!*!**!!!!!!!;;-~~-!???=%$#$$&;---:&?!%$###%!?%==%$#$&!;?=?%$#$$########%%=%%%%
!;!!!!!*!!!!!!!!:~~~-:;+==&$%*%*----+;-!?=%&!:!===%&#$==%===?######$####$=%=%%==
!!!!**!!***!!!!!;~~~~~~:*?=&%;*:----:*++=%?!;::?==%%#$???++?+$#$$&$#####$&%=====
!;;;!*!**!*!!!!*!-~~~~~~~-+$&+::------:!!;;::;!===%=$$=+?+*+*$#$&$######$$%===??
;!;;!!!***!!!!!!;-~~~~~~~;?$;;;;:----::;;;;:;;+===%=$$=*+*:;?#####$######$&===??
!;;;;;;!!!!!!!!;:~~~~~~~:!=&!;;;;:---:;;;;;;;!?!?=%=&&=?*!:!$#$$$######$$$%===??
*!;;;!;;*!!!!!;-~--~~~~--+%=+!!!;;---::;;;;;!*+:+=%=$&?;;:+$######$####$$&%===??
*!;;!!!;!*!---~~~~~-~~~--?=+;+***;---::;;;;:!*!-+===$%+++=######$$#####$#=%===??
-;;;!!;;;;!--~-~~~~~~~~--+=;;-!;------::::::;!!-?=%&%%?%%###############$===?=??
:;!!;;!!!;;:---~~~~~~~~--!=;;-:::-~------::-:;+*=%%&=?+??#############$%%===?=??
;!!!;;;;;!;;---~~~~~~~~~-:+*:!++*;-------------+=%%==*+?+$##########&%==%??=?=??
:!!;;;:;!!!;;::--~~~~~~~~--*:*?&==+:----------;?%%&?**==*%#######$$&%%===????=??
-!!;;;:;!!!;;;;:-~~~~~~~~~~~;!?=&&$?---------:+?%%?***%%*=#######$%=%?=?=?+??=??
--:;!;;;!!!!;!;:~~~~~--~~~-:!*+=%?*----------!=?&=+***?+*?$$$$=+?&%=?????**+?=??
----;;!!!;:;!;:-~~~~-~~-;!**+=%=*!:----------+=?%?+***??*+?=+*!;;%*:;*!;?!!+??++
---:!!!!!;:----~~~~~~:!+=??=+;-?+;---------:!=?+%?****++**!;!;::-!--:---!!!+?+--
----!!!!!!!:~~~~~~-*+**?%%*:~--*!--------;*??=++?=+=%?+&$%=+:!:--+:-----!!!*?+-~
------;!;!!;~-~-!+*=%?=?!-~--~~*;-----:;**?????%%%$#$$&$###%~-*:-:------!!!*?+-~
-------;!!:--;**%%=%$+:~~~~~-~-?*;::;!*;-~-?%%$#$$&&%&&&&$##;--!--------;!!!?+-~
---------;:;*=&?%$=*-~~~~~~~-:!;-:;!;-~~~~~%##$&&$%%=%&&&$$#;--:--------!!!!?+--
---------:;+?=$%?!-~-~~~~~~~~-;-:~~~~~~~~~~+#$&&=&&%??$+!+$$+-----------!;!!++--
~---------:*?%+-~~~~~~~~~~~~~~~------~~~~~~?#$$%?+%---?--:++?-----------!;!!++--
-~---------::-~~~~~~~~~~~~~~~~~~~~----~~~~~-#&&:~--~------:!*-----------!!!!??--
-------------~~~~~~~~~~~~~~~~~~~~------~~~~-&!;:::---------:*:----------!!!*?+--
----------~~-~~~~~~~~~~~~~~~~~~~~~-----~~~-*$+%&&%*-:;:---::!*-~~~~~~---:;-;++--
---------~~~~~~~~~~~~~~~~~~~~~~~~~~~--~~~-*&####$$&?=&%=;-::;**!;-~~~---~~~!++:-
------------~~~~~~~~~~~~~~~~~~~~~~~~-~~~~+$$$&&%&&$$##$&%::-!!*%&?-~---~~~~!++:-
-~----------~~~~~~~~~~~~~~--~~~~~~~~~~~-:%&%%&%%%%%&$##&&!-:!***&$!::-~~~~~-*+:-
--------------~~~~~~~~~~-----~~~~~-:*?+========%&%==%$##&+-;*****&%%=;~~~~~-:*--
--------------~~~~~~~~--------~~;?=%%%=%%???=====%%%%%&&&?:!******&#&?~~~--~-:--
---------------~~~~~--------~~;=%=%&%%%%=?====%====%%&$#$&?!!!*****%#%:~~~~-----
----------------------~----~-+=%==%===%=%====%%====%%%&$#$&=?*!*****&$?:~~------
----------------------~~-~~:?===?=???====%=?%%=%=%=%%&%%&###$&******=#&*~~~-----
------------~-~~-------~~~;=%====%====%=?====%=%=%&=$&&%$####&?*****&#&!~~~~----
-----------~~-~~~-----~~~;==========%=%==%==%%%=%=%%$%#%&$####=****+&##=:~~~----
-----------~~---~-----~~;%%%%=======%====%%=%%%=%%%&%%$&&&$###=****?$###%-~~~---
-----------~~-~-------~-%%%&====%=?======&&=%%%=%%&%&%$#%$&$##%=***?#####=:~~~--
--------------~-~----~-?%&&%=%%%%=?%?=%==$$%%&%=%%&%%%&#%$$$##$&=**=######?-~~~-
--------------~~~~---~*%$&&=%%%%======%==$#&%&%=%%&%&%&#$$######$++$######$;~~~~
----------------~~~~~:=$$$%%&&%%=====%&&=$#$%$%=&%&%&&$##&######&*+&#######+~--~
----------------~~~~~?%#$&=&&&%%=====%&$=$#$%$&%&%$%&$###&######&?&########%--~~