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