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