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