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