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