:::::::~~~~~::::::~~::~~~~~~~:::::::::~~~~:~~~:~:::::::~~~~~~:::::::::::~~~~~:::::::::::~~~~~~::::::
::::::::~~~:::::::~:::::~~~~:::::~:~:~~~~~~~~~~~:~~::::~~~~:::::::::::::::~~:::~::::::::::~~::::::::
::::::::~~~::::::::~::::~~~:::~~~~~~~==++====+++++?++=~~~~~~~~~::::::::::~~~:::::::::::::~~~~:::::::
:::::::~~~~~~:::::~~:::~~~~~~:~~~~=++===========++++++++==~~~~~~~::::::~~~:~~~:::::::::~~~~:~~~:::::
:::::~~~::::~~:::::::~~~::~~~~~=====~~=~=~~============+===~~~~~::::::~~~:::~~~~::~:::~~~~::::~~::::
::::~~:::::::~~~::::~~~:~~~~~======~=~=~~~~~~~~~~~~~~====~~~:::::~~:~~~~::::::~~~::::~~~:::::::~~~::
~~~~~::::::::::~~~~~~::~~~~~~==~=====~~~~~~~~~~~~~~~~~~~~~::::,:::::~~::::::::::~~::~~:::~::::::~~~~
~~~:::::::::::::~~~~~~~~~~~~=============~~~~=~~~~:::::::::,,:,,,,,::::::::::::::~~~::::~~::::::::~~
:~~:::::::::::::~~~~:~~~~~==================~~~~~:::::,,::,,,,,,,,,,,::::::::::::~~~::::::::::::::~=
~~~~~::::::::::~~~~~~~~~~=++=+==++++===+========~::::,,,,,,,,,,,,,,,,,::::::::::~~~~~~::~:::::::~~~~
:::~~~::::::::~~::~~~~~~~=+++++++++++++++++=====~:::,,,,,,,,,,,,,,,,,,,:::::::~~~:::~~~::::::::~~~::
::::~~~~::::~~~::::~~~~~=++++++++++++++++++++++==~::,,,,,,,,,,,,,,,,,,,,:::::~~~:~::::~~~:::::~~:::~
::::::~~~::~~:::::~:::~=++++++++++++++++++++++++=~~::,,,,,,,,,,,,,,,,,,,~~::~~:::::::::~~~::~~~:::::
::::::::~~~~::::::::::=++++++++++++++++++++++++++==~:,,,,,,,,,,,,,,,,,,,:~~~~::::::::::::~~~~:::::::
:::::::::~~::::::::::~=++++++++++++++++++++++++++++=~:,,,,,,,,,,,,,:,,,,,:~~::::::::::::::~~::::::::
::::::::~~~~::::,,:,:=++++++++++++++++++++++++++++++=~::,,,,,,,,,,,,,,,,,:~~~::::::::::::~~~~~::::::
::::::~~~::~~~::,:,,==+++====++++++==++++++++++++++++=~:::,,,,,,,,,,,,,,,:::~~~::::::::~~~::~~~:::~:
::::~~~~::::~~~::,,:=+++=============+++++++++++++=+++=~~:,,,,,,,,,,,,,,,,:::~~~:::~:~~~~:::::~~~:::
~::~~~::::::::~:,,,:=++=================+++++++=+++==++=~:,,,,,,,,,,,,,,,,:::::~~~::~~~:~~:::::~~~::
~~~~~:~:::::::::,,,~++==================+++++=++==+=++++=~::,,,,,,,,,,,,,,::::::~~~~~~:::~:::::::~~~
:~~:~:~~::::~:::,,:=======================================~~,,,,,,,,,,,,,,::::::::~~::::~::::::::::~
~~~~:::::::::::,,,:=======================================~~:,,,,,,,,,,,,,:::::::~~~:::~~~::::::::~~
~:~~~~:::::::::,,.:====~===================================~~:::,,,,,,,,:~++=::~~~:~~~::~~::::::~~~:
::::~~~:~::::~:,,,:==~~~~~~~~==============================~::::,,,,,,,,===~~=~~~:::~~~~:~::::~~~:::
:::::~~~~::~~~::,,:~=~~~~~~~~~~~~~~~========================~~~::::,,,,:===~~~~:::::::~~~~:::~~:::::
:~:~~:~~~~~~::::,,~===~~~~=~~~~~=~~~~==========================~::,,,,:=====~~=:::::::::~~~:~~::::::
::::::::~~~::~::,,~=~~~~~~~~===~=~~~~~~=========================~:,,,,:======~=:::::::::::~~::::::::
::::::::~~~:::::,,:===~~~~~~~~~=======~~~~=======================~:::,~=~~~~==~:::::::::::~~::::::::
:::::::~~:~~:::~,,~=~~~~~~~~~~~~~~~~=========================~+===::,:====~~==~:::::::::~~~~~~::::::
:::::~~~::::~~~::,:=~~~~~~~~~~~==~~~~~~~===================~=+====:,:~+===~~===~:~~:::~~~~:::~~~:~~:
::::~~::::::::~~:::~~=======~~~~~~~~~~~::~~========~=====~~=~====~:,:====~====~~~:::::~::::::::~~:::
~~:~~::::::::::~~::~~~~:~~~~~~~~~~~~~~::::::::~~~~~~~==~===~======:::==+~~====~:~~::~~::~:::::::~~::
~~~:::::::::::::~~~:~:::::::::::::~~~~~~:::~~:::~~~~==~~~=~=======::~=+=~====+:::~~~~::::::::::~:~~~
:~~:::::::::::::::~:~~~~=~~::~,,:::~~~~:::::,,,:::~~~~==+===================+=::::~~::::::::::::::~~
~~~~~:::::::::::~=~,=~::,,,::::~,::::~~~~~~::::~~~~~~~~~=====================++~~~~~:::~::::::::~~~=
::::~~::::::::~~:=:~~~~::::::::::=::~~==~~~~~~~~~~~~~~=~=====================+??~:::~~~:~~:::::~~~::
:::::~~~::::~~~~=7I~:~~~~~::::::::~~~=~~===~=~~~~~~~~========================+???=::::~~:~::::~~:,::
:::::::~~~:~~~:::::~:~~~~~:::::::~:~===~~=======~=~~=========================+???????=:~~~::~~~::~::
::::::::~~~~:::::::~:~~~~~~~~~~~~~:~====~========~===========================+?????++??=~~~~~~::::~:
:::::::::~~::::::::~~:~~~~~~~~~~::~=====~~~===~~~~~=========================+???????++???+==~::::~~:
::::::::~~~~::::::~:~~~~~~~~~~~~::~=======~~~~==~~~~~=======================+??????++?????????II+=~:
:::::~~~::::~~::::~:::=~~~~~~~~~::~~========~~~~~~~~~~~~=====~==============??????+++??????????????I
::::~~~::::::~~~::~~:~~~=~~~~~~::~~~========~~~~~~~~~~~~==~=~~~=============??????+++???????????????
~:::~:::::::::~~~::~~~:~~~:~~~::::~~====~~~~~~====~~~~~~~===~~============~+?????+++????????????????
~~~~::::::::::::~~~~::::~:~~~~:::::~~~=~~~~~======~~:::~~~==~~~=~=======~=++?++++==+??????????++++++
:~~:::::::::::::::~:::::::::::::::::::::~~~~=~==~~~~::::~=~=~~~~~=====~===++?+?+==+++?????++++++++++
~~~~::::::::::::~~~~:::::~::::::::::::~~~~~~~~~~~~~:~:::~~~~~~~=~~=~~~~==++++?++==++++++++++++++++??
~::~~~:::::::::~~::~~~::::~::::::::~~~~~~~~~~==~~~=~~~~:~~~~~~~~~~~~~~~=+++++++==+++++++++++++++????
:::::~~~:::::~~~::::~~~~:::::::::::::::~~~::::~~====~~~~~~~~~~~~~~~~~~=+++++++===++++++++++++++?????
::::::~~~:::~~::::::::~~~:::::~~::::::,,:::~~~~=====~~~~~~~~~~~~~~~~~~+++=+++==~+++++++++++++++?????
::::::::~~~~::::::~~::::~~~~::::::::~~~~~~~~~~~~~===~~~~~~~~~~~~~~~~~+++++++=~==+++++++++++++++?????
::::::::::~::::::::~:::::~~~::::::::::::~~~~~~~~=======~~~~~~~~~~~~~++===++=~===++++++++++++++?++???
::::::::~~~~:::::::~:::::~~~+I?+:~~:::::~~:~~~~==~=====~~~~~~~~~~~==+===++=~===++++++++++++++++=++??
:::::::~~~:~~~::::~:::::~~=??+++=::~:::~~~~~~~========~~~~~~~~~~~=+===+++=~==~=+++++++++++++++=+++??
::::::~~::::~~~:::~~:~~~+??++++++=:~~~~~~~~~~====~~~~~~~~~~~~~~~======++=~==~~++++++++++++++==++++??
~:::~~::::::::~~~:::~:=???+===++++=~~~~~~~~~====~~~~~~~~~:~~~:======+++=~~====++++++=====++==+++++++
~~~~::::::::::::~~~~=?++++++=+==++==:~~~~~~~~~~~~~~~~~~:::::~=======++=~~====+++++++=====+==++++++=+
:~~~:::::::::::::~=?==++?+++?+=++====~:::~~~~~~~~~:::::,,,:~======+++=~~====+++++++=========+=++++++
~~~~::::::::::::=?++?+??+++++==++======~:::::::::,,,,,,,,:======++++=~~=====++++++=======~=+=+++++++
~::~~~:::::::~~++?+++?++=+++==++=========~~~,,,,,,,,,,,,~======++++==~=====+++++++====+=~===++++++++
::::~~~~:::::~+?++++++++=++===++==+=======~~::,,,,,,:~~::~===+++++==~=====+++++++=====+~===+++++++++
::::::~~~:::=?+++++++++=++===+++==+======~,.,:::~~~~~:::,,,=+++++==~======++++++=====+~===++++++++++
::::::::~~:=++++++++++=+++==+++===++==~:,.,.,,,.::::::,,,.,.++++==~======+++++++===+++===+++++++++++
::::::::~~~+++++++++++++++==+++==+=+=~,,,,,,,,...,,,,,,,,,.,:+====~=+====+++++++===++====+++++++++++