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