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