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