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