~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~...........~~~~~~~~~~~~~~~..........~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~.....................~~~~~~~................~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.~~~~~~~
~~.....*.........***....................***.....~~~~~~~~~~~~~~~~~~~~~~~.....~~~~~~~~~~~~~~~.*.~~~~~~
~~.....*..........****.................*****....~~~~~~~~~~~~~~~~~~~~~.........~~~~~~~~~~~~^*.*^~~~~~
~~.....*..........****..................***......~~~~~~~~~~~~~~~~~~~~...........~~~~~~~~~.*...*.~~~~
~~.....*...........***.....**...................~~~~~~~~~~~~~~~~~~~~~.....N.....~~~~~~~~.*..d..*.~~~
~~.....*............**...~..**...............~~~~~~~~~~~~~~~~~~~~~~~~...........~~~~~~~~~.*...*.~~~~
~~.....*.......A.....*...~...*.............~~~~~~~~~~~~~~~~~~~~~~~~~~..........~~~~~~~~~~~^*.*^~~~~~
~~......**...........*..~~................~~~~~~.............~~~~~~~~~..*****.~~~~~~~~~~~~~.*.~~~~~~
~~.......*...........*..~~~.........E.....~~~~..^^^............~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.~~~~~~~
~~.......*..........*..~~~~................~~...^..................~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~.......*............~~~~......................^..........I........~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~.......*...*........~~.........................^...................~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~.......**..**........~~~........................^..................~~~~~~~~~~~~~~~~~~~~.*.....~~~~
~~........*...*........~~~~~.................***..~^................~~~~~~~~~~~~~~~~~~~..**......~~~
~~............*.........~~~~~~..............**.**.~................~~~~~~~~~~~~~~~~~~~~..*.......~~~
~~............**.......**~~~~~~............**...**................~~~~~~~~~~~~~~~~~~~~~~.*...X....~~
~~....B....~~............***~...........~..*..O..*.......~........~~~~~~~~~~~~~~~~~~~~~~~*........~~
~~.........~~~~..................^^.....~..**...**.....*~~~........~~~~~~~~~~~~~~~~~~~~~~~......^.~~
~~.........~~~~~................~~^^........**.**....**~~~~...........~~~~~~~~~~~~~~~~~~~~.....^^~~~
~~......*...~~~~~~.......F.......~~^.........***...**~~~~~~.......*....*.......~~~~~~~~~~~~....^~~~~
~~~......*....~~~~~~.............................~~~~~~~~~.....*..*..*..*.*..^...~~~~~~~~~~~~~~~~~~~
~~~~............~~~~~...........................~~~~~~~~~~....*..*..*.*..*..*.^...~~~~~~~~~~~~~~~~~~
~~~~............~~~~~..................**........~~~~~~~~~..*..*..*.....*..*.*....~~~~~~~~~~~~~~~~~~
~~~~~...........~~~~~..............................~~~~~~~.*.*...*.......*..*^.....~~~~~~~~~~~~~~~~~
~~~~~.....C......~~~~..............^.................~~~~~....*.*....J.....*.*^....~~~~~~~~~~~~~~~~~
~~~~~.............~~........^......~~^^................~~~~.*..*............*.*^...~~~~~~~~~~~~~~~~~
~~~~~~...............^......~^.......~^^^...............~~~..*..*.*.......*..*....~~~~~~~~~~~~~~~~~~
~~~~~~~.....***......^...................................~~~...*.*..*.*..*.*.^....~~~~~~~~~~~~~~~~~~
~~~~~~~~~..***........^^................................~~~~......*..*..*.*..*^..~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~.............^.....***.......D.....~~.........~~~~~~.....*.*..*.*....~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~................................~~~~.......~~~~~~~~~~...........~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~..................................~~~......~~~~~~~~~~~.........~~~~~~~~~...~~~~~~~~~
~~~~~~~~~~~~~~~~~~~.................................~~~........~~~~~~..........~~~~~~~~.......~~~~~~
~~~~~~~~~~~~~~~~~~~~.............................................~............~~~~~~...........~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~.............*****...................................~~~~........W....*~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~......***..~~~~~~.**...**........................~~~~............*~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...........~~~~~~******............~~...........~~~~.***.....*~~~~~~~
~~~~~~~~~~~~~~.......~~~~~~~~~~~~~............~~~~~**........^.................~~~~..*******~~~~~~~~
~~~~~~~...................~~~~~~~~~~~...........~~~~**....K..^.................~~~~~~~~~~~~~~~~~~~~~
~~~~~...^.^.^.^.........**.~~~~~~~~~~~~~..........~~~~*......^.......~~........~~~~~~~~~~~~~~~~~~~~~
~~~...................***.*..~~~~~~~~~~~~.^........~~~~......^....~~~~...........~~~~~~~^^^^~~~~~~~~
~~.........................*...~~~~~~~~..^...........~~~.^^^^^~~~~~~..........^.^....~~~~~~~~~~~~~~~
~~..........................*..........^^............~~~~~~~~~~~~.......**...^.^.^.......~~~~~~~~~~~
~~~~......~~~.....G..............***^^^........~.......~~~~~~~~~......**....^.^.^.^........~~~~~~~~~
~~~~~~~~~~~......................**^^...................~~~~~~~.....**.....^.^...^.^.........~~~~~~~
~~~~~.....~.....................**^^..............***....~~~~~~...**......^.^.....^.^.........~~~~~~
~~~~...................~~.....***........H.......****....~~~~~...........^.^.......^.^........~~~~~~
~~~~....***..........~~~~~~....................***......~~~~~~............^....V....^.........~~~~~~
~~~~~..^^******........~~~~~~................~.........~~~~~~~~~.........^.^.......^.^........~~~~~~
~~~~~~...^^^^****.......~~~~~~~~~......................~~~~~~~~~~~........^.^.....^.^..........~~~~~
~~~~~~~~....^^^......~~~~~~~~~~~~~...................~~~~~~~~~~~~~~~~......^.^...^.^...........~~~~~
~~~~~~~~~~~.....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.....~~~~~~~~~~~~~~~~~~~~.....^.^.^.^.............~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.....^.^.^.............~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~......^.^............~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~....~~~~~~~~~~~~~~~~~.........**.......~~~~~~~~
~~~~~~~~~~~~~~~~~~~~^~~.............~~~~~~~~~~~~~~~~......~~~~~~~~~~~~~~~~~~.....*****....~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~^~~..*******......~~~~~~~~~~~~~~..*****...~~~~~~~~~~~~~~~...*******..~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~^~...*********......~~~~~~~~~~~~..*******..~~~~~~~~~~~~~~~~~..*****..~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~..*****~~*****......~~~~~~~~~~~..***.***...~~~~~~~~~~~~~~~~~~..**..~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~^~.******~****........~~~~~~~~~~...**.Y.**...~~~~~~~~~~~~~~~~~~~....~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~^~....***~~**...........~~~~~~~~~...***.***...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~^~~....****~*.....L......~~~~~~~~~...*******...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~.....******...........~~~~~~~~~~...*****...~~~~~~~~~~~~~~~~............~~~~~~~~~~~
~~~~~~~~~~~~~~~~~.......******.......^..~~~~~~~~~~~.........~~~~~~~~~~~~~..................~~~~~~~~~
~~~~~~~~~~~~~~~~~..........**.......^..~~~~~~^~~~~~~.......~~~~~^~~~~~~~....................~~~~~~~~
~~~~~~~~~~~~~~~~.......~~..........^.~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~........T..^.......~~~~~~~~~
~~~~~~~~~~~~~~........~~~~........^.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...........^......~~~~~~~~~~
~~~~~~~~~.............~~~~~~........~~~~~~~~~~~~~~~~.....~~~~~~~~~~~~~~...............~~~~~~~~~~~~~~
~~~~................^..~~~~~~~.....~~~~~~~~~~~~~~~.*****..~~~~~~~~~~......***...^^...~~~~~~~~~~~~~~~
~~~.................^^...~~~~~~...~~~~~~~~~~~~~~.......******..........********.....~~~~~~~~~~~~~~~~
~~~..................^^..~~~~~~~~~~~~~~~~~~~..............********************......~~~~~~~~~~~~~~~~
~~.....~................~~~~~~~~~~~~~~~........~......................******.~~~~~~~~~~~~~~~~~~~~~~~
~~....~~~...M...........~~~~~~~~~~~~~~~.***....~.................~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~.....~.........**....~~~~~~~~~~~~~~.....*....~......P........~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~.............***.....~~~~~~~~~~~~~~.....*..................~~~~~~~~~.........~~~~~~~~~~~~~~~~~~~~~
~~~..........***.~........~~~~~~~~~....a......~~............~~~~~~~~~~.~~~~~~~.~~~~~~~~~~~~~~~~~~~~~
~~~~~....******~.............~~~~~..*.....~~~~~~~~.........~~~~~~~~~~~.~.....~.~~~~~~~~~~~~~~~~~~~~~
~~~~~~~...**........~~~~............*.....~~~~~~~~~~~......~~~~~~~~~~~.~.....~.~~~~~~~~~~~~~~*~~~~~~
~~~~~~~~~~...~~~~~~~~~~~~....^^.....***.~~~~~~^^^~~~~~.....~~~~~~~~~~~.~..c..~.~~~~~~~~~~~~~*~*~~~~~
~~~~~~~~~~~~~~~~*******~~~~........~....~~~~~^~~~^~~~~~~....~~~~~~~~~~.~.....~.~~~~~~~~~~~~~~*~~~~~~
~~~~~~~~~~~~~~~~*.....*~~~~~~.....~~....~~~~^~*.*~^~~~~~~~...~~~~~~~~~.~.....~.~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*.....*~~~~~~~~~~......~~~~^~.....~^~~~~~~......~~~~~~.~~~~~~~.~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*..Z..*~~~~~~~~~~......~~~^~*.....*~^~~~~.**.........~.........~~~~~....~~~~~~~~~~~~
~~~~~~~~~~~~~~~~*.....*~~~~~~~~~~....~~~~~^~...U...~^~~~~***.........~~~~~~~~~~~...........~~~~~~~~~
~~~~~~~~~~~~~~~~*.....*~~~~~~~~......~~~~~^~*.....*~^~~****.............~~~~~~......***.....~~~~~~~~
~~~~~~~~~~~~~~~~*******~~~~~.....~.....~~~~^~.....~^~~***........R.....~~~~~~.....***...^...~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~...^^.*.^^....~~~~^~*.*~^~~~**..............~~~~......***......^..~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~....^.....^......~~~^~~~^~~~~*.....~........~~~~~....^..........^..~..~~~~~
~~~~....~~~~~~~~~~~~~~~~....~...........~..~~~^^^~~~~......~~......~~~~~......^...........^...~~~~~~
~~~*******~~~~~~~~~~~~~~.....*..Q..*....~...~~~~~~~~......~~....~~~~~~~......~.^.....S....^...~~~~~~
~~~*******.~~~~~~~~~~~~~............~.........................~~~~~~...^^^...~~^...........^*.~~~~~~
~~~*******..~~~~~~~~~~~~~~...^.....^.......~~~~~~~~~~~~....~~~~~~~~~~~....^^..~~^..........**.~~~~~~
~~~***b***..~~~~~~~~~~~~~~...^^.*.^^...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~........~~^......***..~~~~~~~
~~~*******..~~~~~~~~~~~~~~~~~..~....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~..~~^..***..~~~~~~~~~~
~~.*******.~~~~~~~~~~~~~~~~~~~...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...~~~~~~~~~~~~~~~~
~~~*******~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
