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