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