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