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