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