NN     NN   OOOOOOO   TTTTTTTTTT  RRRRRRR    EEEEEEEEE             DDDDDDD        A      MM     MM  EEEEEEEEE
           NNN    NN  OOOOOOOOO  TTTTTTTTTT  RRRRRRRR   EEEEEEEEE             DDDDDDDD      A A     MMM   MMM  EEEEEEEEE
           NNNN   NN  OO     OO      TT      RR     RR  EE                    DD    DDD    AA AA    MMMM MMMM  EE
           NN NN  NN  OO     OO      TT      RR     RR  EE         ---------  DD     DD   AA   AA   MM MMM MM  EE
           NN  NN NN  OO     OO      TT      RRRRRRRR   EEEEEEEE   ---------  DD     DD   AAAAAAA   MM  M  MM  EEEEEEEE
           NN   NNNN  OO     OO      TT      RR  RR     EE         ---------  DD     DD  AA     AA  MM     MM  EE
           NN    NNN  OO     OO      TT      RR   RR    EE                    DD    DDD  AA     AA  MM     MM  EE
           NN     NN  OOOOOOOOO      TT      RR    RR   EEEEEEEEE             DDDDDDDD   AA     AA  MM     MM  EEEEEEEEE
           NN     NN   OOOOOOO       TT      RR     RR  EEEEEEEEE             DDDDDDD    AA     AA  MM     MM  EEEEEEEEE

                      1                                                                                    1
                     / \                                                                                  / \
                    /   \                                                                                /   \
                    1==*1                                                                                1===1
                 .------------------------------.                                .------------------------------.
                ' " "!""""^""""""""""""^""""!" ".`                              '." "!""""^""""""""""""^""""!" " `
               `1   .!    U            U    !    1                              1    !    U            U    !.   1
                `===============================-.                              .-==============================='
                :... !5555555555555555555555!   ^ =                            = ^   !5555555555555555555555! ...:
               ''.  `-------O---------O--------   !                            !   --------O---------O-------'  .``
               :    ^ $   ^ . ^     ^ . ^     ^   +==                        ==+   ^     ^ . ^     ^ . ^   $ ^    :
               /.:"/ \  ^ .' `. ^ ^ .' `. ^  / \"$                              $"/ \  ^ .' `. ^ ^ .' `. ^  / \":.\
               :/  1^1 ^ .  X  . ^ .  X  . ^ 1^1"""$                          $"""1^1 ^ .  X  . ^ .  X  . ^ 1^1  \:
              <$   : :  .  XXX  . .  XXX  .  : :`^"P                          9"^': :  .  XXX  . .  XXX  .  : :   $>
               !   : :  . XXXXX . . XXXXX .  : : .  >                        <  . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !                          ! . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !                          ! . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !                          ! . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !             1            ! . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !$           -+-          $! . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !1            1           1! . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !1            1           1! . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !+>           O          <+! . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !:            1           :! . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !:            1           :! . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !:           ' `          :! . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !:           1 1          :! . : :  . XXXXX . . XXXXX .  : :   !
               !   : :  . XXXXX . . XXXXX .  : : . !:           1 1          :! . : :  . XXXXX . . XXXXX .  : :   !
               \`  : :  . XXXXX . . XXXXX .- : : . !:           1 1          :! . : : -. xxxxx . . XXXXX .  : :  '/
               .\\ : :  . XXXXX . . XXXXX .\\: : > !:           1 1          :! . : ://. XXXXX . . XXXXX .  : : //.
               1\====== . XXXXX . . XXXXX . ====== !:           1 1          :! ====== . XXXXX . . XXXXX . ======/1
           `1---`` V  1--------------------``    1------------------------------1    ''--------------------1  V ''---1'
           `1 V /======\ V V V V V V V V V /======\  V V V V V V V V V V V V V /======\ V V V V V V V V V /======\ V 1'
           <1== \      /===================\      /============================\      /===================\      / ==1>
            1    1 /\ 1\/ \/ \/ \/ \/ \/ \/-1 /\ 1  1\/ \/ \/ \/ \/ \/ \/ \/-1  1 /\ 1\/ \/ \/ \/ \/ \/ \/-1 /\ 1    1
            1    1/  \1/\ /\ /\ /\ /\ /\ /\\1/  \1-\1/\ /\ /\ /\ /\ /\ /\ /\\1/-1/  \1/\ /\ /\ /\ /\ /\ /\\1/  \1    1
            1    W-++-W  V  V  V  V  V  V   W-++-W-\W  V  V  V  VA V  V  V   W/-W-++-W  V  V  V  V  V  V   W-++-W    1
           <1    I 11 I  1  1  1- 1  1  1   I 11 I  I  1  1  1 A XA1  1  1   I  I 11 I  1  1  1  1 -1  1   I 11 I    1>
            1`   I 11 I- 1  1 -1  1  1 -1   I 11 I- I  1  1  1AX XX   1  1   I- I 11 I- 1  1- 1  1  1  1-  I 11 I   '1
            1    I 11 I  1  1  1 -1 -1  1 - I 11 I  I  1  1   XX XX A 1  1   I -I 11 I  1- 1  1  1  1  1   I 11 I    1
            1    I 11 I  1- 1  1  1  1- 1   I 11 I  I  1  1 A XX XX XA1  1   I  I 11 I  1  1  1 -1  1 -1   I 11 I    1
            1    I 11 I  1  1- 1  1. 1. 1   I 11 I- I  1  1AX XX XX XX   1   I- I 11 I -1 .1 .1  1  1  1   I 11 I    1
            1    I 11 I  1  1  1  1. 1. 1-  I 11 I  I  1   XX XX XX XX A 1   I  I 11 I  1 .1 .1  1  1  1 - I 11 I    1
            1    I 11 I -1  1  1- 1. 1. 1   I 11 I  I  1 A XX XX XX XX XA1   I  I 11 I  1 .1 .1  1- 1- 1   I 11 I    1
            '   /  11  \ 1  1  1  1  1  1  /  11  \ I  1AX XX XX XX XX XX1.  I /  11  \ 1  1  1  1  1  1  /  11  \   `
           <====\ ^^^^ /===================\ ^^^^ /============================\ ^^^^ /===================\ ^^^^ /====>
            `^^^ 1    1 ^^^^^^^^^^^^^^^^^^^ 1    1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1    1 ^^^^^^^^^^^^^^^^^^^ 1    1 ^^^'
            1    1    1                     1    1/`*'\    ..--------..    /`*'\1    1                     1    1    1
            1    1    1/`*'\           /`*'\1    1`-^-' .-'  ........  `-. `-^-'1    1/`*'\           /`*'\1    1  - 1
            1  - 1    1`-^-'   .---.   `-^-'1    1 \-/.'  .''        ``.  `.\-/ 1    1`-^-'   .---.   `-^-'1    1    1
            1    1    1 \-/ .-'     `-. \-/ 1    1  .'  .'.--PXXXXXX9--.`.  `.  1    1 \-/ .-'     `-. \-/ 1    1    1
            /    1----1   .'    ---    `.   1----1 .  .'./  \  1  1  /  1.`.  . 1----1   .'    ---    `.   1----1 -  \
           1   - 1    1  /    .: 1 :.    \  1    1'  . /  \  \ 1  1 /  /  \ .  `1    1  /    .: 1 :.    \  1    1     1
           1 -   1    1 /     1 :O: 1     \ 1    1  . A`.  \ ---`'--- /  .'A .  1    1 /     1 :O: 1     \ 1    1     1
           1     1    1/      `: 1 :'      \1    1 . A   `../. \  / .\..'   A . 1    1/      `: 1 :'      \1    1   - 1
           1     1 () :  .-'`-. --- .-'`-.  : () 1 ./---...1  \ \/ /  1...---\. 1 () :  .-'`-. --- .-'`-.  1 () 1     1
         $ 1  -  1 /\ 1 / .'`. \   / .'`. \ 1 /\ 1 .X     /`--..--..--'\     X. 1 /\ 1 / .'`. \   / .'`. \ 1 /\ 1     1 $
         1-1     1/  \1/ .'  `. \ / .'  `. \1/  \1--X----<     1  1     >----X--1/  \1/ .'  `. \ / .'  `. \1/  \1  -  1-1
         1 1 -   /----\1 1    1-+-+-1    1 1/----\11X   ..\.--'`--'`--./..   X11/----\1 1    1-+-+-1    1 1/----\     1 1
         --------1    11 1    1 1P1 1    1 11    111\---   1  / /\ \  1   ---/111    11 1    1 191 1    1 11    1--------
         1       1    11 1    1 1 1 1    1 11    111 V  .-' \' /  \ `/ `-.  V 111    11 1    1 1 1 1    1 11    1       1
         1       1    11 1    1 1!1 1    1 11    1    V' .-  ---..---  -. `V    1    11 1    1 1!1 1    1 11    1       1
         1 -     1    11 1    1 1A1 1    1 11    1     \'   /  /  \  \   `/     1    11 1    1 1A1 1    1 11    1  -    1
         1       ------------------------------------------------------------------------------------------------       1
         1       1! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !1       1
         1   -   1! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !1     - 1
         1      /                                                                                                \      1
         1     ----------------------------------------------------------------------------------------------------     1
         1       1/'`\1/'`\1/'`\1X1/'`\1/'`\1/'`\1/'`\1/'`\1/'`\11/'`\1/'`\1/'`\1/'`\1/'`\1/'`\1X1/'`\1/'`\1/'`\1       1
         1       -X()X-X()X1X()X1X1X()X1X()X-X()X-X()X1X()X1X()X11X()X1X()X1X()X-X()X-X()X1X()X1X1X()X1X()X-X()X-       1
         1 -     1X'`X1X'`X1X'`X1X1X'`X1X'`X1X'`X1X'`X1X'`X1X'`X11X'`X1X'`X1X'`X1X'`X1X'`X1X'`X1X1X'`X1X'`X1X'`X1 -     1
         1       1X  X1X  X1X  X1X1X  X1X  X1X  X1X  X1X  X1X  X11X  X1X  X1X  X1X  X1X  X1X  X1X1X  X1X  X1X  X1       1
         1       AX  XAX  X1X  X1X1X  X1X  XAX  XAX  X1X  X1X  X11X  X1X  X1X  XAX  XAX  X1X  X1X1X  X1X  XAX  XA       1
         1       ------------------------------------------------------------------------------------------------    -  1
         1    -  1    1        .---.        1    1            .----.            1    1        .---.        1    1       1
         1       1    1      .-.:::.-.      1    1         .-'.::::.`-.         1    1      .-.:::.-.      1    1       1
         1 -     1    1    .''':::::```.    1    1       -''::::::::::``-       1    1    .''':::::```.    1    1  -    1
         1       1    1   /'''':' `:````\   1    1     .'''''''::::```````.     1    1   /'''':' `:````\   1    1       1
         1       1    1  /'''''     `````\  1    1    /'''''''      ```````\    1    1  /'''''     `````\  1    1       1
         1       1 `' 1 :'''''       `````: 1 `' 1   /''''''          ``````\   1 `' 1 :'''''       `````: 1 `' 1       1
         1  -    1----1 1''''         ````1 1----1  /''''''            ``````\  1----1 1''''         ````1 1----1    -  1
         1       1'()`1:::::   .   .   :::::1'()`1 /''''''     .  .     ``````\ 1'()`1:::::   .   .   :::::1'()`1       1
         1       1X'`X11:::             :::11X'`X1:''''''                ``````:1X'`X11:::             :::11X'`X1       1
         1 -     1X  X11:::             :::11X  X11:''''                  ````:11X  X11:::             :::11X  X1     - 1
         1       1X  X11:::   . . . .   :::11X  X11:::::  .     ..     .  :::::11X  X11:::   . . . .   :::11X  X1       1
         1     - 1+--+11:::      :      :::11+--+11:::::                  :::::11+--+11:::      :      :::11+--+1       1
         1       1    1---- ##### ##### ----1    1------   #####  #####   ------1    1---- ##### ##### ----1    1       1
         1   -   1    1:::: ##### ##### ::::1    1:::::    #####  #####    :::::1    1:::: ##### ##### ::::1    1  -    1
         1       1    1:::: ##### ##### ::::1    1:::::    #####  #####    :::::1    1:::: ##### ##### ::::1    1       1
         1       1    1:::: ##### ##### ::::1    1:::::    #####  #####    :::::1    1:::: ##### ##### ::::1    1       1
         1       1    1:::: ##### ##### ::::1    1:::::    #####  #####    :::::1    1:::: ##### ##### ::::1    1       1
         1       /\   1---- ##### ##### ----1    1-----    #####  #####    -----1    1---- ##### ##### ----1   /\       1
         1 -     11   1   1 ##### ##### 1   1    1    1    #####  #####    1    1    1   1 ##### ##### 1   1   11     - 1
         1       11   1   1 ##### ##### 1   1    1    1    #####  #####    1    1    1   1 ##### ##### 1   1   11       1
         1       11   1   1 ##### ##### 1   1    1    1    #####  #####    1    1    1   1 ##### ##### 1   1   11       1
       --------------------------------------------------------------------------------------------------------------------