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