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