1
 MOMMOOOOAMOOOOOOOOOOOOOOOOOOOOZAOOOOOOOOOOOOOOOZ1OOOOOOOOOOOOOOX-   1-) -===1)AXOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOMZ+=- - -
+ +  +X+=  =+X+X+++--+++++++++=  -+++-++++++++++  -+++++++++++++                 -+++= -++++++X+XXXXXXXXX+++++-
+ '  '''    '''''''  '''''''''    ''  ''''  ''''   ''''''''''' '                  '''   ''' ''''''''''''''''
+    ...    .......  ...    ..    ..  ....  ...    ...........                     ..   ... ................
+     -      -=-  =    =     =     =   ==    ==      =   === =                      =   ===  =-=HH-H-----==
+                                                                                               CC C
 OO+OOOOOOOAOOOOOOOOOOOAAOOOOOOOOOOOOMMOO1OOOOOOOOOOOOOOOOOOOOO)--  =+)X)+)=1111ZOOOOOOOOOOOOOOOOOOOX1X1+==--------=))11A
++= +XX+-++ +++XX++++++  +++++++++++=  -= -++++++--++++++XXX++-                  -+++++++++++++++++-
+   ''''     ''''''''''   ''''''''''        '''''  '''''''''''                     ''''' ''' ''''
+   ...      ......  ..   . ...... .        .....  ...........                     ... . ..  ...
+    --       =--==   =   =   ====           ===        =---=                       ==
 OA=OOOOOOMAOOOOOOOOMOM)ZOOXOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOZ- = -==11)-)1)1AXZOOOOOOM1))+-==-- ----=+1XMMMOOOOOOOOOOOO
++  +++++-  ++++XX++ +   -+ ++XXX+++++++ -++++++++++-++++++++=                   =--+++                      ---==+++++++
+   '''''    '''''''        ''''''''''''  '''''''''' ''''''''                       ''                            '''''''
+    ...      ......        .......... .  ...  ....   .......                        .                              .....
+    = =      ==--=          =---   ==     ==     =    ====                                                         = ==
 OO+OOMX+ZM)XMOOOOO1XOOMZMOOOOOOOOOOOOOO1OOOOOOOOOOOMOOOOOOAOO1 -----==Z1=))=+Z)111===--   - - ==)ZAXOOOOOOOOOOOOOOOOOOOO
+++ ++        +++++  ++   +++X++++++XXX+ =++++++++X+ +X++++ +-                                       -+++++++++++++++++X+
+'   '        '''''  ''    ''''''''''''   '''''''''' '''''  '                                           '''''''''''''''''
+.   .        . ...  .     ............   ..... ...  .....  .                                           .................
+             =  =          =-=   ==---    ==   ==-   -= =                                              =    === ======-=
 OOOO1-)AOOXX)MMMMXOOOOA)OOOOOOOOOOOOOOOZAMOOOOOOOOOOOOOOZ-XMO=ZO=---)+Z)=)=+-- -        -++)ZAMOOOOOOOOOOOOOOOOOOOOOOOOO
+++--    =+        -++-  -+++-=+++++++++   =+++++X++++++-    +  -                               -++++++++++++++X+++++++XX
+''                        ''  '''''''''    ''' ''''''''                                         ''''''''''''''''''''''''
+ .                        ..  .........    ... ........                                          .......................
+ =                        ==    =======     =   -=== ==                                              =========-=======--
 OOOZ++MOOZMOOOO1)MOOOOOOZ)OOOOOOOOOOZOOZAOOOOOOOOOOOOOZZA+XMZ=ZM1--+-+)==--        - -=1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++    -+  +=+=   +=-+++  -+XXX+++++ ++  =+++++X+++++-                                   --=++++++++++XX+X++XXX++XX++X+X
+''         '      '   ''   ''''''''' ''   ''''''''''                                         '''''''''''''''''''''''''''
+..         .          ..   .........  .   ..........                                           .........................
+ =                         =-H-=====        ===-===                                            ====  =--=-==---==--==-=-
+                             C
 MM1-=ZAMOOOOMXMAXOOOOOOOOXOOOOOOOOOOMZOAXOOOOOOOOOOO= )ZAMMX-+A1+=-- - -        --+ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        +-=+     -==+++++ =+XXXXX--+  =  ++++++XXX+-                                  -+++++++++++++++XX+XXXXXXXXXXXXXXX
+                    ''''   ''''''  '     ''''''''''                                     ''''''''''''''''''''''''''''''''
+                    ....   ......  .      .........                                      ...............................
+                      ==   =-HHH-         =====---=                                        ==== ======--=---------------
+                             CCC
 )1)-)OOOOOOX+=ZOZZMOOOOOOOOOOOOOOOOOOZ)ZAMOOOOOOOOOO--1OMOA+ -=)            --=ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     +++++-    -   ++++++++++XXXX+-++     +++XXXX+++   - -                       -++++++++X++++++XXX+XXXXXXXXXXXXXX+XXXX
+      ''''         ''''''''''''''' ''     ''''''''''                                 '''''''''''''''''''''''''''''''''''
+       ...         .... .......... ..     ..........                                 ...................................
+        =           ===     =-H--  =        =----==                                     ==-======---=--------------=----
+                              C
 -)+ )OOOM1-=-=))1X+1O)ZOOOM)OOOOOOOOOOMOOOOOOOOOOOOO--1OOXX= -          -=1AMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     -+-            -  =++  +++++X++++ +++++++++++++   =+                     -++++++++++++++X++++++X+X+X+++XXX+XXXXXXXX
+      '                 '   '''''''''  '''''''''' ''    '                       ''''''''''''''''''''''''''''''''''''''''
+                        .    . ......  ..........  .                              ......................................
+                               ==- ==  ====  ==                                   =     === =-======-=-=-===---=--------
 -+-ZOX)=)Z- -=111XMM+XOOOOO1XXMOOOM1OOOOOOOOOOOXOOOOO+)A1-       - -==+1MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -                 ++++-    =++  -+++X+++++- ==+--                     =+++++++++++++++++++++++++++X++XX+++++X+X++X++
+                      '' '      ''    ''''''''    '                           ''''''''''''''''''''''''''''''''''''''''''
+                       . .      ..     .......                                 .........................................
+                                 =     =-=====                                     =   = = ====== ====-==--=====-=-==-==
 -=)=MOOOO1)-=XOOOOOOOOOOOM1-=)MOOOXZOOOOOOOOOOXZOAXOM=         --+1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     ++--     -=++----++-      +++  ++XXX+++++  =  =                 -=+++++++++++++++++++++++X+++XXX++XXXXXX+X+XXXXXXXX
+     '          '     ''       '''  ''''''''''                         '''''''''''''''''''''''''''''''''''''''''''''''''
+     .                 .        ..   ........                            ...............................................
+                                =    =HH-                                   ====== = =========-===---==------=-=----H---
+                                      CC                                                                            C
 =ZX-AOOOOXOM+MOOOOOOMOOMOOZ-+XOOOOOOOOOOOOOXX++1Z=-        -=))1AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     ++++ -   =+++++ ++ -+    --+++++XXXX++                       -++++++++++++++++++++++++++++++++++X+++++++++++XXXX+X+
+      '''      '''''  '         '' ''''''''                          '''''''''''''''''''''''''''''''''''''''''''''''''''
+      ...      .....  .          .  .......                           ..................................................
+       =         =                  =-HH-=                               ==  === === ==== ===========-===========----=-=
+                                      CC
 ZO1=ZOOOOOOOOOOOOOOZ=OOOOZ==AOOMOOOOOOOOOOO- - =-        -)XMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -   -++XXXX++++X-+  +++-    =- ++X++X++XX+                  - =+++++++++++++++++X++++X++++++++++X++X++XXXXX+X+X++XX+XXX
+      '''''''''''    '''        ''''''''''                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       ..........     .          .........                        ......................................................
+       =---H====-     =           -==-==H-                         =   == =======-= ==-==========-==-==-----=-=-==--=--H
+           C                            C                                                                              C
 )MX)OOOOOOOOOOOOOOOO)AOOM1X+MOOOOOOOOOOOOOO --         =)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -++++XXXX+X++++-  ++     ++++XXX+=++X++               =++++++++++++++++++++++++++++++++++++X++XXXXXXXXXXXXXXXXXXXXXX
+     ''''''''''''''   ''      ''''''' ''''                  '  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ..............   ..      .......  ...                      ........................................................
+      == --H-=-==              ==---   =-=                      = =========== ===== ==== ======-==------------H-H-------
+           C                                                                                                  C C
 -XOOOOOOOOOOMOOOOOOM--)OZMOOOOOOOOOM1ZOOO1+-        -)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -++++++XX+ -+++++    -  =---++X++   +++              =++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXX++XXXXX
+    ''''''''  '''''           ''''    '''                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    ........  .. ..           ....     ..                ...............................................................
+     ==  --      =             =-=                         == =  ===  =  === =====================-------------H-==-----
+                                                                                                               C
 --1AOOOOOOOOOOMMMOOOOM=+ZOOOO+AMA1-+)MOOOM=       -+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    =+++X++---   -+++    ++++         +++           -++++++++++++++++++X+++++++++++X+++X+X+XXX+X+X+XXXXXXXXXXXXXXXXX+XXX
+     ''''''        '     ' ''         '''             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ......        .       .          ..              ..................................................................
+      ==-==                =                            ==  ===========-===========-===-=-=---=-=-=-------H---HHH---=---
+                                                                                                          C   CCC
 M=-=+1MOOOOOOOO+-1XOOOO)ZOOOO==O=- ZOOOOOZ       -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       ++++++++    ++++  ++X+  -    -++++          =+++++++++++++++XX+++++++++++++++++++++X+++XXX++X+XXXXXXX+X+XXXXX+X++
+       '''' '''     ''   ''''        '''            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       .... ...     ..   ....        ...            ....................................................................
+          = ==       =    =-=         ==               ============--============= =======-===---==-=------H=-=H-H--=-==
+                                                                                                           C   C C
 OZ =+-+1XOOOMOOOM)+1OOOOOOOOO=MO==+XOOOM)       -XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++        -++ +++    ++X+++++-  +    +++           +++++++++++++++++++++++X++++++++++++X++XXX+++XXXXXXXXXXXXXX++XXXX+++++
+'         '' '''     '''''''        '''            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.         .   ..     .......        ...            .....................................................................
+                     =-=  ==         ==            = ====== ====== ======-===== ======-==---===--------------==--H-=====
+                                                                                                                 C
 OO)ZO)Z1--ZMM+1OO1==OOOOOOOOOOOZ-=)AOOO=       -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+  -          =+   -++++++++=+     +++          +++++++++++++X++++++++++++++++++++++++X++++++++++++X+XXXX++X+X+++++++++
+'                     ' ''''  '     ''            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.                       ....        ..            ......................................................................
+-                       = ==                       ======== ==-====== == ==============-============-=----==-=-======  =
 OO+ZA=1M---)MZZMOO)AOOOOOOOOOOO=+ZZOOO=       -+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++-              +-  ++--++++++=    +++          =++++++X++++++++++++X++++++++++++X+++++++XXXX+++X+XXX+XXXXXXX+XX++++++++
+'                   ''   '''''      ''           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.                        ...        .            .......................................................................
+                         ===        =             =====-============-============-=======---- ==-=---=-------=--==== ===
 O1 =--+)+ZZ=)MOOOZ1MZAOOOOO)=1ZZMOOOO=       -=MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++             +++     +++++      =-==           +++X++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+'             '''      '''                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.             ...      ...                      ..................................................................
+=             ==       ===                        =-============ ===== == === == ======== =====================
 )+- ==)))OOM)=ZX))1)XMOOOOOOOOOOZMO1-        =XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXXX
+         -+           ++XXX++++-  -            ++++++X+++++++++++++++X++++++++++++++++X+++++XX++++++XX+XX++++++++++--
+          '           '''''''''                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                      ...... ..                 .................................................................
+                      ==-H-=  =                  ====-====== ========-====== =========-=====--======--=--=====
+                         C
 M+--ZZOOOOOO=-1XMXAOOOOOOOOOOOO1=X-         -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1)1MO
+      ---++=       +++++XXXX+++               -+++++++++++++++++++++++X++++++++++++++++++X+++X+++++++XX++++++++++-     +
+          '         ' '''''''''                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '
+          .           ........                 .................................................................
+          =            =-HHH=                   ========= = = ========-=========== ======-===-=======--=======
+                         CBC
 + =MOOOOOOO+-ZOOO1XMOOOOOOOOOOM1ZA-         =AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)))OOOO
+    ++++++=   +++   --=+XXXX++                +++++X+X++X++++++++++++++++++X+++++++++X+X+X+XXX+++++X+XX+X++++++-    -+XX
+     '''''     '       ''''''                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''
+     .....     .       ......                  ...............................................................       ...
+      = =               --H-=                  ====-=-==-==================-=========-=-=-=---=====-=--=-===         =-H
+                          C                                                                                            B
 --1OOOOOOO- -)AAZ+XOOOOOOOOOOO1+)-          ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1+)OOOOOO
+   ++++XX+         =+++++XXX++               -++++X+X++X++++++++++++++++X+++++++++++++++XX++XX+++++++++++++++-    =+XXXX
+   '''''''           '' ''''''                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      '''''
+    ......           .. ......                ..............................................................       .....
+     ==--=            = =-H-=                 ====-=-==-================-===============--==--===========          =HHHH
+                          C                                                                                         CBBB
 --XOOOOOOO---+)++1OOOOOOOOOOOO1++          =ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX11ZOOOOOOOO
+   ++++++-        =++++X+XXXX+               +++XXXXXX++X+++++++++X++++++++++++++++X++++X++XX+XX++++X+++++++    -+XXXX+X
+   '' '''          '''''''''''                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      '''''''
+      ...           ..........                ........................................................... .      .......
+       =             ==-=----=                ==------==-=========- ===============-====-==--=-- ===-== =        =-HH-=-
+                                                                                                                   CC
  -ZMOOOOOOO)=1XMAMM11)XMOOOOOO1+=         -+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM1XOOOOOOOOOO
+    --+-=+-             --++++               ++++XXXX+++++++X++++++++++++X+++++++++++X++++++X+++++++++++++    =+XXXXXXXX
+                           ''                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''''''''
+                           ..                 ...........................................................      .........
+                            =                 ===----=======-==== =======-=== =======-======-=========         =HHHH----
+                                                                                                                CCBB
 -=)OOA1OOOOM))ZOOOM)--ZOOO1AMMX=          -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMOOOOOOOOOOOO
+   --  -+X+    -++     ++-                  -+++++X+XX+++++++++++++++++X++++++++++X+++++X++++++++++++++==   ++XXXXXXXXXX
+        '''     ''     ''                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ''''''''''''
+        ...     ..      .                    ..........................................................      ...........
+         -=                                  =====-=--=================-======== =-=====-===========         =-HHHHHHHHH
+                                                                                                               CCBCCCCCC
 1Z1+1OOOOOO=---AOOOZ=OOOOOOO1OOM          =)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOO
+     =+++++     +++  -++X++- =+             =+++XXX+XXX++++++++X++++++++++++X+++++X++++X++++++++++++++=- -++XXXXXXXXXXX+
+      ''''      ''    '''''   '              '''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''''''
+        ..       .    .....   .              .........................................................    ..............
+         =             =-=                   ===---=---========-============-==== -====-========= ==       =HHHHHHHHHH-=
+                                                                                                            CCCCBBCBBC
 -=+ZOOO1ZO=--=ZMOMO11OOOOZMA1ZMM-         -XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOO
+    -++  =      - -  -+++                   =++++++++++++++++++++++++++++++++++++++X+++++++++++++++++- -++XXXXXXXXXXXX+-
+     ''               '''                    '''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''''''''''''
+      .                ..                    ......................................................      .............
+      =                =                      =====================================-=======    = ==      =-HHHHH-HHHH-
+                                                                                                           CCCCC CCCC
 -+==-)OOOOX)+1Z+=-=-)MOOMAOOX)+1         -)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX
+      --==            --  --                +++++++X+XX+++++++++++++++++++++++++++X+X+++++++++++++++--=+XXXXXXXXXXXXXX+
+                                            '''''''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''''''''''
+                                             ......................................................    ...............
+                                              === =-=--========= ====  ===========-=-=======            -HHHHHHHHHHHH-
+                                                                                                         CCBBBCBBCBBB
 XOMXMMMM1AOMMOM-+=XOOO+MOOOM11+-        -=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ
+ +        -  -     =+=  +++                -+++++++++X+X++XX++++++++++++++++++++++++++++++++++++++++=++XXXXXXXXXXXXXXX-
+                    '   '''                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''''''''''''''
+                    .   ...                 ......................................................   .................
+                                              = =  ==-=-==--==== ==  =  ======== =========  ===       =-HHHHHHHHHHHHH-
+                                                                                                        CCCBBBBBBBBCC
 MMMZZXO))OOOOO--ZAOOO)+OOX====MM         +MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-
+      +  =+-+-    +++  -+                  ++++++++++X++X++X++++++++++++++++++++X++++++++++++++++=+++X++XXXXXXXXXXXXX+
+      '   '        ''   '                  '''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''''''''''
+      .            ..   .                   ....................................................    ..................
+                                            = = =  ==-==-==-= == ========= =====-=========   ==     =-==HHHHHHHHHHHH-=
+                                                                                                        CCBCBBBBBBBB
  -=++MOOO)ZMOZ-=AOOOA-=ZOOOOAOOO-       -)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM--
+      ++-   +    +++    -=+- +++           +++++++++++X+++++++++++++++++++++++++++++++++++++++++++++XX+XXXXXXXXXXXXX+
+            '    '''         ''            ''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''''''''''''''''
+                 ...          .             ...... ............................................   ...................
+                   =          =             ====    ==-==== ==== === ======================        =-H=-HHHHHHHHHHHH=
+                                                                                                     C  CCBBBBBBBCBB
 --- -1OOO=OOO--MOOOO+-=XOOOOOOOO-       -)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=
+      -+= -++   ++++    ==++++++           ++++++++++++X+++++X+++++++++++++X++XX++++++++++++++++++XXXXXXXXXXXXXXXXXX+
+       '   '    '''       ''''''           '''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''
+       .   .    ...        .....            ...... ...........................................   ....................
+                 ==          ==             ===      ==-=====-===  = ======-==--===== == ==      =-H---HHHHHHHHHHHHH=
+                                                                                                   C   CCBBBBBBBBBCC
  - -=MOOX=MOA))OOOO1--)OOOAOOOOO=       -+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=
+      +-   +   =++=    -++ ++-++           +++++++++++++X++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXX+
+           '    ''      '   '  '           ''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''
+           .     .             .           ....... .........................................    .....................
+                                            =====   ====-========= ======  ========= =====      =-HH-HHHHHHHHHHHHHHH-
+                                                                                                  CC CCCCBBBBBBBBBBC
+                                                                                                                 V
 -1MMOMO1===1ZOAOZMO=-=-)MOO1MOOO=       -1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-
+    - -      - +  +      +-  +++           +++++++++++X+++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXX-
+                  '      '   ''            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                  .          ..            ....... ......................................... ........................
+                  =           =              ====    =-======= ==== ==========   ========      =HH---HH-HHHHHHHHHHH-H
+                                                                                                CC   CC CCCCBBBBCCB B
 =ZOOOOOOZZ)XOOOM1OOO)1MOOOOZOOOO1       -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-
+  -++++-    -++  +++   =++- +++=          -++++++++++++++X++X++++++++++X++++XX+X+++++++++++++++XXXXXXXXXXXXXXXXXXXXXX+
+   ''''      ''  ''     ''   ''            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    ..       ..   .     .    ..            ..........................................................................
+                  =          ==             ======= =====-==-==========-====--=-===== ==     ==-H--HHHHHHHHHHHHHHHHHH
+                                                                                                C  CCCCCCBCBBBBBBBBBC
+                                                                                                                V
 M1MOOOOA)ZAMAOO1MOOM=)OOOOOZMOOOO-      -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   ++++      -=  ++   -++++  +++=         -++++++++++++X+X++++++X++++++++++++++++++++++++++++++X+XXXXXXXXXXXXXXXXXXX++
+   ''''          ''    ''''  '''           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   ...           .     ....  ...           ............................................... ..........................
+    =                   = =  ==              ====  ====-=-======-================= ==== =   ===-=---HHHHHHHHHHHHHHHH=
+                                                                                                    CCCCBCBBBBBBBBCC
 OOOOOZOO)M))OOOOOO)-+MOOOOOOOOOOO=      -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++- ++    =++-++    +++=-+=++++         -+++++++++++++XX++X++X++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXX-
+' ''         '' ''    '''  ' ''''          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  .         .. ..    ...    ....          ..........................................................................
+                       ==      ==           ===== === ==--==-==-==================== = ==  =-HH----HHHHHHHHHHHHHHHHH-
+                                                                                             CC    CCCCCBBBBBCBBBBBC
+                                                                                                           V
 OM1--1OM1)-OOOOAOOOOZOOOO1AOOOOOO)      -+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=     +    +++- +++- ---=  -+++++          ++++++++++++++++++++++++++X+++X+X+++++++++++++++XXXXXX++XXXXXXXXXXXXXXXXX+-
+      '     ''  '''         '''''          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+            ..               ....          ..........................................................................
+            ==                 =            ====== = ============= ==-== -=- = ====    =  =------==HHHHHHHHHHHHHHH-H=
+                                                                                                   CCCCCCBBBCBBBBB C
 Z1--=AM =-1OOOZ1ZZOOO+ZZOOOMOOOZ=-       )AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1
+           ++-    -+-   =+- -++            +++++X++++++XX++++X++XX++++X++++++++++++++++++++XXXXXX+XXXXXXXXXXXXXXXXXX+
+            '      '     '   '             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                   .         .              .........................................................................
+                                              ==-=== ==--====-==--====-==========   =  = ==-H--H-=-HHHHHHHHHHHHHHHHH=
+                                                                                            C  C   CCCBCCCCBBCBCBBCB
 -=XOOO)-)1++)==)Z)ZOAZOAOOOO11=+)1      -=XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)
+   -+-             -  - +++=               +++++++++++X++XX+++++X+++++X++XXX++X+++++++++++XXXXX+X+XXXXXXXXXXXXXXXXXXX
+                        '''                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ...                 .........................................................................
+                         ==                  =========-==--=====-=====-==---==-===    = ==----H=-=-HHHHHHHHHHHHHHHHH-
+                                                                                              C    BBBBBCBBBBBBBBBBC
 -XOOOO)+=1)MM+-1)+-=+)MMOOOOOM=))1+     --XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+
+  ++++                  ++X++              +++X++++++++++X++X+++X+X+++++X+X+X+++++++++++XXXXXXX++XXXXXXXXXXXXXXXXXXX+
+  ''''                  '''''               ''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''
+   ...                  ....                ......................................   ................................
+   ==                    =-                  =-==========-==-===-=-=====-=-=-=====    ==----HH-==-HHHHHHHHHHHHHHHHHH=
+                                                                                            CC    CBBBBCCCBCCBBBBBCC
 =ZMOOOXM=+)11+-=-=+ZOOOOOOOOA)=-+OO-     -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+
+   ++=              -+++XXXX     =+        -++++++++++XXXXX++++++++++++++XXX++XX++++=++XXXXXXXX+XXXXXXXXXXXXXXXXXXXX-
+    '                '''''''      '         ''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''
+    .                 ......                .......................................   ..............................
+                       =----                 == === = -----==============---==--==     ----H---=--HHHHHHHHHHHHHHHHHH
+                                                                                           C      CBBBBBCBBBBCBBBBBB
 OOOO1 =AA1)=ZZ+))AOOOOOOOOOZ=XOMOOO)     -)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=
++++-              ++++++=++   = -++         +++++++++++X++++++++++++++++++X+++++++++  ++XXXXXXX++XXXXXXXXXXXXXXXXXXX+
+ ''                ''''' '       ''          '''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''
+ ..                 ....         .           ......................................   ..............................
+ =                   ===         =            == ======-============== = =-=======     =-------==HHHHHHHHHHHHHHHHHHH
+                                                                                                 CCBCCBCCBCBBCBBBBBB
 OOO1- -MOOOOOOOOOOOOOOOM+A)=1MOMOOOO     -=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-
++++     ++-++++++++++++       - -=+-        =+++++++++++++++++++X++++XXX+++X++++++++- ++XX++++++XXXXXXXXXXXXXXXXXXXX+
+'       '   '''''''''''           '          '''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''
+        .   .... ......           .           .....................................    ..............................
+            ==    === =                        == == ===========-====---===-=====      =--==== =-HHHHHHHHHHHHHHHHHHH=
+                                                                                                 CCCCCCCCBBCCCBBBBBC
 M1Z=--=MOOOOOOOOOOOOOOM-ZO+1OMMOOAOO+     -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-
+        +++=+XXX++++X+   +  +  ++ ++        -+++++++++++XX+X+++X++X+X++XX+XX+X++++++++++XX+++++XXXXXXXXXXXXXXXXXXXXXX
+        ''' '''''''''              '         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        ..  .........              .         .......................................  ...............................
+         =  =-H-====-                          = =======--=-===-==-=-==--=--=-=====    =--== = -HH-H--HHHHHHHHHHHHHH-
+              C                                                                                 CC C  CBBBBBBBBBBBBB
 1))+--+OOOOOOOOOOOOOOX-XO)-)XMMOM1AOM      )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAX
+       +++=++++++X+++   +      +   =        -+++++++++++++XXX+++X+X+X+XXX+X+++XX+++++++++++X++XXXXXXXXXXXXXXXXXXXXXX+
+       ''' ''''''''''   '      '             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        .   .........   .                     .......................................................................
+        =    ====-  =                           ==========---===-=-=-=---=-===--== =    ===-= --HHHHHHHHHHHHHHHHHHHH=
+                                                                                                CBCCCCBBBBBBBBBBBBBB
 )-)- -1OOO)OOOOZ+==1)-=MOOA11XAA1)ZAZ      +XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+
+       ++- -+++         =-                   =++++++X++++++X++++X+++X+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXX+
+        '   ''                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        .                                     ...................................... .................................
+                                               == ==-======-====-===-============= =   = ==   HHHHHH-HHHHHHHHHHHHHHHH-
+                                                                                              CCBCCC CBBBBBBBBBBBBBBB
+                                                                                                                 V V
 - ---1)Z==))1OO1-=1)- )OOO1=---)1)++--    --)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+             --        +++                    +++++++++++++++++++++X+++++X+++++XX++++++++++++XXXXXX+XXXXXXXXXXXXXXXXXX+
+                        ''                     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ..                     ........................................................................
+                        =                          ================-=====-=====--= =   =  = =--HHHH=-HHHHHHHHHHHHHHHHH=
+                                                                                               CCBC  CBBBBCBBBBBBBBBBB
+                                                                                                                 V V
 ----1Z11-===-1XX=Z=+)-+1AA====)O+=----     -+AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                               -              =+++++++++X++X+X+++++X++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX+
+                                               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                ........................................................................
+                                                ========-==-=-=====-================   =====---HHH---HHHHHHHHHHHHHHHHH-
+                                                                                               CBC   CCCBBBBBBCBBBBBBB
+                                                                                                                   V
 A1 ---X- -=MOOXZ)1)11-)+ZZ-ZZ+)=--          =ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            +=                                 ++++++++++X+++++++++++++++++++++++X++++++++++XXXXXXX+XXXXXXXXXXXXXXXXXXX+
+            '                                  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+            .                                   ..................................... ..................................
+                                                 == =====-============ ==========-=    =====-HHHHHH=-HHHHHHHHHHHHHHHHH-=
+                                                                                             CCCCBC  CCBBBBBBBBBCCBBBB
 X- --MMZ)OMOOOOOOOOO1-ZOM1)A+ -+=)=  -      -)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+         = +-+++++=-   =                       =+++++++++XX++X++X+++++++X++++++++++++++++++XXXXXXX++XX+XXXXXXXXXXXXXXXXX
+              ''''                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+              . ..                              ..................................... ..................................
+                                                   ======--==-==-=======-= ========    ====-HHHHHH==HH HHHHHHH----HHHHH-
+                                                                                            CCCBBC  CC CBBBCBC    BBBBC
 =---=MOOMOOOOOOOOOOOX-=Z1)XOO-=1)1+-+1+     -)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      ++ +++++=+X+++       --                  -+++++++X+++++X+XXX+X+++++X+X+++++++++++++XXXXXXXXXXXXX++XXXXXX+XXXXXXXXX
+      '' ''''  '''''                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       .  ..   ....                             ...................................... .................................
+          =    =-==                               =====-=====-=---=-=====-=-=========  = ---HH-HHH--HH==HHHHHH=---HHHHH-
+                                                                                            CC BBB  CC  CBBBBC    CBBBC
+                                                                                                                    V
 Z--=Z)MOMOOOOOOOOOOO+-+MOXMOO)=))==-1XZ-     -ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       + =+XX+=+++++    -  ++                   ++++++X++++X+XX++++X+++++++XX++++++++++++X+XXXXXXXXXXX+=XXXXXXXXXXXXXXXX
+       '  '''' ''''        ''                   ''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''
+          .... ....        ..                    ...................................................... ................
+          =--=   ==         =                     ====-====-=--====-=======--========  ==H=-H--HHHH-HH  -HHHHH-HH--HHHH-
+                                                                                         C  C  CBCC BC   CBBCB CC  BBBC
+                                                                                                                    V
 ) -)MXOOOOOOOOOM)X1= =)AMOOOO= ===+=MOX)     -+AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      =+++XX+++          -+++        -          -++++++++++++++++XX+++X++++X++X+++++++++XX+XXXXXXXXXXX+=+XXXXXX+XX+XXXXX
+       ''''''             '''                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''
+        .....              ..                    ......................................................  ...............
+        = --=              =                         ============--===-====-==-=======  --=-H--HH---HH=  -HHHH-=-H=-HHH-
+                                                                                            C  BC   CC    BBBC   C  BBC
 )=ZMOOOOOOOOOO1+)MZ-=-1MOOMOO- --Z+-XM11)    -=1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOO
+    ++==++XX++          -+ -=                    +++++XXXX++++X+++XX+XX+++++X+XXXXXX+++++X+XXX+XXXXXXXX+ +XXXXX++X++XXX+
+    ''   ''''            '                        '''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''
+         ....            .                        ...................................................... ...............
+         =--=                                       ==----====-===--=--=====-=------=== =-=-HH=HHH-HHHH   -HHHH==-==HHH=
+                                                                                            CC CBC BBBC    BBBC     CBC
+                                                                                                            V
 Z)MOOZMOOOOOO1--1M)-+)XOMOZMO  -+1==Z1)AM-    -+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   +-  +-=+++          - +  -                    +++++++++++++++XXX++XX+++X+++++XX++++++++XXX++XXXXXXXX+-=+XXXXXXX++XXXX
+          '''            '                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''
+          . .                                      .....................................................  ..............
+                                                   =============---==--===-=====--====   =--H==HH--HHHH   =HHHHH-H  -H--
+                                                                                            C  CC  CBBC    CBBBC C   B
 1))XOMOO1Z1MO)- -=--1O1X1)=ZA- -)Z--)=1MOM     -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMOOOOOOOOOOOOO
+    - +=    =        -                  +        -+++++++X+++XX+X+++X++++++++X++++X++++++++XX+XXXXXXXXX+-  +XXXXXXX+++XX
+      '                                           ''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''''''''''
+                                                   .....................................................   ........ ....
+                                                   = ====-===--=-===-========-====-=====  =-H=-HHH-HHHH=   =HHHHHH- ==--
+                                                                                            C  CCC BCBC     CBBBCC
  -=OO-111--))=)1+=)++Z-==+OOA-  =+--)=ZOOO-   --)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)OOOOOOOOOOOOO
+   +-                     --           +++        +++++++++++++++++++++++++++++++XX+X+++++++X+XXXXXXXXXX+  =+XXXXXX+++XX
+                                        ''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''
+                                        .          ......................................................   ............
+                                                   = == ======== ==== ====== ====--=-= =  ==-=-HH--HHHHH=   =HHHHHH= =HH
+                                                                                               CC  BBBBB     CBBCCB   CC
  --)-  X)---==1ZZ1-- -+11OOOO- -++=-)-MOOO1    -=1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)OOOOOOOOOOOO
+                         ++++          +++         ++++++X+++X+XX++XXXXX+XXXX+X+X+XX+X+++++++++XXXXXXXXXX+  -+XXXXXX++++
+                         ''''           ''         ''''''''''''''''''''''''''''''''''''''' '''''''''''''''   '''''''' ''
+                          ..            ..          .....................................  ..............    ........ ..
+                           =            ==           ====-===-=--==-----=----=-=-=--=-= =  ====-HHHHHHHHH    =HHHHHH= ==
+                                                                                                CCCCBBBCC     CBBBBC
+                                                                                                    VV
  ---= -Z+--==)XM)=))==XM1MOOM  -XZ+++=MOOOO     -)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1MOOOOOOOOOO
+                          ++           +++-        -++++++++++++X+++++X+++X++++++++++++++++++++XXXXXXXXXX+    +XXXXXX--+
+                          ''            ''          ''''''''''''''''''''''''''''''''''''''  ''''''''''''''    '''''''  '
+                          ..            ..          ......................................  . ............    .......  .
+                                        =            ===========-=====-===-====== ==== ==   = =HHHHHHHHHH=     HHHHH-
+                                                                                               CCCCBCBBBC      CCBBC
 =)-  ---=)Z1+OOOOM)+--+1ZOOA   +OM)+=+AOOOA-     =)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOXX1MOOOOOOOOO
+             -++=        =+     +      =+-         -++++++XX++X+XX++X++XXXX++++++++X+++++++=+ +XXXXXXXXXXX-    +XXXXX+=+
+               '          '             '           '''''''''''''''''''''''''''''''''''''''   ''''''''''''     ''''''' '
+                                                     ......................................   ............     .......
+                                                      ====--==-=--==-==----========-======     HHHHHHHHHH-      -HHH-
+                                                                                               CCCCBBBBBB        BBB
 M)-+=+)+)OM)++1XA==Z11-)1OO=   1M=-==1OOOZZ-     -)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOXOOOOOOOOO
+         =               -+           ---           -+++++++++++++++++XX+XX+++XX++++++++++++- +XXXXXXXXXXX+=-- =+XXXXX++
+                          '                          '''''''''''''''''''''''''''''''''''''''  '''''''''''''     ''''''''
+                          .                           .....................................   .............     ........
+                                                       ===============--=--===--========  =    HH-HHHHHHHH=      -HHHH==
+                                                                                               CC BBBBBBBB        BBBB
+                                                                                                    VVV             V
 OOOOOOOM)M+-- -1)=1ZOM=)Z1=--  1X=-==1MMOM1+=    --ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOO
++=+=+++             =                   -            =+++++X++++++++++++++++XXX++X++++++++++= ++XXXXXXXXXXX+-=+++XXXXXXX
+'    ''                                               ''''''''''''''''''''''''''''''''''''''   '''''''''''''  ''''''''''
+.    ..                                               ......................................   .............    ........
+     =                                                = ===-================---==-=========    =--HHHHHHHHH=     --HHHHH
+                                                                                                  CBBBBBCBB        BBBBC
+                                                                                                    V                V
 OOOOMO1=-+Z= -XM+AMOOO1AO)-    +M+=))ZMMOOZ)X     -+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++- =             =+-  -               --           -++++++++++X+X+XX++X+++XXX++++++X+++++++-=+++XXXXXXXXXX+++++++XXXXX
+'''                 '                                 ''''''''''''''''''''''''''''''''''''''   '''''''''''''' ''''''''''
+ ..                 .                                 ......................................    ............. ..........
+ =                                                     =========-=-=--==-===---======-======    ==HHHHHHHHHH=     =HHHHH
+                                                                                                  CCBBCCCBBB       CBBBB
+                                                                                                                     VVV
 ZOOOOOO11MZ  -==ZOOOOAZOO=--   1O+))+))1MOAZXX     =1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ +++=++          ++++  =+       -        =            +++++++++XX+++++XX++++++++XXX++XXX+++++++==+XX++++XXXXX+++++++XXXX
+ ''' '           '''                                   '''''''''''''''''''''''''''''''''''''''   '''''''''''''''''''''''
+ ...             ...                                   .......................................   ............. .........
+   =               =                                      =====--=====--========---==---===      =--=== -HHH-=  ====HHHH
+                                                                                                         CCB        CBBB
+                                                                                                                     VVV
 OOOOZOOZMA- -- =OOOOOOAO----  -XOZZ))MOAOOA1ZO     -)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++ ++         +XX++= -        -     - ++   +        +++++++XXX++++++++++XXX+++++++XXXX++X++++=--++--++++++XX+++XXXXXXX
+ ''' ''         '''''                   '              ''''''''''''''''''''''''''''''''''''''''   ''  ''' ''''''''''''''
+  .  ..         .....                                  ........................................   ..   .  ..............
+                 --=                                     ====---= ========---=======----==-==     ==       =-H   ----HHH
+                                                                                                             C       CBB
 OOOXZOZMA   - 1OOOOOOOO1 --- -=MXZ1ZXOOOOOX1OO+     =1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1MOOOOOOOOOOOOOOOOO
++++  =         +XX+==+-              -++++  -+        -+++++++++X++++++++++++++XX+++++++++X++++++-=+   +++++X+XXXXXXXXXX
+ ''            ''''                   ''''              '''''''''''''''''''''''''''''''''''''''''  '    ''''''''''''''''
+ ..            ....                   ...               ........................................        ................
+                --                     =                  ======-========= ====--==== ====-===           ===-=---HHHHHHH
+                                                                                                                 CBCBCBB
+                                                                                                                       V
 OOOZ11OO)==--OOOOO1MOMA --- --)ZZA1))OOOOOOOOOZ     -)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXMOOOOOOOOOOOOOOOOO
++++   =+     -+X++  -                =++++--+=         =++++++++X+++XXXX+X+X+XX+XXX++++X++++++++++=+   -+++XXXXXXXXXXXXX
+'''    '      '''                     ''''              '''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''
+ ..    .      ...                      ..               ........................................         ...............
+ =     =      =-=                                         ======-===----=-=-=--=---====-=======           =---HH--HHHHHH
+                                                                                                              CC  CBBBBB
+                                                                                                                   V   V
 ZOA--+OOOO= =OOOM=)MX) ---- --==1A1)ZOOOOOOOOMX-     =1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ11ZOOOOOOOOOOOOOOO
+ -    -++-   -++                     =-++=-+=           ++++++++++++++XX+++X+XXXX+++X+++++++++++++++     -++++XXX+XXXXXX
+       '      ''                        '                ''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''
+       .      ..                                         ..........................................        .............
+              ==                                          ============--===-=----===-==========             ==-H-=-HHHHH
+                                                                                                               C   BBBBB
+                                                                                                                     VV
  =- =+Z1=--==1ZX)1ZOO=   -- ---1XX==MOOOOOOOOOA1-    -)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                   -+                +-==++++-          =+++++++X+X+X+XXX++X+X+X+++++X++X+++++++++++==+++++++XXXXX+XXXXX
+                                          ''             '''''''''''''''''''''''''''''''''''''''''''  ''  ''''''''''''''
+                                          ..             ...........................................  .   ..............
+                                           =              ======-=-=-=---==-=-=-=====-==-=======           ==---H- HHHHH
+                                                                                                                C  CBBBB
+                                                                                                                      V
 ==-  1OO)-=--+ZMX1XO+---=-  -=-+))-)OOOOOOOOOOZ1-    --1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      ++           =                ++++++++++           +++++X+++++++++++++++X++X++++++++++X+X++++++-+++++++XXXXXXXXXXX
+                                     '''''''''           '''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''
+                                     ...  ...             ...........................................  .. ..............
+                                           ==               ==-===============-==-==========-=-=   =    =  ==-HHHHH-HHHH
+                                                                                                              CCBCC CBBB
+                                                                                                                      V
 - - -1OOM1+11XA)XZ))---- -- =1ZZ1=-AOOOOOOOOOOZX=    --+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      --                            ++++++++++           =+++++++X++XX+XX++++X+++XX++++++++++++++++++++++++++XXXXXXXXXXX
+                                    ''''' '''             '''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''
+                                    ....  ...             ............................................  ................
+                                    ===   ===              ======-==--=--====-===--============== ==     == =-HHHHHHHHHH
+                                                                                                              CCCBBCBBBB
+                                                                                                                      V
    -)OOOOOOOOA=-+)+---  ---=11AZ)=+OOOOOOOOOOO11-      =ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     -+=+=-++                      =++++++++++           -+++++XX++X+++X++X+XX+X++++X+++++++X++++++++++==++++XXXXXXXXXXX
+      ' '                           ''''''''''            '''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''
+                                     .... ....            ............................................   ...............
+                                        =  ==              =  =--==-===-==-=--=-====-=======-========     ===HHHHHHHHHHH
+                                                                                                             CBCBBBBBBBB
+                                                                                                                     VVV
   ==OOOOOOOOZ)-=- - - -----)XAMX)=)OOOOOOOOOOOZ)-      =)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    +++XX+++                       +++++++++++            ++++++++++X+X+X+++X+++X+++++++++X++X++++++++++-++XXXXXXXXXXXXX
+     '''''''                       ''''''''''              ''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''
+     .......                        .........              ............................................. ...............
+      =--                             ====                    ======-=-=-===-===-======== -==-========    =-HHHHHHHHHHHH
+                                                                                                            CCCCBBBBCCCB
  -ZOOOOOOOOOM+-=-=--- ----==ZOAO+-1OOOOOOOOOOO1+-      -+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+   -+++XXXX+                 - -   +++++++++++            -+++++X++X+++XX+++++X+++++++++++X+XX+X+++++++++++++XXXXX+++++
+     '''''''                       ''''''' '''             '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''
+     .......                       ....... ..               .............................................  ...........
+     ==HHHH                         ====   =                ==  -==-===--=====-===========-=--=-=====  =   ==-HHH- ==
+       BBCC                                                                                                   CBC
 +-XOOOOOOOOOA+))=- -- --=-)1MAM)--XOOOOOOOOOOO-=       --1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   +==+XXXX+                       +=+++++++++             +++++++++X+X+++++++++X+++++++++X++X+X+++++++++++++++++++--=-+
+   '  ''''''                         '''''''''              '''''''''''''''''''''''''''''''''''''''''''''' '''''''     '
+   .  ......                         ..... ..               .............................................. .......
+      =HHHH=                         ====                     ======-=-=========-=========-==-=-=========    =====
+       CBBB
 -ZOOOMOOOOOOOAOO=  ---===+ZMM1)= -OOOOOOOOOOOM==+       =+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  ++- +XXXX+- =+                  -++++XX+++=              =++++++++++XXX+++XX+XX+++++++XXX+XXX+X+XX+++++++=++++++++++++
+  ''  ''''''                       '''''''''                ''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
+  ..  ......                       . .......                ............................................... .........
+      =HHH-                          ==--==                  =========---===--=--=======---=---=-=--======   = =====
+       CCC
 XOOOOOOOOOOX=)OX- -- )-++)XXZZ++ )OOOOOOOOOOOZ-+1-      --1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOO
+ ++++++XXX+   -                   ++++XXXX+++               +++++++X++XX++++++X+++X+++++X++XXXXX+XXX+X++++++  ++++X+XX++
+ '''  '''''                       '''''''''''               ''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''
+ ...  .....                        ..........                ...............................................  ..........
+ ===  =H-H=                        ===-HH-===                 == ==-==--======-===-=====-==-----=---=-=====   =  =-=--==
+       C C                             CC
 OOOOX=OOOOOM1ZZ= - -)=++)XZ)O+++-MOOOOOOOOOOO)=)Z-       -)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-++X  +++++                 -     +++XXXXXXX+               +++++++X+X++XX+X+++X+++++++++++++++X++X+XXXXX++++++-=+++++++
+ '''  '''''                       '''''''''''                ''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''
+ ...   ....                       ...........                ................................................ .  .......
+  =-   ==                            HHHHH-H                   ====-=-==--=-===-===============-==-=-----= =     === =
+                                     CCCCC C
 OOOOMAOOOOMOX1+-  --=-)XXZ+AM)Z-+OOOOOOOOOOOO=+MX+        +ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOO
+++X+  +XX+ -                     -+-+XXXXXXX-               -++++++++++++X++++++++++++++++X+X+XXXX++XXXXXX+++++ ==++++++
+''''  ''''                        ' ''''''''                 '''''''''''''''''''''''''''''''''''''''''''''''''    ''''''
+....  ....                        . ........                  ................................................     .....
+ =H   =--                           =HHHH--H                   ==========-================-=-=----==------==        ====
+  C                                  CBCC  C
 OOMXOOOOOOO+==-- -=--)1OX1XXM1=-XOOOOOOOOOOOX-+OO+- --    -)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++  +++XX+-            -         +++XXXXX+X+   -=            -++++++++++X++X+++++++++++X+++XXXXX++XX++X+XXXX++++=++++++X
+''  ''''''                       '''''''''''                  '''''''''''''''''''''''''''''''''''''''''''''''''  ' '''''
+..  ......                       ...........                   ................................................    .....
+==   ==HH                           -HHHH -=                   =========-==-===========-===-----==--==-=----==      ===-
+       CC                            BBBC
 MZ=ZOOOOOOOZ+--- =)-1XAA1)+ZM1==MOOOOOOOOOOOZ-ZOO) ---    -=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    +XXX+-+                      +++XXXXX+X+   =-            -=++++++++++++++++++++++++++++++++++++XX+X+X+X+++++++++++++
+    '''''                        ''''''''''                    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    .....                        ..........                    .................................................  ......
+    =---                           =-HHH-=H                       ======== == = ============ ======--=-=-=-====     ====
+                                     BCB  C
 1)=OOOOOOO=-  - -=-+XX1)+ZMZ)=+)OOOOOOOOOOOX)-1OOM=-=-     -1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -++X+=-                      +++XXXX++XX    ==             +++++++++XX+X+++++++++++++++++++XXXX+++XX+X++X++++++++++++
+    ''''                        '''''''''''                    ''''''''''''''''''''''''''''''''''''''''''''''''''' '''''
+    ....                        ...........                    ..................................................  .....
+     =-=                         ==--HH= --                     =======--=-===================----===--=-==-=====   ====
+                                     BB
 A--=ZOOOZ1  -   --=XAXA1AOA++1+MOOOOOOOOOOOO1)ZOOM1=+=-    -+AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     -==                 =      ++XXXXX=+++-   ++             =+++++XXX+X++++++++++++++++X++++XXX+XXXXX++XX+++++++++++X+
+                                ''''''' '''    ''               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                ....... ..      .               ........................................................
+                                ==-HHHH ==                        = ---=-======== =======-====---=-----==--===== =====-=
+                                   CBBC
 +-- -OOZ)=--- -- =ZAXXMZMAZ)))=MOOOOOOOOOOMOOZAOOOM1Z==    -=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     ++                         ++XXXX++++ +-  ++-            ++++++++++++++X+++++++++++XX+++X+XXX+XXXXXXXXXXXX+++++++++
+     ''                         '''''''''' '   ''               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      .                         .......... .   ..               ........................................................
+                                ==-HHH= ==      =                  =========-===========--===-=---=----H-------====== ==
+                                   BBB                                                                 C
 )1=1MOOO--- -- =+ZAAZOMAAZXOOZ)OOOOOOOOOOAOOZZMOOZ111-=-    -)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     +++             +     --  +++XXXXX++ ++   ++              ++++++++++++++++++++++++++++++++X++XXX+X+XXXXXXXX+++++++X
+     ''              '          '''''''''  '   ''               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     .               .          .........  .   ..                .......................................................
+                                  HHHH-==  =   ==                 = == ========================-==---=-=H-------====  =-
+                                  CBCB                                                                  C
 )ZOOOOOX==- ---+XAMOOOZXMOOOM+)OOOOOOOOOOOOOMAOOOMOAM)1A    -+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -=+++            +++   +++   +-+XXXX++++++  ++X +            -+++++++++++X+++++++++++++++X+XXX++XXXXXXX++XXXXXXX++++XX
+     ''              '    ''   ' '''''''' ''   ''               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ..                        . ........ ..   ..                .......................................................
+      =                           -HHH=== ==   =-                  ========-===============-=---==----H--==--H----====-H
+                                   CCC                                                                C      C         C
 OOZXOO)-+=-  -+1OOOOOXMOOOOO1=OOXOOOOOOOOOOOOMOOOOOMO1AO-    -1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++-  -+          -=+-+  ++++-  =+ +XXXX+++++++ ++=-+ -  -        =++++++++++++++++++++++++++++++X+X++XXXXXXXXXX+X++X+++XX
+'                 '    ''''    ' '''''''''''  ''  '              '''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                  .     ..     . ...........  ..  .               ......................................................
+                                 =HHH-== ===                      ======= == ==== ==== ========-=-==----------=-==-===HH
+                                  CCC                                                                                 CC
 OOOOOO+=1-- --)MOOOMOAOOOOOO=+OOAOOOOOOOOOOOOMOZOOOMMXOMZ    -=XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++-          +++ + +++++-  += +XXXXX+++X++ - --+   -         -=++++++++++++++++++++++++++++++X++XXXXXXXXXXXXXX+XXXXXX
+'''''           ''  ' '''''   '  '''''''''''      '               ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  ..           ..    ....    .  ...... ....      .               ......................................................
+    =            =    = ==       =HHH--  =-=                       ======== === ================-==---------H----=---HHH
+                                  CCC                                                                       C        CCB
 OOOOOOOX=-  --XOOOXOOOOOOOOA-1O1OOOOOOOOOOOOOXZOOOOMMXOOO-   --)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++-+XX+-        +++ +-++++++   + +XXXXX++++X++  +++-   -+-        =++++++++++++++++++++++XXX+++XXXX+X++X+XXXXXXXXXXXXXXXX
+' ''''         ''' '  ''''      '''''''''''''  ''                  '''''''''''''''''''''''''''''''''''''''''''''''''''''
+. ....         ..  .  ....       ............  ..                  .....................................................
+=  HH           =      ==        -HHH-== =-=                       == == ====   ====== =---===----=-==-=--------H-----HH
+   CC                             BBC                                                                           C     CC
 OAOOOOZ=-  -=1OOOOOOZOOOOOOX)MOZOOOOOOOOOOOOO)OOOOOXZ1XZ)=    -+AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++ +++=        =+++++ +++++=   + +XXXXXX+++X+- +X++=              -++++++++++++++++++++++X++++XXX+XXXXXX+XXXXXXXXXX+XXXXX
+'  ''          ''''' '''''      ''''''''''''  ''''                ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  ..          .. .. .....      ...........   ....                 .....................................................
+=  ==                 ==        =HHHHHH===-    - =                  ==  === ========  ==-====---=------=--HH------=----H
+                                 CBCCCC                                                                   CC           C
 OXMM)-------)MOOOOOAAOOOOOM)1MMAOOOOOOOOOOOO1AOOOOMZ)ZOOZZ-    =1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++             +++++  +++++      XXXXXXX++++-  ++++    -=         -+++++++++++++++++++++++++++X+XX++XXX+XXXXXXXXXXXXXXXXX
+'             '''''  '''''      '''''''''''   '''                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.               ...  .. ..      ...........   ...                  .....................................................
+=                ==   = =       -HHHHHH====   ==                     =  ======  ====== ======-=--==---=----H---H-H-H---H
+                                 CBCCBC                                                                    C   C C C   C
 O1++)=++-- =AOOOOOO)OOOOOOX1ZM+MOOOOOOOOOOOOOOOOOOAX11OOMMZ    -1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X            =+-++= ++++++      XXXXXXXX++++=-++++    ++          =+++++++++++++++++++++++++X+++X+XX+X+X+XXXXXXXXXXXXXXX
+'             '  '  ''  '       '''''''''''   '''      '           '''''''''''''''''''''''''''''''''''''''''''''''''''''
+.             .  .   .  .       ...........   . .      .           .....................................................
+-                    =  =       HHHHHHH-=     =        =             ===== ========== ======-===-=--=-=-=--HHH-H---HH---
+                                CCCBBBC                                                                    CCC C   CC
 X-X1MZA) --)OOOOOOMMOOMOOOM+1O=OOOOOOOOOOOOOOOOOOOM)1AOOOOA-    =ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            -+++++  ++ +++   = +XXXXXXXX+-++++++++    ++--        -++++++++++++++++++++++++++++++X+XXXXXXXXXXXXXXXXXXXXX
+             ''' '  '' ''      '''''''''' ''' ''''                 '''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ..  .  .. ..      ..........  .. ...                   ....................................................
+                       ==       HHHHHHH-   == ==                     ========= ===== == =========-=--------H-----HH-HHH-
+                                CBBBBBB                                                                    C     BC CBC
 OOAZOOA- -1AOOOOOO1OOOOOOOX=+M=OOOOOOOOOOOOOOOOOOOMZXMOOOO)-    =1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-+  ++      +=+++= ++++X++     +XXXXXXXX++++++++=+    -+==         -++++++++++++++++++++++++++++++++XX++++XXXXXXXXXXXXXX
+ '   '        '''  '''''''     ''''''''''''''''' '                  ''''''''''''''''''''''''''''''''''''''''''''''''''''
+ .            ...   ......     ..............    .                   ...................................................
+              ==      =- =     =-HHHHHH-=== =    =                     = =====  ======= =  =========--====--HHHHHHHHHHHH
+                                 CCBBBB                                                                     CCCCCCBBCBCC
 OOOOOOO--=1OOOOOOOMOOOOOOO)=+)=OOOOOOOOOOOOOOOOOOOMXMAOOOO))-    +XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+=++=    =+++X+- +++XX++     ++XXXXXX++X+++-=+++    +++-         -+++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXX
+''  ''      '''''  '''''''     ''''''''''''''  '''     ''           ''''''''''''''''''''''''''''''''''''''''''''''''''''
+..  ..       ....  ......      ..............  ..      ..            ...................................................
+H-  ==        =-     =--=       =-HHHHH= - =           =               ============ ======= == ====-----------H-HHHHHHHH
+C                                 CCBBB                                                                       C CCCCBBCC
 OOMOOOM--+MOOOOOOMOOOOOOOOZZ--=OOOOOOOOOOOOOOXMOOMAAOMOOOZ=+=   -=ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+ +X+     ++X+++ ++=XXX++     +++XXXXXX+X-++  =+   - ++-           +++++++++++++++++++++++++++++++++XX+XXXXXXXXXXXXXXXX
+'' '''     '''''' '' '''''     ''''''''''' ''   '                   ''''''''''''''''''''''''''''''''''''''''''''''''''''
+.. ...     ......    .....     ........... ..   .                    ...................................................
+H=  -=      =- ==    -H-=      ===HHHHH-=- ==                          =   ======= ==================--=----HHH-HHHHHHHH
+B                     C           CBBBB                                                                     CCC BBCCBBCB
 OOMOOOZ--1OOOOOOOZOMOOOOOOXX--=OOOOOOOOOOOOOOA1OAZXMOXOM11-+1=   -+ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X= +++    -+XX+++ + +XX+++     ++XXXXXX++++++  =    + -              =+++++++++++++++++++++++++++++++X+++XXXXXXXXXXXXXXX
+'  '''     '''''' ' '''''      ''''''''''''''                         ''''''''''''''''''''''''''''''''''''''''''''''''''
+.  ...     ...... . .....      .............                           .................................................
+-   =       --==     HH==        -HHHHH===                             =  =  ====== ====== ==========-===--H--------HH-H
+                     CC           CBBBC                                                                    C        CC C
 OOOOOO1=-+OOOOOOOOOOOOOOOOZM- -OOOOOOOOOOOOOOZMOOXMOOMAOO1+1AM-   -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++XX+    =+XXX++-+=+XX+++     =+XXXXXX+++++=  -=  =+  ==           -++++++++++++++++++++++++++++++XX+X+XXXXXXXXXXXXXXXX
+' ''''     ''''''   ''''''      ''''''''''''                         '''''''''''''''''''''''''''''''''''''''''''''''''''
+. ....     .....    ......      .......... .                          ..................................................
+-  HH=     =---=    =HH==       =H--HH-===                             = = = === ==== == ===  =====--=-=-----HHHHHHHHHHH
+   CC                BB          C  BB                                                                       CCCBBCBBCCB
 OOOOOO)==)OOOOOOOOAOOOOOOO1O=--OOOOOOOOOOOOOAAXXZXMAMMMOOX)MXOM   -=AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XX+    ++XX++-- -XXXXX+ -   =+X++XXXXX+++           =-    -       -++++++++++++++++++++++++++++++X+++XXXXXXXXXXXXXXXX
+''''''    ''''''    ''''''      ''''''''''                            ''''''''''''''''''''''''''''''''''''''''''''''''''
+.....     ......    ......      ..........                             .................................................
+  =HH      =-H =    -HH--=      =- =-HH--                                =  ===  ========= =========-===------H-HH-HHHHH
+   BB        C       BB              CC                                                                       C CC CCBCB
 OOOOOM1=+XOOOOOOXMAMOOOOOO+O) -ZOOOOOOOOOOMZ1AZ1XOOOMMOOMZ1AZOOZ   =ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+XX+     ++XX++    XXXXX+ -    +++-+XXX+=       -+-  --     -+       ++++++++++++++++++++++++++++++++XX+X+XXXXXXXXXXXXX
+ ''''     '''' '    ''''''      ''' '''''                     '        '''''''''''''''''''''''''''''''''''''''''''''''''
+ ....     .... .    ......      ..   ....                     .        .................................................
+  -H=     ==H-      -H-H-=      ==   -HH=                                  ==  ==  === ==== ===  =====--=-=-----H-HHHHHH
+   C        C        B C              CC                                                                        C CCBBCC
 OOOOOOA=1AOOOOOO1ZAOOOOOOO+A1---OOZ1MOOOO1=ZZXZAOOOOOOOOOM1A)MOO-  -)AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXX++    ++++++   -+XXXX+      ++   ++++       -++-=++++     ++       +++++++++++++++++++++++++++++XX+X+XXXXXXXXXXXXXXX
+'''''     '''''     ''''''       '   ''''                     ''       '''''''''''''''''''''''''''''''''''''''''''''''''
+ ....     .....     ......       .    ...                     ..       .................................................
+ -HH=      ===      =H-HH=            ==                       =         ==== ===== = ==    = ======--=-=---HH-----HHHHH
+  CB                 B CC                                                                                   CC     CBCBB
 OOOOOOM1)AOOOOOOOMOMOOOOOO11Z---AOM)=)OX+))1X)MMMOOOOOOOOMXZAMOOM  -=1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++-+XX+    ++X+X-- = +XXXX+       +    -          -=+++-=+     ++       =+++++++++++++++++++++++++++++++X+X+X+X+XXXXXXXXX
+  ''''    '''''     ''''''       '                  ''  '     ''        ''''''''''''''''''''''''''''''''''''''''''''''''
+  ....    .....     ......       .                  .   .     ..        ................................................
+  =H-      =-=-      --H-=                                              === === === == = == ==  = =====-=-=-=-=--HHHHHHH
+   B                   B                                                                                         CCCBBCB
 XOOOOOOAX1OOOOOOOOOMOOOOOOOAX---=OO)--- ---)XZMAXOOOOOOOOAZ1XOOOO)  -)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ +XXX+-   -++++++-- -+XXX+=      -=              -+++=+++    -+++      =++++++++++++++++++++++++++++X+++X++XXX+XXXXXXXXX
+ '''''     ''''''    '''''                         ''  ''     '''       ''''''''''''''''''''''''''''''''''''''''''''''''
+  ....     .... .    .....                         ..  ..       .        ...............................................
+  -HH=     ==== =    =HH-=                          =  =                   == = ===   = === = =  = =-===-==---=------HHH
+   BB                 CB                                                                                             CCB
 OOOOOOMMOAAOOOOOOOOO1OOOOOOOO--=-+XMX-=-)XMOMXXAMOOOOOOOOMM1OOOOOO-  =1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX++=  -  +++++++=- ++++++--              -     ++++++++   -+++++      =++++++++++++++++++++++++++++++X+++XXXXX+X++XXXX
+ ''''      '' ''''    '''''                      ''' ''''    '''''        ''''''''''''''''''''''''''''''''''''''''''''''
+ ....      .. ....    .....                       .. ....     ....        ..............................................
+ --==      ==          ==                         ==   ==       =           =  = =    = =     = =   ===-===-----=-==-HHH
+                                                                                                                     CCB
 OOOOOOOXOO)OOOOOOOOMAMOOOOOOM=--===+=)Z))XOOOOOAOOOOOOOOOAMOOOOOOOO  -+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX+X++ +- ++=+++++   ++X+++              =+=++ -++++X++=  +++++XX+     -++++++++++++++++++++++++++++++++X+XXXXXXXXXXXXX
+''''''  '   '  ''''   ''''''               '     '' ''''   '''''''       '''''''''''''''''''''''''''''''''''''''''''''''
+......  .   .  ....   ......                     .. ....   .......        ..............................................
+ H- -=          ==    ==-                            -==      ==-H           =  = =  == = = =  == === ===-=--------HHHHH
+ C                                                               C                                                 CBCBB
 OOOOOOOOOO+ZAOOOOOOOOOOOOOOOA)- -+=--=+ZOOOOOOOOOOOOOOOOOOOOOOOOOOO)  -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXX+=++   ++++++=+-++X+++            ++++++++++++XX++=-++++XXXX+     -++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXX
+''''''' ''     '''' ' '''' '            '''''' '''''''''  '''''''''       ''''''''''''''''''''''''''''''''''''''''''''''
+....... ..      ...    ... .             .. ..  ........  .........       ..............................................
+= =-HH   =        =     -=                  =     ==--     ===-HH-=           =   == == == ========= ==---------H-HHHHHH
+    BC                                                         CC                                               C BBBBBC
 OOOOOOOOOOX)=OOOOOOMOOOOOOAO)1------=++AOOOOOOOOOOOOOOOOOOOOOOOOOOOO- -+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++++   -+==-- +++++= =            +++++++++XXXX++++++++XXXXXXX     -++++++++++++++++++++++++++++++X+X+XXXXXXXXXXXX
+''''''''''           ' ''                ''' ''''''''''  '''''''''''      ''''''''''''''''''''''''''''''''''''''''''''''
+......  ..           . ..                .     ........   ..........       .............................................
+-  =     =                                     ==--HH=      =HH-----        == == = =    ==    == ======-=-=---HH-HHHHHH
+                                                   CC        CC                                                CC CCBCBB
 OOOOOOOOOOO)-ZOMOMXZAOOOZOMMZ1-==--=-)=-)XXMOOOOOOOOOOOOOOOOOOOOOOOOO  -ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++=+++++=   + -    --- -                  ++XXXXXX+++=++++XXXXXXXX+     =+++++++++++++++++++++++++++++XXXXXXXXXXXXXXXX
+'''' '''''                                  ''''''''''' '''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''
+....  ....                                   .......... ............       .............................................
+HH==   ==                                     ---HHH=     ==-HHHHH-H         = = ====      ===== =======---HH-HHHHHHHHHH
+BC                                               CCC         CCCCC C                                       CC CCCCCCCCBB
 OOOOOOOOOOOM+=XXMOMXMMXXX11Z=--+)+-== -1))MOOOOOOOOOOOOOOOOOOOOOOOOOOM -=1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX+=++++++      -                         ++XXXXX+=-++-+++XXXXXXXXXX      =+++++++++++++++++++++++++++++XXXXXXXXXXXXXXX
+'''' ''''''                                ''''''''  '  '''''''''''''       ''''''''''''''''''''''''''''''''''''''''''''
+.... ......                                 .......  .   ............        ...........................................
+=--=  =====                                 =--HHH=      ==--H-HHHHHH        =  ===  =         =  = =====----H---HHHHHHH
+                                               CCC           C CBBCCC                                        C   CCBCCCC
 OOOOOOOOOOOOZ))1XOXZMOOOA1AA))-++1)=== )ZMOMOOOOOOOOOMMOOOOOOOOOOOOOOO)  )AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX++XX++++     -   =--                  - -+++=-==+  ++XXXXXXXXXX+X+     -++++++++++++++++++++++++++++++++XXXXXXXXXXXX
+'''''''''''                                  '''    '  '''''''''''''''      ''''''''''''''''''''''''''''''''''''''''''''
+.... ......                                  ..        ...............      ............................................
+HHH-  -H= =                                             =-HHHHHHHHH=-=       ===  = =  =      = = ==  ======---HH-HHHHHH
+BBB    C                                                  CBBCBCBBC                                            CC CCCCCC
+  V
 OOOOOOOOOMOOOZZZZMOOOOOOOXAOA11+)1XAMZ1)=1)))XXAMOOOOOOOOOOOOOOOOOOOOOO- -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX++XX- +=-     =------  -                     =-++++XXXXXXXXXXX+XXX+    -+++++++++++++++++++++++++++++X+XXXXXXXXXXXXX
+''''''''  '                                         '''''''''''''''''''     ''''''''''''''''''''''''''''''''''''''''''''
+........  .                                         ...................     ............................................
+-HH-  HH                                             = --HHHHHHHHH=---         = ==  =      === = = =====-=-----HH-HHHHH
+ CC   CC                                                 CBCBBBBBC                                              CC CBCBB
+                                                             VV
 XOOOOOOOOOOOOXZZZMOOOOOMMXXMA1Z+1AAMMOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOM- +XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ +++++XX+XX+-     ++++-              =++-=== -+++++XXXXXXXXXXXXXXXX++++     -+++++++++++++++++++++++++++++XXXXXXXXXXXXXX
+  '' '''''''       '                          ''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''
+  .. .......                                    .....................        . .........................................
+  ==  --=--                                        ----HHHHHHHHHH--==          == =     =     =  ==  =====----HHHHHHHHHH
+                                                       CBBBBBBBBC                                             CCCCCCBBBB
+                                                                                                                       V
 ZOZ=MOOOOOOO1OZXXAMOOOOOOOMOOMMMZMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- )MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -   ++++X+- +     +++=-== =-     -  -++++++XXXX+XXXXXXXXXXXXXX+++=+++XX=    =++++++++++++++++++++++++++++++X+XXXXXXXXXX
+     ''''''  '     '''                 ''''''''''''''''''''''''' ' '''''       '''''''''''''''''''''''''''''''''''''''''
+     ......        ...                 .........................    ....        ..........  . ..........................
+      ===H=         =                   = = -HH-=-HHHHHHHHHHHH-=     =-H          =   =            ===== ===-=-----HHHHH
+         C                                   CB   CBCCCBBBCBCC         C                                           CCBBB
 XOOOMMOOOOOOOOZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+--ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ +++  =+=++=-+ =---+++++++=+++++++++++XXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXX    -=+++++++++++++++++++++++++++++++XXXXXXXXXX
+ '''   ' ''        ''''''' ''''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''
+   .      .        ......   ..... .......................................       ........   . ...........................
+                       =          === --HHHHHH-HHHHHHHHHHHHHH-= ===-HHH-H       = ===              =  ========-----HHHHH
+                                        CCCCCC BBBBCBBBCCBBCC       CBC C                                          CCCCC
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ ++X++=+++++++++---+++++++++++++++++++XXXXXXXXXXXXX+XXXXXXXX+++++X+XXXXXX+    =++++++++++++++++++++++++++++++++XXXXXXXXX
+ '''''  ''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''      ''''''''' ''''''''''''''''''''''''''''''
+ ...     .......    ......  .  .. ........................................      .......    .. ..........................
+  =-      =          = =           =  -HHHHHHHHHHH-=----HHHH=  ==-=-HHHHH=         =                =  ========---H-HHHH
+                                       CCCBBBBBBBC      BBCC        CBBBB                                         C CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXXXXXXX+XXX==++++++++++++++++++++XXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXX=   -+++++++++++++++++++++++++++++++XXXXXXXXXX
+''''''''''''''''  ''''''''''' ''''''''''''''''''''''''''''''''''''''''''''     '''''''''''''''''''''''''''''''''''''''''
+................  ........... ............................................      ..... .  ...  ..........................
+ ==--HHH-HHH=---  = ======  =   ==== =--HHHHHHHHH-H-H-HHHH ==  =--HHHHHHHH       =                  == =======----HHHHHH
+     CCC CCC                            BBBBBBBBC C C CBBB        CCCCBBBC                                        CCCBBB
+                                          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXX+++++XXXXX+++X++++++XXX+XXXXXXXXXXXXXXXXXX+XXX++XXX+++++=+++++    -+++++++++++++=+++++++++++++X++XXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''     '''''''''''   ''''''''''''''''''''''''''
+....................................................................   ....      .... .        .........................
+  HHHH--HHHH-=====---HH===H======--- HHHHHHHHHH-HHHHHH-=-HH  ---=        ==       =                 =  = ==-==---HHHHHHH
+  CBBB  CBBC         CC   C          CCCCBBBBBB BBBBCC   CC                                                      CBCBBBB
+                                         VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZZZMAOOOOOOO- =MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXX=-+XXXXXX++++++X+XX+++X+XXXXXXXXXXXXXXXXXXXXXXX+-++++++++-      -++++++    =++++++++++++++++++++++++X+XXXXXXXXXXXXX
+'''''  '''''''''  '''''''''''''''''''''''''''''''''''  ''' '''         '' ''     ''''''''' '''''''''''''''''''''''''''''
+.....  .........  ...................................  ... ..           . ..     .........  .  .........................
+ =-HH  =-HHHH-=    =-=--= =-=HHHHHHH-HHHHHHHH--HHHH-   ==  ==                     = =            == =====-=-----HHHHHHHH
+   CC    CBBB                CCCBBBC BBBCBCBB  CCCC                                                             CCBBBBBB
+          V                      V                                                                                     V
 OOOOO)MOOOOOOOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOZXXXMMMOOOOOOOM--+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+  +XXXX+++-  +++++X+++++XXXXXXXXXXXXX++++++++++++++= +==-       ==-++++     =+++++++++++++++++++++++++XXXXXXXXXXXXX
+''''   ''''''      '''''''''''''''''''''''''''''''''''''                ''''      '''''''' '''''''''''''''''''''''''''''
+....   ......      ... .................................                 ...      ..... .    . .........................
+--HH    -HHH=          - ====--HHHHH-HHHHH=== =====                        =                     =   ======----HHHHHHHHH
+  CC     CBB                   CBBCC CCBCC                                                                     CCCCCBBBB
+                                                                                                                       V
 OOOM=)XOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM -1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++    =++XX++++= ++++++=++XXXXXXX+++++X+++++++++XXX++++=+++++++++++++++++XXX     ++++++++=++++++++++++++++XXXXXXXXXXXXX
+'''     ''''''''  '''''' ''''''''''''''''''''''''''''''   '''''''''''''''''''     ''''''    ' ''''''''''''''''''''''''''
+...     .......   ...... ..............................   ...................       .       .  .........................
+= =      =H-= =      ==   =---HHH-=====-= === ===-H-=       == ==  ===  ==---                      ========---H-HHHHHHHH
+          C                   CCC                 C                                                           C CCBBBBBB
+                                                                                                                      V
 XOO+OOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO= =ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ ++ -+ -++XX+++++-++++++++XXX+XXX+X+XXXXXXXX+++XXXX+++=++XXXXXXXXXXXX++++++XX+    ==++++++++++++++++++++++X+XXXXXXXXXXXX
+ ''  '  ''''''''' '''''' ''''''''''''''''''''''''''''' '''''''''''''''''''''''      ''''''' ' ''''''''''''''''''''''''''
+ ..  .  ........  .. ... ............................. .......................      .....     ..........................
+  =     ==--====     ===  -HH=HH-=-=H-HHHHHH===-HH-==   =HHHHHHHHHH-H== ===--=                       =====-=-H-HHHHHHHHH
+                           CC CB    C CBCCCC    CC       CCBBBBBBCC C                                        C CCBCBBBBB
 OOOOOOOOOOOOMOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++--++++XX- ++++++++XX+ +XXX+XXX++XXXXXX+X++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXX    +++++++++++++++++++++XXXXXXXXXXXXXXXX
+'''  ' ''''  '''' '''''  '''''''''''''''''''''''' '''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''
+...  . ....  .... .....  ........................ .............................      ....       ........................
+ =     ==--  = =    =--   -HH=HH-==-HHHHH=-=====   ==-HHHHHHHHHHHHHHHHHHHHHHHH-                       ==-H----HHHHHHHHHH
+                           CC CB    CBBCB             CBBBBBBBBBBBBBBBBBBBBCCC                           C    CCCCCBBBBB
+                                                           VV    VV                                                  VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++++++X++++++++++X++X++XXX+X+XX+XXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+    -++++++++++++++++++++XXXXXXXXXXXXXXX
+''' ''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''  ' '''''''''''''''''''''''''
+...  .....  ...................................................................                 ........................
+--=  ===H=   =  ===-==- =-H-=-=--=H-HHHH--H-H-= ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHH                   =  ====--H-HHHHHHHHHHH
+        C                 C       C CCCC  C C      BBBBBBBCBBBBBBCBBBBBBBBBCBBB                            C CCCCCCCCBBB
+                                                                        V                                             VV
 OOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-=ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=-=  =++XX+++X+++++X+XXXXXXXX++XXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX     ++++++++++++++++++++++XXXXXXXXXXXXX
+      '''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '     '''''''''''''''''''''''''''
+      ....  ....................................................................       .         .......................
+       =H-   -==== -=HHHHHH-H= -H--- =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH                   = ======-HHHHHHHHHHHH
+        C            BBBCBB C   C      CCCCCCBCCCBBBBBBBBCCCBBBCBBBBBBBBBBBBBBBC                            CCCCCCCBBCCB
+                         V                           V              V   V  V
 XZ1=)XAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       ++X+++XX+++-=+XXXXXX+++XXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX    -+++++++++++++++++++XXXXXXXXXXXXXXX
+        ''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      ''' ''' '''''''''''''''''''''''''
+        ... ......  .............................................................       ..  .   .. .....................
+        =-= =-- ==  =HHHHHH= =HHHH======HHHHHH-HHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHH-                   =====---HHHHHHHHHHHH
+                     CBBBBC   CBBC      CCCCBC CBBBBBBCCBB CCBBBBBBBBBBBBBBBBBBB                            CBCBBBCBBCCB
+                         V                                            V   VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++XXXXXXX++XXXX+XXXXXX++=++XXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-    =+++++++++++++++++++XXXXXXXXXXXXXX
+''' '''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''       ''  ''''''''''''''''''''''''''''
+... ..............................  .............................................               ........................
+==  ==== =  -H--HHH==HHHH=-HHHHH=    -HH-HHHH=-HHHHHHHHHH-HHHH--HHHHHHHHHHHHHHHHH                   = ====-----HHHHHHHHH
+             C  CCC  BBBC  CBCBC      CC CCCC  BBBBBCBCCC CCCC  CBBBBBBBBBBCCBBBB                              CCCCCCCCB
+                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-=)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX+++XXX++++-++XXXXXXXXXXXXXXX++++XXXXXXXXX++XXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXX     +++++++++++++++++++++XXXXXXX+X+XX
+'''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      '  '''''''''''''''''''''''''''''
+.............  ...................................................................             .........................
+=--===-H-====  =-HHHHHHHHHHHH--====-H-H---HH==HHHHHHHH-HHHHH-==HHHHHHHHHHHHHHHHHH-                =  =======----H--=-=--
+       C         CBBCCBCCCBBB       C C   CC  CCBBBCCC CBCCC   CCCCBBBCBBBBBBCBBB                               C
 OOOOOOOOOOOOXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-+1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+++  +++XXXXXXXXXXX++++++XXXXXX+++X++XXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXX+    -=++++++++++++++++++XXXXXXXXXXXXX
+''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       ' ''''''''''''''''''''''''''''
+......... ..  .......................... ..........................................            .........................
+-----HHHH  =   ==HHHHHHHHH--= = ==HHHHHH  =-==HHHHHHHHHHHH- =-HHHHHHHHHHHHHHHHHHHH=               = =   ===------H--H--H
+     CCCC        CBBBBBBCC        CCCCCC      CBCBCCCBCBCC    CCBBBCCCBBBCBBCCCBBC                               C  C  C
 OOOOOOOOOOOO)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--+AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX==+ ++++XX+XXXXX++=++++X+XXXXXXXXX+XXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXX+    --+++++++++++++++++XXXXXXXXXXXXX
+'''''''''    '''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''      ' ''''''''''''''''''''''''''''
+.........    .............   .......................................................          ..........................
+HHHHHHHH-     ===-H=-HHH-     ==-=HHHH-H---=-HH-HHHHHHHH-H==-HHHHHHHHHHHHHHHHHHHHHH=                =======----HHHH-H-HH
+BCBBBBBB          C  CBB          CCCB C     CB CBCCCBCC C   CBCBBBBBBBBBBBBBCBCCBB                            CCCC C CC
+   V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX+-+XX+X+++X++++++++--+XX++++++++++XXXXX+XXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXX-    =++++++++++++++++++XXXXXXXXXXXX
+''''''''' '''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''      ' ''''''''''''''''''''''''''''
+......... ......... .......  .......................................................         . .........................
+HHHHHHHH=  -- -=  -  =  ==    --===      =---HH=-HHHHH--HH=--HHHHHHHHHHHHHHHHHHHHHHH                  ======H--HHHHHH-HH
+CCBBBBCB                                     BC  CBBCC  CC   BBCBBBBBBBBBBCCBBCBBBBB                        C  CCCCCC CC
+                                                                     VV      V   VV
 OOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-=1AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+++X+XX++++++ +XX+++XXXXX+  =-++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      +++++++++++++++X+X+XXXXXXX+XX
+'''''''''''''''''''''' ''''''''''''     '''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''
+......... ...........   ...........     .............................................         ..........................
+-HHHHHHH-  =- --====    --===-HHH-       ==-HHHHH-HHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHH-             =    ===-=-=HH-HHH-=--
+ CCCBBCB                      BBC           CBCCC CCCCCBCC  CCCCCCCBBBBBBCBBBBBBCBBB                          CC CCC
+     V                                                                       V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--+1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+++X+++++++X++++X++++XXX++=-++++XXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+     =+++++++++++++++XXXXX+XXXXX++
+'''''''''''''''''''''' ''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''      ''''''''''''''''''''''''''''
+.............. ....... . ..........   ................................................         .........................
+HHHHHHHH-  =-  ===  -= = -=   HHH==    ==-HHHHH--=H-HH-----HHHHHH--HHHHHHHH=-HHHHHHHH                  = ==---HH=HH---==
+CCCCBBBB                      CCC         CCBCC   C CC     CCBCCB  BBBBBBBB  BBBBBBBB                         CC CC
+                                                                        V     V   VV
 OOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -+XMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+= ++X+-+=++++XX+++X+++++++XXX+XXXXXXXXXXXXXXXXXXX++XXX+X++++XXXXXX+++XXXXXXXXXX-     +++++++++++++++X++XX+XX++X++
+'''''''  ''''   ''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''
+.......  ....   ............  ........................................................         . .. ...................
+HHHHH-    =-=    == -H=  H=   == --H=--HHHHHHHHH-H-HHHHH==-H-=-====-HHHHH= =HHHHHHHHHH              ==  ===-==--=--==-
+CBBBB                C   C         C   CCCCCBBBC C BBBBC   B        BCBBC   BBBBBBBBBB
+                                                                               V V V
 OOOOMZZXOOOOOMOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+ -)XOOOOOOOOOOOOOOOOOOOOOOOOOOOA
+XXXX    =+XX+ +++X+++XXX++- -+++===+++XXXXXXXXXXX+++XXX+XXX+++XX+XXXXXXX++XXXXXXXXXXXXX     -+++++++++++++X++XX+XX++X+-
+''''     '''' '''''''''''    ''    ''''''''''''''''''''''''''''''''''''''''''''''''''''      ' '''''''''''''''''''''''
+....     ....  .........     ..    ............... ....................................          . ...................
+-HH-      -H=   =-===---      =      =HHHHHHHHHHH  =-H-=--H===H-=H--HHHH==HHHHHHHHHHHH-              == ==-==--=--==-=
+ CB        C                          CBBBBBBBBBC    B    C   C  C  CBBC  CBBBBBBBBBBC
+                                             V                              V  V
 OOOOXOOOOOOOOMOOOOOOOOOOXZZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- =)MOOOOOOOOOOOOOOOOOOOOOOOOA+-
+XX+- ++++++++ ++++++++++    +++==+++XXXXXXXXXXXXX+-++X++XXXXXXX++XXXXXXXXXXXXXXXXXXXXXX+     -=++++++++++++++++++++++
+'''  '''''''' '''''''''      ''  ''''''''''''''''' '''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''
+...   ....... ...... ..      .     ..............  .....................................         ....................
+HH      == ==   ===  ==             -HHHHHHHHHHHH  ==-==-HHHHHH==HHHHHHH-HHHHHHHHHHHH--              == ======  === =
+CC                                   CBCBBBBBBBBB        BBBBBC  BBBCCCC CBBBBBBBBBBC
 OOOOOOOOOOOOOOOOOOOOOOOOMAOOOOMAOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO --)AOOOOOOOOOOOOOOOOOOOOOOX=
+XX==+++XX+++++X+XX++++X+  ==++  ++XXXX++XXXXXXXXX+ ++++++XXXXX+=+XX++++XXXXXXXXXXXXXXX+X-     =+++++++++++++++++++++
+''  ''''''''' ''''''''''    ''  '''''''''''''''''' '''''''''''' ''''''''''''''''''''''''       '   '''''''''''''''''
+..  ...... .. .....  ...    ..   ................. ............ .... ...................           ........... ... .
+H-  == --  == -=-H=  =-      =   =HHH-==HHHHHHHHH     ===-HHHH  =HH  ==-HHHHHHHHHHHHH-=-             = ==== =  =   =
+C                C                CCC   CCBBBBBBB         CBBC   CC     CBCCBBBBBBBBB
+                                                                                 V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOO=  -1MOOOOOOOOOOOOOOOOOOOOZ--
+XX+++++XXXXXXXX++XXX++++++=++XX+XXXX+ ++X+XXXXXXX+-++XX++XXXX+ =++X++++XXXXXXXXXXXXXXXXXX      ++++++++++++++=+++++
+'''''''''''''''''''''''' ' '''''''''' '''''''''''' '''''''''''  ''''' '''''''''''''''''''       ''''''''''''' '''''
+.. ..................... . ..........  ........... ..........   ....  ...................        ......... .. . . .
+H-  ===-H-HHH--  -HH====    =H-=-HHH   =-=HHHHHHH  ==-H==--H-    =-=  =--HHHHHHHHHHH-H---             ==   =
+C       C CCC     CC         C   CCB      CCCCCCB     C    B             BCCCCCCCBBB C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+  =XOOOOOOOOOOOOOOMOOOM1
+X++++++XXXXXXXX++XX++XXXX++XXXXXXX++++++++XXXXXXX+=+++XXXXXX+-=++XX+=+XXXXXXXXXXXXXXXXXXX+     -++++++++++=+- =-+
+'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''   ''''  ''''''''''''''''''''       ''''''''  '    '
+... ...................... ......... ............. .........    ....  ....................       ........       .
+- = ===--HHHHH-==--==----= -HHHHHH==      -H-HHHH= == H-HHHH     --   --H-HHHHH-HHHHHHHHH=        =  = =
+         CCCCC              BBBBBB         C CBBB     C CBBC            C CCBBC CBBBBCBCC
+                                                         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- =1XOOOOOOOOOMOM)ZAOO)-
+++X+++X+X+++++++XXX++++XX++XXXXXX++XX+++++XXXXXXXX+X++XXXXX+-+++++++=++++XXXXXXXXXXXXXXXXX=     =+++++++- -    =+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''' '''''''''''''''''''''       ''''''
+. ..........................................................   ..... .....................       .....
+  -= =-=-== ====-HH=  =--==--HHHH= -H=   =HHHHHHHH - =HHHHH=      == = ==----HHH--H-HHHHHH           =
+                 CC          CBBB   C     CBCCBBCC    CBBBC                  BBB  C CCBBCB
+                                                         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ -=1MOOOOOMAZ1)Z=)1O1
+++XXXX++XX+XXXXXXXX+++XX++++XXXXXXXXX+++XXXXXXX++++++XXXX+==+++X++=+++++XXXXXXXX+XXXXXXXXX+      =+++=         =
+ ''''''''''''''''''' '''' ''''''''''''''''''''''''''''''''  '''''' ''''''''''''''''''''''''       '''
+ ................... .... ......................... ......   ....    ......................
+ =H---==--=-HH-HHHH=  -H=  =-HHHHHHHH= =-HHHHHH==== =HHHH=    =-=     ==HHHH-HH- -H--HHHHH
+  C         CC CCBC    C     BBBBCBBC    BBBCBB      CCCB               BBBC CB   C  CBCBC
+                               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- -)AMMOMZ)1=-=-=+1O
+XXXXXXXXXXXXXXXXXX++++XX++XXXXXXXXXX++XXXXXXXXXX+++XXXXX++++++++++++XXXXXXXXXXXXXXXXXXXXXXXX       -           =
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............................................................  ...........................
+HHHHHH-HHH-HHHHHHH= ==HH==-HH--HHHH-==-HHHHHHHH-===-HHHH=  ===    ==-HHHHHHHHHH-HHHHHHHHHH--
+CCBCCB CBC CBBBBBB    CC   CC  BBBB    BBBBBCCC     BBBC             CBBBBBBBBB CBBBCBBBBC
+        V     VV                           V                           V    V V         V
 OOOOOOOOOOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- =+)XZ1==---+---1-
+XXXXXXXXXXXXXXXXXXX+ +++XXXXXXX++XXX+X++XXXXXXX+X+XXXXX+X++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX+
+'''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''
+...................   ........................................  .............................
+HHHHHHHHHHHHHHHHHHH   ==-HHHHH-==---=-==HHHH---=-=-HH--=-== =    -HHHH-HHHHHHHHHHHHHHHHHHHHH=
+CBBBBCBBBBBBBBBBBBC      CCCBC          CBCC       CC             CCBB BBBBBBBBBBBBBBBBBBBCB
+            V  V V                                                        V V V VVV V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO --+==- --  -----
+X++XX++++++XXXXXXXX+++++XX++XXX++++++ -++++++++X++++X+++++-++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-
+'''''''''''''''''''' '''''''''''''''   '''' ''''''''''''''  '''''''''''''''''''''''''''''''''
+...................  .......... ....    ... ..............  .................................
+H==-- ===  HHHHHHHH   ==-H==HH- =  =    ==  ===-  ==-= ==   ===--HHHHH--HHHHHHHHHHHHHHHHHHHHH
+C          CBBBBBBB      B  CB                                   CCCBB  CCBBCBBBBBBBBBCBBBCBB
+            V  V V                                                                 V
 OAOOAAOOOOMOOOOOOOOOOOOOOOOOOOOOOOZZ)MOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-- --- -  - - -
+X ++  =-+- +XXXXXXX++-+++++++X++++    -==++++XXX+++XX+XXX =+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'  '    '  '''''''''' '''''''''''         '''''''''''''''  '''''''''''''''''''''''''''''''''''
+.          .......... ...........           .............  ...................................
+-          =HHHHHH-=   === ==-===           =HHH=  --=---  =---HHHHHHH----HHHHHHHHHHHHHHHHHHH-
+            CCBBBB                           CCC               CCBCBBC    CBCCBBBBCCCCCCCCCBC
+                V
 M1A1XOOOOOMOOOOOOOOOOMOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-  --       -
+     =+=++ +++++XX+++ +++XX++++++==+++= - ++XXX+++++ +++++++XXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXX+
+      ' '' ''''''''''  ''''''''''  '''    '''''''''' ''   '''''''''''''''''''''''''''''''''''''
+        .. ..........  ..........  ...    ....... ..  .   .....................................
+            ==  -- ==   =--== ===   ==     =HHH=  =   =    =HHH-HHHHHHH- =HHHHHHHHH---HHHHHHHH=
+                                            CBC             CCC CBBBBBC   BCBBCBBBC   BBBBCBBC
 O1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO11MMOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO---       -
+- =++++XXXX++++++++XX+++XXX+X+X+++XX+    -++X+-  ++-++XXX+++X+++XX+XXX+XXXXXXXXXXXX+XXXXXXXXXXX+
+   '''''''''''''''''''''''''''''''''      ''''   '  '''''''''''''''''''''''''''''''''''''''''''
+   .......... ......................      ....   .  ...........................................
+      =HHHH== =====--= =-HH=-=-= =H-       =-        =-HH  =-===-H=---=--HHHHH--HH-=-HHHHHHHHHH
+       CCCC              BC       C                    CC        C       CBBBC  BB   BCBCBBBBBB
+                                                                          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1         -
++++++++XXXXXX+==++XXXXXXXXXX++++XXXX++++++++++++ +=+XXXXX+++X+++++++XXXXXXXXXXX+X+++XXXXXXXXXXXX
+''''''''''''''  '''''''''''''''''''''''''''''''' ' '''''''''''''''''''''''''''''''''''''''''''''
+   ...........  ....................   ......... . .............................................
+    ===HHHHH-=    -H-----HHH=  =HHHH     ===== =   =--HH-  =-=  == =HHHHHHHHHHH=-= =HHHH-HH--HH-
+       CBBBC       C     BBB    CBBC                  CB            CCCBBBBBBBC     CCCC BC  CC
+          V                                                              V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--
+X+XXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXX+==+++XX+++++ ++++++X+++XX++++X++XXXXXXXXXXX++++++XXXXXX++XXX+
+''''''''''''''''''''''''''''''''''''  ''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''
+....................................  ...... ...  ...............................................
+H -HHHHHHHHH-= =HHHHHHHH-HHH--HHHHH=   ==--  =     = ==-=  --== =-==HHHHHHHHHHH== ===------= --H=
+C  CCCCCCBBC    CCBCCBBC CBC  BBBBB                                 BBBBBBBBCCC                C
+                               V VV                                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX+X+==+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX++++XXXXXXXX+XX+XXXXXXXXXXXXX++X++++XXX++++XXXXX-
+'''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........   ...................................................................................
+HHHHHHHH=-    --HH-HHHHH--HHHHHHHHH--HHHHHH-=H=--== =---H--H-=--=HHHHHHHHHHHHH==-====---====-HHHH
+CCBBBCCC        CC CBBBB  BCBBBBBBB  CCCBCC  C          C  B     CCCBBBBBCCCCC               CBBC
+                     VV       V  V                                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=
+X+XXXX++++==++++++++XXXXXXXXXXXXXXXXXXXXXX+++XXXXX++XXXXXXXX++XXXXXXXX+--++X+X++XXXX++XXXX+XXXXXXX
+'''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''
+........     .. .......................................................   ........................
+-=HHHH==     =  ====-HHHHHHH-HHHHHHHHHHHHH===-HHH-==--HHHHHH= -HHHHHHH    =-=- =---H==--H-=-HHHHHH
+  CBBB               CBBBBBB BBBBBBBBBBCBB    CBB     CCBBBB   CCCBBBB             C    C   CCBBBC
+                              V  V  VVV                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX++XX++X+=+XXX++XXXX+XX+XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+--+++XXX++X+XXXXXXXXXXXXXXXX-
+'''''' ''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''
+...... ....... .......................................................  ..........................
+H--HHH =HH==H  =-HH==HHHH=-H=HHHHH=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=   ==--- =-=HH--HHHHHH--HHHH
+B  BBC  CC  C    CC  CCBC  C CBBCB  BBBCBBCCBBBBBBBBBBBBBBBBBCBBBBBBB             CB  BBBBCC  CBBB
+                                     V              V V           V                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-
+XXXXXX+XXXXXX=+XXX+-++XX+ =+++XXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''' '''''  ''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............. ....   ....  ........................................................................
+HHHHH- -HHHHH  -HH   =H-    ==HHH= -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH   = =-HHHHH-HHHHHHHHHHHHHHHHH=
+BBCBC   BBBCB   BB    C       CBC   BBCCCBBBBBBBBBBBBCCBBBBBBBBBBBCC       BCCCC CBCBBBCCBBBCCBBBB
+V                                          V VVVVV V      V
 OOOOOOOOOOOOOOOOOOOOOAO+=-1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)
+XXXXXXXXXXXXX++XX++++ +     ++XXX+XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXX+XXXXXXXXXXX
+'''''''''''''''''  '  '      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................  .         ......................................................................
+HHHHHH-HHHHHH= HH  =         =HHH -HHH==-HHHHHHHHH-HHHHHHHHHHHHHHH=====--HHHH-HHHHHHHHH=-HHHHHHHHHH
+BBBBCB CBCBBB  CB             CBB  BBC   CBBBBBBBC CBBCCBBBBBBBBBC       CCCC CCBBBBBBC  CCCCCBBBBB
+   V       V                               VVV           V   VV                               VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXX+++X++XX++XXXX+++++++XXXXXXXXXX+XXXXXXXX+++XXXXXX+XX+++++++++XXXXX+XXXXXXXXX+XXXXXXXXXXXXX-
+''''''''''''''''' '''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........  ...... ...... ..........................................................................
+==-HHHHHH  =H= -H =----    ===HHHHH-HH--=HHHHHHH-===-HH-H-=H-= ===== =--HH-=--HHHHHH-=-H--HHHHH-HHH
+   CBBCBC   C   C             CBBCC CC   CBBBBBC     CC C  C            CC    CBBBBB   C  CCCCB CBC
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-                - -
+ +++XX+XXX++XX+XX++XXXXXXXXXXXXXX+---===++XXXX++++++++XXX++++++++XXXXXXXXX==+XXXXXXX++++++++XXX+XXX+
+ '''''''''''''''''''''''''''''''''      ''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''
+   ...............................      .......   ........................  ......... .............
+   =HH=HH-==--=H-  -HHHHHHHHHHHHH=       =HHH-=    ===HH-  =   ==-HHHHHHH-  =--H----  == = =-HH=---
+    CC CC      C    CCBCCCBCCCCCC         CCC         CC          CBBBBBB      C             CB
 AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-                --M
+ +++XX+XXXXXXXXXX+XXXXXXXXXXXXXXX+++=+++++X+++++++++XXXX+  -++ +++XXX+XXX++++++++++++-++++++XXX+++++
+ ''''''''''''''''''''''''''''''''''' ' '''''''''''''''''    '' ''''''''''' ''   ''''' ''''''''''''''
+ ...................................   .................       ........... ..   ..... .. ...... ....
+   =H- HHHHHHHHH-=HHHHHHHHHHHH---=       =H===   ===----         =HHH=-HH=        ===     ==-HH ====
+    C  CCBCBCCBB  BBBBBBBBBBBC            C                       CCB  CC                    CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZOOOOOOOOOOOOOOOOOOOOOOOOOOOX)OOOOOOOOOOOOOOX               -=OO
++++XX++XX+++++XXXXXXXXXXXXXXXXXX+++++XXXXXX++++++XX+X+++ -++++++XXXXX++XXX+X++++++++  +++XX+XX+++++X                  -+
+''''''''''''''''''''''''''''''''' ''''''''''''''''''''''  '''''''''''''''''''''''''   ''''''''' ''''                   '
+............ ...................  ......................  .........................    ........ ....                   .
+  =H-==H- == =HHHHHHHHHHHHHHHHH-   ==HHHHHH==== =-- - =    ==  =--HHH  ---=-=== ==       --=HH  ===-                   =
+   B   C      BCBBBBBBBBBBBBBBB      CCBBBB                       CCC                       CC
+                 VVV VVV                 V
 OOOOOMOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOO               --1M
+++XX+ +X+++ +XXXXXXXXXXXXXXXXXXXX++++++XXXX++=+++X++X+X++XX+=++XXX+++XXXXXXXXXXXX+++ =+XXXXXXXX++++X+
+''''' ''''' ''''''''''''''''''''''' ''''''''' '''''''''''''' '''''''''''''''''''''''  '''''''''''''''
+..... ..... .......................   ......  ..............  .....................   ......... .....
+==HH=  -=   =HHHHHHHHHHHH---HHHH-==   =H-H-=   ==- =- -= H-=  =HH-===--HHHHHHHHHH==   =HHHHHHH-   =-
+  CC         CBBBBBBBBCBC   CBBB       C C               C     BB      CCCCBBBBBC      CBBCBBC
+                V  VV                                                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOO-               -+Z
+XXXX+-+++X++XXXXX+++XXXXX+++XXXXXXX++-++- +=+++++XX+X+++XX+++XXXXX+++XXXXXXXXXXXX+++++XXXXXXX++ +XXXX
+''''' ''''''''''''''''''''''''''''''' ''     '''''''''''''' ''''''''''''''''''''''''''''''''''' '''''
+.....  .............................  ..      ............. ...................................  ....
+H-HH   ==-  HHHH-= =-HH--===-HHHHHH=          = =H-=- ==--   -HHHH= =HHHHHHHHHHHH=   =-HHHHH-    -HH-
+C CB        CBBB     CC      CCBCBC              C            CCCB   CCBBBBBCCCCC      CCBBB      CC
+                                                                       V                 V V
 OOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOMXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=              --=1
+XXXXXX+X+XX+XX+ -+++++X+=+++++XXXXX+ -+++++++-  =+X+X+++X++++XXXXXXX+XXXXXXXXXXXX++XXXXXXXXX++X+XXXXX
+'''''''''''''''  '''''''  '''''''''    ''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............   ......  .  ......       ..     ................................  ..................
+HHHHH-=-=H-=HH=    == -=  =   --HH-              =H=-===-=  =HH-HHHH=-HHHHHHH--HH  -HH-HHHH-  - -HHH-
+BBBBB    C  CB                  CB                C          CC BBBC  BBBBBBC  CC   BC CCBB      BBB
+                                                                 V     V                  V
 OOOOOOOOOOOOOO1OOOOOOOO1MOOOOOOOOOOOOOOOOOOO+1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+             - =)X
+XXXXXXXXXXXXXX ++XXXXXX  ++++++XXX++++++XXX+  -+++XX+++++XX+XXXXXXXXX+XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX
+''''''''''''''  '''''''  '''''''''''''''''''    ''''''  '''''''''''''''''''''''''''''''''''''''''''''
+..............  .......  .......... .......     ......  .............................................
+HHHHHH----HHHH  =-HHHH-  ==  ==H-H=  ===---      =-H==  =HH=-HH-HHHHH=HHHHHHHHHH- -HHHHHHHH---H-HHHHH
+BBBBBC    CCBC    CBBC         C C                 C     CC  CC CBBCC CBBCCCBBBB   CBCCCCBC   C CCBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-             -=+1A
+XXXX++X+XX+++++XXXXXXX++XXXXX+++++++++XX+++  ++X++++++--+XX+++XXXXXXXXXXXXXX+++X+++XXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''' ''''''''   ''''''''  '''''''''''''''''''''''''''''''''''''''''''''
+.................................. ........   ...... .  ..................... ... ...................
+HHHH==-=H-==== -HHHHHH= -HHHH====    =-H==    =-= =      -H===--HHHHHH-HHHHH= =-= =H--HHHHHHHHHHHHHHH
+CCBC    C       CBBBBB   BCBC          C                  C     CCCCCC CBBCC       C  BBBCCCBCCCBBBBC
+                  V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO            ---=)AO
+X++++++++XXX++XXXXXXXXXXXXXXXXXX++XX++XX+X+-++XXXXXXX++++++++XXXXXXXXX+XXXXX+++XXXXXXXXXXXXXXXXXXXXX+                  -
+''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................... ................................. .......................
+-==  =  =---==----HHHHHHHH-HHHH- =-H==-H=H   =-------=  = ===--HHHHHH-=-HHHH  =H--HHHHHHH-HHHHH-HHHH=
+                  BBBBCBBB CCCC    C   C C                     CBBBBC   BBBB   C  CCBBBBB BCCBC CCCC
+                                                                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO             -+1OOO
+X++XX+-++XXXXXXXX+++XXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                -=+
+'''''' '''''''''' ''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''                  '
+...... .......... ......................................... .........................................                  .
+H= --  = -HHHHH--  =-H-HHH-H--H--HHH=HHHHHH---HHH-HHHH---=    -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+C         CBBBC      C BBB B  C  CBC CBBBBB   CBB CBBC         CBBBCCCCBBBBBBBBBBBBBBBBBBBBCBBCCBBBB
+                                       V                                 VVV  V        V         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO            -=11OOO
+X+XXX+-++XXXXXX++-+++++++++X+XX++XXXX+XXXXXXXXXXXXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                -++
+'''''  '''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....  .........  ...................................................................................
+H=-HH  = -HHHHH=  ==== == =-=-H==-HH-=HHHHHHHHHHHHHHHHH-=====  =HHHHHHHHHHHHHH--HHH------H--HHHHHHHH
+C  BC     BBBBC               C   BB  CBBBBBBBBBBBCBBBC         CBBBBBBBBBBBCB  BBC      C  BBBBCBBB
+            V                      V    V V                       VV     VV
 OOOOOOOOOOOOOOOOOO1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO            -+=ZMOO
+++XX++++XXXXXXX+++ ++X+++++++XXX+XXX+++XXXXXXXXXXXXXXXX++XXXX= =+XXXXXXXXXXXXXXXXXXXXX++++XXXXXXXX+X=                 -+
+'''''''''''''''''   '''''''''''''''' ''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''
+.................   ...  ........... ........................   ....................................
+==--= ==HHHHHHH==   =-=     =HHH=-HH  =HHHHHHHHHHHHHHH- =-HH-   =HHHHHHHHHH--H---HHH--= ==HHHHHHH- -
+        CCBBBBC              CBB  CC   BBBBBBBBBBBBBCC    CB     BCBBBBBBBB  C   CBC      CBBBBBB
+           VVV                                 V  V                                           VV
 OOOOOOOOOOOOOOOOO1MOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-             -)1ZO
+XX++++XXXXXXXXXXX  +X++  +++XXXXXXXX++XXXXX+XXXXXXXX+XXXXXXXX-++XX++XXXXXXXXXXXXXXXX+X+++XXXXXXXX+++                   -
+'''''''''''''''''  '''   '''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''
+.................  ...   ....................................  ................................... .
+H-====--HHHHHHHH-   -=     =-HHHHHH-==-HHH- -HHHHHHH=---H-HH-  =HH==--HHH----HHHHHH-=-===-HHHHHHH= =
+C       BBBBBBBC             CBCBCC    CCC   CCBBBCC    C CC    CC    CCC    CBBBCC       CBBBCCC
+            VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO              =))ZO
+XX+-++++XXXXXXXXX+++++=++XXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXX+XXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-                  -
+''' '''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+... .................. .............................................................................
+HH=  ===HHHHHHHHH   =  ==-HHHHH-HH-HH-HHHH-=-HHHHHHH---HH=HHH  -HHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHH---
+BC      BBBBBBBBB         CCCBB CC CC CBCC   CBBCCBC   CC CCB   CBCCCCCBCCCBCBBBBC  CBBBBBBCBBBBB
+            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO             --+=)Z
+XXXX++XXXXXXXXXXXXXXXXXXXXXXXX++=+-+++XXXXXXXXXXXXXXXXXXX+XXX+XXXXXXXXXXXXXXXXXXXX+XXXXXXX+XXXXXXXXX+
+''''''''''''''''''''''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................    ................................................................
+HHH-==-HHHHHHHHHHHHHHHHH--HHHH=       HHHH-HHHHHHHHHHHHHH=-H- -HHHHHHHHHHHHHHHHHHH=HHHHHH- -HHHHHHHH
+CBC    BCCBCCCCBBBCBBBBB  BBCC        CBBB CBBBBBBBBCCBBB  C   BBBBBBBBBBBBCCCCBBC CBBBBB   BBBBBCCC
+                V    VV                 V         V               VVV  V VV                  VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-         - -----=+
+XX+++++XXXX+++XXXXXXXXXXXXX+  +X+XXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXX+++X++XXXXX++XXXXXXXXXX+
+''' ''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..  ........................  .......................................................................
+HH   ==--HH   ----H-HHHHHH-   =-=----HHHHH-HHHHHHHHH-HHHH--  -HHHHHHHHH-HHHH-===-==HHHH-==-HHHHHHHHH=
+CC       BB       C CCBBCC           BBBBB CBCCCBBBC CCBC     BBBBBBBBC CBBC       CBBB    BBBBBBBCC
+                      VV                                           VVV              V       VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO          - ------=
+XX+++++++++=+XXX+X+++XXXX+-- +XX+++XXXXXXXXXX+++++XXXXXXXXXX+XXXXXXXXX+++XXXXXXXX+XXXXXX+XXXXXXXXXXX+
+'' ' '''''' ''''''' ''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..   ...... ....... ......   ........................................................................
+H-    ===== =-H-=-   -HHH=    --===-HHHHHH-HH  ===HH-HHHHHH-=HHHHHHHHH= =HHH-----=-HHH--=-HHHHHHHHHH=
+C             C       BBB           CBCBBC CC     CC CCBBBB  CBBBBBBBB   CBB       BBC    BBBBBBCCCC
+                                                               VV   V                       VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-          -------=
+XX++++X++++++XXXXX++XXXX+=++XX++-++++++++X+XX+++-=++++XXXX++++XXXXXXXXX+++++++XXX+XX+++++XXXXXXXXXXX+
+''''''''''' '''''''''''''  '''''  ''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''
+.. .......  .............  ....   ..............  ..................................  .. ............
+--   =-=    =-HHH- =HHH-=  =--=      =  =-=HH=    =  =HHHH= ==HHH-HHHH-  =   =---=--   = -HHHHHHHHHH=
+              CCC   CBC                    CB         CBBC    CCC CBBB                    BBBBBBCCCC
+                                                                                             V
 OOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOXOOOOOOM1OMOOOOOOOOOOOOOOXOOOOOOOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOO-           -   ---
++++++XXXX+ ++X+++++XXXX+=+++XX= =+++++  = +XXXXXXXX+++++ -+XXX+++XXXX+++++ +++XXXX+++XXXXXXX+XXXXXXX+
+'''''''''' ''''''''''''' '''''   '''''     '''''''''''''  '''''''''''''''' ''''''''''''''''''''''''''
+. ........  ..... ...... .....   .....     ............    ..............   .........................
+  ===HHHH=  =-==   HHH-    =--    ===      -HHHH-H-= =     ---===-HH-  ==   ==--HH== ----HH-=-HHHHH-=
+     CCBC          CBB                      CCCC C                CC            CC       BB   CCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=         - - -----
+XXXX++XXXX++++=+XXXXXXX++XX+ ++++XXXXX++++++++XXXXXXX++++++XXXXXXXXX+  ++-+XXXXXX+++XXXXXXXXXXXXXXXX+
+''''''''''''''  '''''''''''' ''''''''' '''''''''''''''''' '''''''''''  '' '''''''''''''''''''''''''''
+..............  ...........  ......... ............... .  ...........  .. ...........................
+-H--==HHHH  =   -HHHHHH= --  =  =HHHH-   = = =--HHHH-=    =-HHHHHHHH=     =-HHH--= =HHHHHH-H--H-----=
+ C    CBBC       CBBBBC          CCCC           CBBC        BBBBBCCC        CBC     CBBBBC C  C
+                                                                                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA         -  - - --
+XXXX+XXXXX++++XXXXXXXX+=-+X+-+++XX+XX+-++XXX+XXX+XXX++++++++XXX+XXXX+=++++XXXXX++XXXXXXXXX+++XXXXXX+X
+'''''''''''''''''''''''  ''' ''''''''' '''''''''''''''''' ''''''''''' '''''''''''''''''''''''''''''''
+.......................  ...   .......  .................  .......... . .............................
+HHHH=-HHHH====HHHHHHHH    -     HH=-H=  =---=---=HHH===    =HHH=--HH     =-HHH-==--HHHHHH- ==--HH--=-
+BBBC  CBBC    CCBBBBBB          CC  B            CCC        CCC   CC       CCB     CCCBCC      CC
+                V
 OOOOOOOOOOOOOOOOOOOOOOZMOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM            ------
+XXXXX+XXXXXXXXXXXXXXX+  ++XX+++XX-+XXX= +XXXXXXXX+XX+++-+==+XXX+XXXX++XX+XXXXX++++XXXXXXXX++XXXXXX+-+
+''''''''''''''''''''''  '''''''''  '''  ''''''''''''''' '  '''''''''''''''''''''''''''''''''''''''
+.....................    ........  ...  ...............    .......................................
+H--H-=HHHHHHHHHHHHHH-    =-H= =-H  -H-   -H-HH-H- --=      =HH- -HHH= --=HHHHH= ==HHHHHHHH==--HHH-
+C  C  CCBBBCCCBBBBBB       C    C   B     C CC B            BC   CBB     CBBBC    CBBBBBBC    CBC
+                V VV                                                                  V
 1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1OOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO         - - -- -=
+  +++++XXXXXXXXXXXXX=--+XXXXX+XX+ +XXX++XXXXXX+X+=++ ==++++XXXXXXXXX+++XXXX++++++XXXXXXX++++XXXXX+++++
+   '''''''''''''''''   '''''''''' ''''''''''''''' ''    ''''''''''''''''''''''' ''''''''''''''''''''''
+   .................   .......... ............... ..    ....................... ......................
+    ===-HHHHHHHHHHH-    -HHHH=-H   HHH= -HH-H-=-= =     = =HHH--HHHH===HHH-===  =HHHHHHH====-HHHH  =
+        CBBBBBBBBBB      BBCC  B   CBB   CC C              CBC  CBBB   CCB       CBBBBBC     CCCB
+           V   V V                                                                 V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA     -   - ------
+++++--+XXXXXXXXXXXXX++++XXXXX+XX++XXX++XXXXXXX+XX+++-++++XXXXXXXXXXXXXXXXX+++XXXXXXXXXXX++XXXXXXXXXX+X
+'''   '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''
+...   ................ .............................  ................................................
+  =   =-HHHHHHHHHHH-=  =HHHH-=HH==-HH==-HHHH--=--= =    =-HHHHHHHHHH---HH-= =---HHHHHHHH==-HHHHHH---=-
+        CBBCBBBBBBB     CCBB  CB   CC   CCBC              CCCBCBBBBB   CC       CBBBBBBB   BCBBBC
+                                                                                 V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-    -   -   ----
+X++++XXXXXX++XXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX++XX++XXX+XXXXXXXX++XXXXX+XXXXXXXXXXXXXXXXXXXX++++XX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................................................................
+-=   -HHHH-==HHHHHHHH-=-HHHHHHHHHHHHHHHHHHH---HHHH==--==H--=HHHHHHHH==-HH--=HHHHHHHHHHHHHHHHHHHH=  =--
+      BBBC   BBBBBBBB   CBBBBBBBCCBBBCBBBBB   CCBC      C   CBBBBBBC   CC   CBBBBBBBBBBBCCBBBBBC
+                          V                                     V               VVVVV V     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=--  -  - -- ----
++++XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXX+XX+XXXXXXXX+++++++++XXXXXXXXXXXXXXXXXXXX+X++X++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................................................................
+===-HHHHH-H--HHHH=-HHH--HHHHHHHHHHHHHHHHHH===--HHHHHH--=H-=HHHHHHHH= ==== ==HHHHHHHHHHHHHHHHHHHH=- =- =
+    BBBBC C  CCBB  CCC  CCBCBCCBBBCBBBBBBB     CBBCCB   C  CCCCBBBC         CCBCBBBBBBBBCBBBCCBC
+     V V                                                       V                    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  --    - --=---
++++XXXXXXXXXXXX+++XXX+++XXXXXXXXXXXXXXXXXX+XXX++XXXXX++++XXXXXXXXX++++++-++XXXXXXXXXXXXXXXXXXXXXXXXXX+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''
+................ .......................................................  ..............................
+ ==HHHHHHHHH--H= =HHH===-HHHHHHHHHHHHHHHHH=-HH  -HHHH== =HHH-HHHHH= = =   =-HHHHHHHHHHHHHHHHHHH--HHH- =
+   CBBBBCBBC  C   BBB    CBBBBBBBBBBBBBBBC  BC   CBCC    CBB CBBBB          BBBBBBBBBCCCBBBCBBB  BBB
+      V                             V V V                       V               V V               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-      --------
++=--++XXXXXXXX+=+XXXXX+XXXXXXXXXXXXXXXXXXX+XX++XXXX++++++XXX++XXX++X+XX=++XXXXXXXXXXXXXXXXXXXXXXXXXX+XXX-
+    ''''''''''' '''''''''''''''''''''''''''''''''''' '''''''''''''''''' ''''''''''''''''''''''''''''''''
+     .......... .................................... .. ............... ................................
+     =---HHHH-= =-HHH-=-HHHHHHHH--HHHHHHHH=--==-HH-=  = =HH-==HHH==H=--  =HHHHHHHHHHHHHHHHHHHHHHHHHH=-HH
+         CBCC     BBB   CBBBBBCC  CBBBCCBB      CC       CC   CBB  C      CBBBBBBBBBBBBBBBBBBBCBCCCC  CB
+                                                                            VVVVVV    V V
 OOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--  -  --------
+X+ -+++XXXXXXX++++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX+XXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX
+'    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.    ....................................................................................................
+-      -HHHHHH  ==HHHH=-HHHHHHHH--HHHHHHHHHHHHHHHH-==HH-=HHHH-HHHHHHHH= =HHHHHHHHHHHHHHHHHHHHHH=-HHHHHHH-
+        CCBCCC    CBBC  BBBBBCCC  CCCBCCBCCCCCBBCC   CC  CBBC CCCBBCBB   CBBBBBBBBBBBBBBBBBBBBC  BCBBBBB
+                                                                            VVVVVV    VVV V  V        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- --- -- -----
+X++XXXXXXXXX++XXX+XXXX+XXXXXXX++++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXX-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................................
+H= ----HHHH-==---=HHH-=-HHHHH-====HH=HHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH--HHHHHHHHHHHHHHHHHHHHHH==HHHHHHHHH
+C      CCCC       CCB   CBBCC     CC CBBBBBBBBBBCCCBBBBBBCBBBBB CBBCBC  CBBBBBBBBBBBBBBBBBBBCC  CBCBBBBBB
+                                                                             V                      VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=---------=---
+XXXXXXXXXXXX++++++XXXXX+++=++++++++X+XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXX++XXXXXX
+'''''''''''''''''''''''' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................ .  ..............................................................................
+HH-HHHHHHHHH= == =HHHH-= =  = =====- -HHH==H--HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHH- = =HHH==HHHHHH
+BC CCCCCBCCC      CCBC                CCC  C  CC BBBBBBBBBBBBCCBBBBCCCBBBBBBBBC CBBBBBBBBC     CBC  BBBBCC
+                                                  V                      V          VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- ---- ------
+XX+XX+XXXXXX++XXXXXXXXX++++++X+-++XX+XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXX++XXXXXXX+
+''''''''''''''''''''''' ''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................... .......  ..........................................................................
+HH --=--HHHH==----HHHHH =====-=  =--=-HH=-HHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHH-HHHH-HHHHH-===H--==HHHHHHH
+BB      CBBC      CCCBC               CB  CCCBBBBBBBBBBBBBBBB CCCCBCBCCBBBBCBBC CBCC BBBBB    B    CCCCCBB
+                                                  V      V VV          VV              VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM--   --=-===
+XX+XXXXXXXXXXXXX++X++XX++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++XXXXXXXXXXXX+XXXXXX+++XXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................... ....................................  .....................................
+HH=-HHHHHHHH----==-==HH======    ==-HHHHHHH--HHHHHHHHHHHHHHHHHH-=-==   -HHHHH-H--HH=-HHHH-  =-HHH-HHH--HHHH
+BC  CBCCBBCC         CC             CBBBBBB  CCBBBBBBBBBBBBBBCC         CBBCB B  CC  BBBB     CBB BBB  BBBC
+                                                 V    V                               V                  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)=--==-+++=+
+XXXXXXXXXXXXXXXXXXX++XX++++++++X+XXXXXXXXX++XXXXXXXXXXXXX++++++X+   ++XXXXXXXXXXXXX+XXXXXXXXXXXXXXXX++XXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''
+................................................................     .......................................
+H--HHHHHHHHHHHHHHH- =H- =======-=HHHHHH-HH= -HHHHHHHHHHHH= ====H      -H-HHH---H-HH -HHHHH--HHHHHHHH= -HHHHH
+B  CBBBBBBBBBBCCCB   C           CBCCBB CC   BBBBCBBBBBBB      C       C CBB   C BC  BBBBC  BBBBBCBC   BBBBC
+            V                                  VV  V                                                    V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+===-====-+
+XXXXXXXXXXXXXXXXXX++XXXXXXXXXXX+XXXXXXXXX+XX+XXXXXXXXXXXX+  =++XX+XXXXXXXXXXX++XXXX++XXXXXXXXX+XXXXX++XXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''
+..........................................................   ................................................
+-HHHH-HHHHHHHHHHHH==HH---HHHHHH=-HHHHHHH-=--=HHHHHHHHHHH-    ==--=HHHHHHHHHH-==-HHH =HHHHH--H-=-H-HH =-HHHHH
+ CCCC CCBBBBBBCCBC  BB   CBBBBC  BBBBBBB     BBBBBBBBBBB          CCBBBBCCCB    BBC  BBBBB  B   B CC   CBBBB
+            V                       V             V VV                 V         V    VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO===-=++++=+
+XXXXXXXXXXXXXXXXX+++XXXX++XXX++XXXXXXXX+++X+XXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXX++XXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................ ...................................................................................
+-HHHHHHHHHHHHH-HH  =-HHH =HHH==-HHHH---  =-=-HHHHHHHHHH-===-HHH-HHHHHHHHHHHHHHH-HHH -HHHHHHHH---HHHH==-HHH-H
+ BBBCCBBBBBBBB CC    BBC  CBC   CBBB         BBBBBBBBBC     BBC CCBBBBBBBBBCBBC BBB  BBBBBBBB   BBBC   CCC C
+        VVV V                     VV           V                   V   V         V    VVV
 OOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM--=-=+==+)+
+XXXXXXXXXXXXXX++- ++XXX+++XXX++XXXXX+++=++++XXXX+++++++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX++
+''''''''''''''''  '''''''''''''''''''    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................   ..................    ...................................................................
+-HHHHH--HHHHHH==   =HHH= =HHH= HHHHH=       -HHH=======-HHH=-HHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHH-HHH- -HHH- =
+ BBCBC  CBBBBC      CCC   CCB  CBCCC         BBC        CBC  CBCBBBBBBBBBBBBCBBCCBBC BBBBBBBCCB BCC   CCC
+            V                                                           VVV               V
 OOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1- --=++))))
+XXXXX++XXXXXXXX+=+XXXX +XXXXXXXXXXXXX++++++++X++ ++XXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXX+X
+'''''''''''''''  ''''' ''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............  .....  .......................  ...........................................................
+HHHHH==-HHHHHHH  =--HH  --HHH--HHHHHH====== =-=   =---HHH-= =HHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHH=-=-H-HHHHH=-
+BCBBC   BBBBBBC     CC    CBB  BCBBCC                 CBC    CBBBBBBBBBBBBBBBBBB  CCCBBBBBBBCCC    C CBBBB
+          V                                                              V V          V
 OOOOOOOOOOOOOOOOOOOOOOZOOOOOOOOOOOOOOOOOOOOOOOZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-   ---==)11
+XXXX++XXXXXXXXX++XXXX+ +XXXXXXXXXXX+++XXXXXXX- -++++XXXXX++++X++XXXXXXXXXXXXXXX++++++XXXXXXXXXX+XX+XXXXXXXX+
+'''''''''''''''''''''' ''''''''''''''''''''''   '''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''
+...................... ......................    ......... ..................... ...........................
+HHHH==HHHHHHHHH =-HHH  =HHHHHHHHHH-== -HHHHH-    ===HHH--   =-==-HHHHHHHHHHHHH-    ==-HHHHHH--- --=-HHHHHHH=
+CCCB  CCCBBBCBB   CCC   BBBCBCBCCC     CBBBC        CBC          CCCCCCBBBBBBC        CBBBBB        CCCBBBB
+         VVV                                                              V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXAMOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO---   --==+)
+XXXXXXXXXXXXXX++XXXXX-=XXXXXXXXXX+    ++X++++= +++++XXXXX+XX++-+XX+XXXXXXXXXXXXXXXX+XXXXXXXXX+XXXXXXXXXXXXXX
+'''''''''''''''''''''  '''''''''''     ''''''  ''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''
+.....................  ...........     ......  ... ..........  .............................................
+HHHH-HHHHHHHH-= -HHHH  HHHHHHHHHH=     =-==    === =H-HHH -H=   H-=--HHHHHHH--HHHH-=--HHHHHH-=H---HHHHHHHHHH
+BBBB CBCBBBBB    BBBB  CCBBBBBBBB                   B CBC  C    B    CCBBBBC  CBBC    BBBBBB  C   CCCBBBBCCC
+                  VVV      V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--    -----=
+XXXXXXXXXXXXX++XXXXXX=+X++XXXXXXXXXXX++++   - ++X++XX+XX++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXX+X+
+''''''''''''''''''''' '''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................... ..................       .............................................................
+HHHHHHHHHHHHH==-HHHHH =H==-HHHHHHH--H===       =-==HH=HH==HHH-=HHHHHHH-HHHHH-HHHHHHHHHHH--HH=HHHHHHHHHHHH=-=
+BBBCCCCBBBBBB   BBBBB  C   CBBBBCB  C              BB CC  CCC  CBBBCCB BBBBB CBBBBBCBBBB  BB CBCCCBBBBBCC
+       VV VV    VVV                                                             VV   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--  -  -- --
+XXXXXXXXXXXXXXXXXXXXX+++X++XXXXXXXXXX+=+  +++++++XXXXXXX+++XXXXXXXXXXXXX+XXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................     .... ......... .................................................
+HHHHHHHHHHHHHHHHHHHHH= =-==HHHHHHHHHH=     = == =-HHH--H  =--H-HHHHHHHHH=HHHHHHHHH-HHHHHH=---HHHHHHHHHHHH-H
+BBBBCBBBBBBBBBBBBBBBB      CCBBBBCCCC             CBB  C     C CBBBBBBBB CCCCBBBBB BBBBBC    BBBBBBCBBBBC B
+       V       V  V V         V                                  V                    V       VVVVV   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO     -- -
+XXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXX++++++XX++XXXXXX+XXXXXXX++XXXXXX++++XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................................................................
+-HHHHHHHHHHHHHHHHHHHH=  H--HHHHHHHHHH-======--  -HHHH-=HH-H---==HHH---====---HHHHHHHHHHHHH-=-HHHHHHHHHHHH-H
+ BBBBBBBBCBBBBBBBBBBC   C  CBBBBCBBBC            BBBB  CC C     CCC          CBBCCCBBBCCBC   CBBBBBCCBBBC C
+          VV  VVVVV           V                                                                  V
+               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-   - -
++XXXXXXXXXXXXXXXX-+X++XXXXXXXXXXXXXXX+XXX++XXX++XXXXXXXXXXX+++++XXXX+XX+++++=+XXX+XXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''
+................. .......................  ................................  ..............................
+=-HHHHHHHHHHHHHH- =H==-HHHHHHHHHH-HHH=-H-  HHH==HHHHHH-H---==== ----=--= ==   -H-=HHHHHHHHHHHHH--HHH-HHH-HH
+  CBBBBBBBBBCCBB   C   CBBCBCBBBB CCC  C   CBC  CBBBBC C                       C  CBBCCBCBCCCCC  CCC BBC CB
+       V   V
 OOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1
+XXXXXXXXXXXX+XXX= XXXXXXXXXXXXXXX+XXXXXX+ ++XX++XXXXXXXXX++XXX++XX+=+++++XXX++++X+XXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''  ''''''''''''''''''''''' ''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''
+................  ....................... ......................... .......................................
+HHHHHHHHHHH- -HH  -HH-HHHHHHHHHHH=----HH=  =-H==HHHHHH---==HHH==-H=   ===-H-====-=HHHHHHHHHHHH---H------HH-
+CCCBBCBBBCC   CC   CC CBCBCCCBBBC     CC     C  CBBBCC     CCC   C        C       CBBBBBBBBBBC   C      CB
 OOOOOOOOOOOOOOOMZOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-
+XXXXXXXXXXXXXX+  +XXXXXXXXXXXXXXXXXXXXX++ ++XXXXXXXXXXXXXXXXXX+XXXX++++X+XXXX++XXXXXXXXXXXXXXXXXXXXXXX+++X+
+''''''''''''''   '''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............   ........................ .................................................................
+HHHH-HHHHHH-HH    HHHHHHHHHHHHHHHHHHHH-    =-HHHHHHHHHHHH--HHH=-H--  ==-=HHHH==---HHHHHHHHHHHHHHHHHHH-===-=
+BBBB CBBCCC CB    CBBBBBBBBBCBBBBBBBCB       BBCBBBCBBCCB  CCC  C        BBBB     CBBBBBBBBBBBBBBBBBC
+  V                       V   V                                            V        VV V VVVV     V
 OOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-      ---
+XXXXXXXXXXXXXX+ -++XXXXXXXXXXXXXXXXXXXX+  +XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX++++XXXXX++XXXXXXXXXXXXXXXXXXX
+'''''''''''''''  '''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............  .......................  .................................................................
+HHHH-HHHHHHHHH=  ==HHHHHHHHHHHHHHHHHHHH=   -HHHHHHHHHHHHH=HHHH-HHHH--H---HHHH=  =-HHHH==HHHHHHHHHHHHHHHHHH-
+BBBC CBBBBBBBB     BBCBCBBBCBBBBCCBBBBC     CBBBCBCCBCBBC BCCC CBBB  C   CBBB     CBBB  BBBCCCBBBBBBBBBBBC
+VVV                            V              V                           VV        V          V  V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-      -  -
+XXXXXXXXXXXXXXX-+XXXXXXXXXXXXXXXXXXXXXX+  +XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX++XXXXXX+++XXXXXXXXXXXXXXXXXX
+''''''''''''''' ''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............... ........................  .................................................................
+HHHHHHHHHHHHHHH =-HHHH-HHHHHHHHHHHHHHHH    --HHHHHHHHHHHH-HHHHH-HHH-=-HHHHHHHH==-HHHH-= =---HHH-HHHHHHHHHHH
+BBBCBBBBCCBBBBC   BBBC CCBBBBBBBCBBBBBC      CBBBCCBBBBBC BBBCC BCB   BBBBBBBB   CBBB       BBB CBBCBBBBBBC
+V    V      V      V         VV                                             V                       VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+   - - -
+XXXXXXX+++XXXXX++XXXX+XXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXX+XXXXXX+XXXX+XXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''
+........................................ ............................................  ....................
+HHHHHHH  =-HHH-= HHHH=-HHHHHHHHHHHHHHHH= =-HHHHHHH-HHHHH=-HHHHH=HHHH=-HHHHHHHHHHHHHH=   =-H-HHH-HHHHHHHHHHH
+BBBBBBB    CCC   CBBC  CCBBBBBBBBBBBBBC    CCBCCBC BBBBC  BBBBC CCBC  CBBBBBBCCBBBBB      C CBC BBBBBBBBBBB
+VV                V       VV        VV                                                               V V
 OOOOOOO+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-
+XXXXXX+  +++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+XXXXXXXXXXXX++XXXX+++++XXXXXXXXXXXXXXXXXXXX
+'''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''
+.......  ...........................................................................  .....................
+HHHHHH=   ==-=-HHHH----HHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHH=HHHHHH=HHHHHHHHHHHH= HHHH==  =HHHHHHHHHHHHHHHHHHHH
+CCCCCC         BCBC    CCBBBBBBBCBBBBBBC CBBBBBBBBBCBBBC CBBBBC CBBBBBBBBBBC  BBCB     CBCBBBBBBBBCBBBBBBBC
+                          VV VVV    V      V VVV                 VV   V   V                V V        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--  -       -
+XX++++++=+++XXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX+=+XXXXX+++++XXXXXXXXXX++XXXXXXXX
+'''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''' '''''''''''''''''''''''
+........ .................................................................. .......  ......................
+H-= ===    =HHHH-= =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH-H--HHH=HHHHHHHHHH=  HHH-H=  ==HHHHHHH-HH==H--HHHHH
+C           CCBB    CCCBCBBBBBBBCBBBBBBCCBBBBBBBBBC CCBC B  CBC BBBBBBBBBC   CBB C     BBBBBBB CC  C  BBCBC
+                              V       V       VVV                  V  V
 OOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=
+X== +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX++++XXXX++XX+X+XXXXXXXX++++XX+XXXXX
+'   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''
+.   .....................................................................  ................................
+H    ==HH--HHHHHHH--HHHHHHHHHHHHHHHHHH-=-HHHHHHHHH-HHHHHHHH--H -HHHHHHH-=   HHH- =H-=-=--HHHHHH= ==--=--HH-
+C      CB  CCBBBCC  CCCCBBBBBBBBCCCBCC   CBBBBBBBC CBBBCCBB  B  CBBBBBB     CBB   C      CCBBCC         CC
+              V          V   V                VV                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+
+++++XXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=++XXXXX++XXXXX++XXXXXXXXX++X+X+++X
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''
+........................................................................ ....... ..........................
+= = --HHHHHHHH-HHH---HHHHHHHHHH= =-H---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH   =-HHH- =---H-==HHHHHHH--==-=-===-
+      CCBCBBBB CBC   CBBBBBBBBC    C   CCCCBBBBBCCCCBBBBBBBBCBCCBBBBBBC     CBB      B   CCBBCCC
+                         VV V               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ    -
+XXXXXXXXX++XXX++XXXXXXXXXXXXX++X+++XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXX++XXXXXXX++XXXX+XXXXXXXXXXXXXXXX++XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''
+....................................................................................................... ...
+--HH-HHHH==HH- =HHHHHHHHHHHHH==-===H---HH--HHHHH-=HHHHHHHHHHH-HHHHHHHHH =HHHHHHH =HH--=-HHHHHHHHH---HH- =HH
+  BC BBBB  CC   CBCCBCCBBCBBC      C   CC  CBBBB  CCCCCCCCBBB CBBBBBBBB  CBCBBBB  CC    CCBBCCCCB   BC   CB
+                          V                  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA
+XXXXXXXXX+XXXXXXXX+XXXXX+XXXXXXXX+   +++X+++XX++XXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+XXX+++XXXXXXXXXXXXXXX++XX
+''''''''''''''''''''''''''''''''''   ''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................    ........ ............................................................
+-H-HHHHH-=-HHHHHHH=-HHHH=HH-HHHHH=    ==-== H- =--HHHHHHHHHHH--HHHHHHHH=HHHHHHHH- -HH  =HHHHHHH-HH--HHH =HH
+ C CBBBB   BBCBCBB  CCBC CB CCCCC           C     CBBBCBBCCBC  CBCBBBBC CBBBBBBB   CB   CCCCBBC CC  CBC  BC
+           V    V                                  V               VV       V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-         -
+++++XXX++XXXXXXXXX+++XXXXXXXX+XXXXX+++++++++X+++X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''  '''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+. ................ .................  ........  ...........................................................
+   =HHH==HHHHHHHHH  =HH-HHHHH=HHH--=   == ==-=  -===HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHH--H--HHH--HH
+    CCB  CBBBBBBBB   CC BBBBB CBB                   CCCBCBCBBCCCBBBBBBCCBCBBBBBBBB CCCCCCCBBBBC  B  BBB  BB
+           VV   V         VV                                     VV          VV            VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--       -
+XXXXXXXXXXXXXXXXXXXXXX+XXXXXX+XXXXXX+XXX+++XXX+XX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................................................................
+HHHHHHHHHHHHHHHHHHHHHH=HHHHHH -HHHH- -H-   -H-=--== ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+BBCBCBBCBBBCBBBBBBCCCC CCBBBB  BCBB   C     C          CCBBBBBCCBBBBBBBBBCCBBBCBBBBBBBBBBBBBBBBCBBBBBBBCBBB
+               VV         V                                V V    V   V    VV  V V    V   V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-      -   -
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+++XX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXX+=+XXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''
+....................................................................................................... ....
+H-HHHHHHHHHHHHHHHHHHHHHHHHHHH=-H-HHHHHHHH----===--==----HHHHHHHHHHHHHHHHHHHHHHHHHHH=HHHH--HHHHHHHHHHHH=  -HH
+B CCBBBBBBBBBBBBBBBBBBCBBBBBC  C CBBBBBCC               CCCCCBBCCBBCBBBBBCCBBBCCBBC CBBC  CBBBBBBBBBBB    BC
+        VVV   V  V       V V        V                                            V          V        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+- -    ---
++++XXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+-=+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................  ............................................................
+= =HHHHHHHHHHHHHHHHHHHHHHHHHH=HH--HHHHHHHHHHH=  =HH=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHH--HHHHH-HHHH
+   CCBBBBBBCCCBCCBBBCBBBBBBBC CC  BBBBBBBBBBC    CC CBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBCC CC BBCC  CBBBC BBBB
+                                     V  V              V   V V V             V                       V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+    --  ---
++XXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXX++++XXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................... .......... .............................................................
+=-HHHHHHHHHHHHHHHHHHHHHHHHH=-=-HH-=  =-HHHHHH  =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHH-=-HHHHHHHHHHHHHHHHHHH
+  BBBBBBBBBBCCBBCBBBBBBBBBC    BB      BBBBBB     CBBBBBBBBBCBBBBBBBBBCCCCCBBBC CC CCC   CBCCBCBBCCCBBBBBBBC
+    VVVVVVVV        V   VV               V             VVV                   V                       V V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=- -
+XXXXXXXXXXXXXXXXXXXXXXXXXXX++++XX+++++XXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXX+++XXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................... ........................................................................
+HHHHHHHHHHHH-HHHHHHHHHHHH--====--=   =-HH--HH===HHHHHHHHHHHH-HHHHHHHHHH---HH-HH =-HHHH- ==HHHHHHHHHHHHHHHHH-
+CCBBBBBBBBBB CBBBBBBBBBBB              CB  CB   CBBBBBBBBBBB BBBBCBCBCC   BC BC   CCCC    CBCCBBBBCCBBBBBBB
+        V V    VV V V                                  V                                              VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--    -
+XXXX++=+XXXXXXXXXXXXXXXXX+XXXX++X++++++XX++XXXX+XXXXXXXXXXXXXXXXXXXXX++XXXXXXXX+++XX++XXXXXXXXXXXXXXXXXXXXX+
+'''''  '''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....  .............................  ................................ ....................................
+HHH-    -HHHHHHHHHHHHHHHH=HH--  -===  =--= -HH-=HHHHHHHHHHHH-HHH-HHHH= -H-HH-HH===-- =HH-HHHHHHHHHHHHHHHHHH
+BBC      BBBBBBBBBBBBCCBC CC                CC  CBCBBBCCCBBB BCC BBBB   C BB CB       CC CBBBBBBBBBBBCBBCCC
+          V  V VV VVV                                                                           VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-    --  -
+XX++-++XXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+XXXXXXXXXXXXX++++XXX++++XXXX++++XXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXX
+'''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''
+...  ................................................................  .............. .....................
+HH=   =--HHHHHHHHHHHH-HH--HHHH-=-HHHHH-=--H-----HHHHH== =---====HHH-   =HHHHHHHHHHHH  HHHHHHHHHHHHHHHHHHH--
+BB       CBBBBBBBBBBB BB  BCCC   CBBBC    C     CBBBC           BBB     BCBBBBBBBCBC  CCBBBBBBBBBBBBBBBCC
+           VV V VV                                V                        V                  VV V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--   - -   --
+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=++++++X+XXXX+++++XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................  ....................................................
+H=-HHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHH--HHHHHHHHHHH      ==-=HHHH=====HHHHHHHH-HHHH-=HHHHHHHHHHHHHH-HHHH-
+B  CCBCBBBCBBBBBBBBBCBBC CBBBBCCCCCCBBCC  CCBBCCCBBBC          CBCC     CCBBBBBB CBBB  CBBBBBBBBBBBBC BBBB
+            V    VV         V                                             V       VVV     VV   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-       -  -
+++XXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+XXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXX+XXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXX+
+' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+. .........................................................................................................
+= -HHHH-HHHHHHHHHHHHHHHHHH=HHHHH- -HHHHHHHHHHHHHHHHHHHHH-==H-HHHHHHH=-HHHHHHHH== -HHHHHHHHHHHHHHHHHHHHHHHH=
+   BBBC BBBBBBBBBBBBBBBBCC CBBCC   CCBCBBBBBBBBBBBBBBBCC   C BCBBBBC  CBBBBBBB    CBBBBBBBBBBBBCCBBCBBBBBB
+            V V  V V V                     V  VVV VV                      VV                  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM--  - -   -
+++XXXXXXXXXXX++XX+XXXXXXXX++XX+++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXX++XXXXXXXXXX
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ .........................................................................................................
+ =HHHH-HHHHHH==--=--HHHHH- =--=  ==-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH===HHHHHHHHHHHHH= -HHHHHHHHH
+  BBBC CBBBBB       BBBCC             CCBBBBBBCBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBC   CBBCBCCBBBCCC   BCBBBCCBB
+   V       V         VV                   V V                     VVV   VVVV       V     V
 OOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO= -      -
++XXXXXXXXXXXX++++++ +X++++++XX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+++=+XXXXXXXXXXX
+''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ''''''''''''
+..................  ....................................................................... . ............
+=-HHH---HHHH- =     =-= == =--=  ==-H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=--HH=    -HHHHHHHH-H
+  CCC   CCBC                        C  CCCBBBCCBBCCBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBB    CB      CBBBBBBB C
+                                                    V            V    V  VV VVVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO---   ----- -
++XXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXX++++XXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................................................... ...............
+ ---HHHHHHHHH--HH==HHHH----HH---HHHHHH===-HHHHHHH-HHHHH--HHHHHHHHHHHHHHHHHHHHHH-HH= =-HHHH   =HHHHHHHHHHH=
+    CCCBBBBBB  CC  CBBC    CC   CBCCBB    CCCCCCC CBCBC  CBCCBBBBBBBBBBBBBBBBBC CB    CBCC    CBBBBBBBCBC
+        VVVV                                                          V                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- -        -
+++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXX++XX-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................ ................................................
+==-==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H=  -H=HHH-HHHHHHHHHHHHHH----HHHHHHH= =HHHHHH-H==-H
+       CBBBBBBBBBCBBBBBCCCBBBBBBBCBBBBBCCCCCBBCBBBCC  C    C CCB BBBBBBBBBBBBBB    CCCCCBC   CBBBBC C   C
+          VV       V                V                               V    VVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+--        -
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+++X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................ ................................................
+HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==HH= =-===HHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHH-H--=-
+CBBC CBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBCBBBBCBCCC  CC       CCCCBBCBBBCCBBBBC  CCCCCBBBBCCCBBBBBB C
+           V       VVV     V  V V    V                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-     -  -    -
+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++X++++XXXXXXXXXXXXXX++XX++XXXXXXXXXXXXXXXX++XXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................................
+-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHH- -HH =- ===HHHHHHHHHHHHHH= HH==--HHHHHHHHHHHHHH==HHHHH
+  CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB  CBBBBCBBCBBBBB   CB       BBCBBBBBBBBBBB  CC    CBBBBBBBBBBBBC  CBBBC
+    V VVVVV VVVV       VVV VV  V                                          V                 V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-   -       --
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++X+XXXXXXXXXXXXXXX++X+XXXXXX+XXXXXXXX+X+XXX++XXXXXXXXXXXXXXX+++XXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................................
+ -HHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH=====-=--HHHHHHHHH-HH- =-=--HHH-=--HHHHHH=-=-HH  -HHHHHHHHHHHHHH ==HHHH=
+  BBBBBBBBBBBBBBBBBBBBBBBB BBBBBB         CCBBBBCBC CC       CBB    CCCBBB    CC   CBBCCBCCCBBBBC   CBBB
+   VVVVV   V        VVVVV                                                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX--      -
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH  ==---=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=-HHHHHHHHHHHHHH-HHHHHH
+CBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBBC         BBBBBBBBBBBCCCBBBBBBBBCBBBCBBBBCBCCBBC  CCBCCBBBCCCBBB CBBBBB
+  VVVV    VV VV  V  V V V                    VV                 V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+   -     -  --
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=-HHHHHHHHH
+BBBBBBBBCCBBBCCBBBBBBBBBBBBBBBCCBBBBBCBC CCBBBBBB C CBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBCBBBBB  BBBBBBBBC
+ VVVVV      V     VV VV   VVV                          V        V VV   VV  V   V    VVV          VV VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-
+XXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXX++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................
+HHHHHHHHHH-HH=-HHHHHHHHHHHHHHHHHHHH--= =--HH--HH------H==== =-=-HHHH-HHHHHHHHHHHHHHHHHHH---=-HHHHHHHHHH=
+BBBBBBBBBB CC  CBBBBBBCBBCBBBBBBBBC       CB  CC      C         BBBC CCBCCBBCCBBBBCCBBBC     CCCBBBBBCC
+VVV V  V                  VV                                                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--   -
+XXXXXXXXXX+X+=+++XXXXXXXXXXXXXXXXX+++-- -+XXXXX+++XXXXXXXXXX+++++XXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+'''''''''''''  ''''''''''''''''''''''    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............  ......................    ..............................................................
+HHHH--HHHH=-   ==HHH-H-HH--HHHHHHH=      =-HHHH===HHHHHHH---== ==HHHHHHH-=HHHHHHHHHHHHHH---HHHHHHHHHHHH
+BCBC  CBBC       CCC C CC  BBBBBBB         BCCB   CCBBBCC        CBCCCCB  CBBBBBBBBBBBBC   CBBBCBBBBCBC
+       V                       V                                           V    VV               VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA-            - -
+XXX+++++X++=-+++XXXXX++XXXXXXXXXXXXXXXXX+XXXXXX+XXXXXXXXXXXXXXXX++XXX+XXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........    .........................................................................................
+HHH== ==H=    ==-HHH-==--HHHHHHHHHHH----=--HHHH=-HHHHHHHHHHHHHHH  HHH=HHH =HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBB     C        CCC     BBBBBBBBBCC       CCCC  BBBBBBBBBBCCCCC  CBC CBB  BBBBBBBBBBBBBCBBBBBBBBBBCBBB
+VV                         VVV VV                   VVV V          V        VV VV VVV V    VVVV      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-        -- -
+XXXXXXXXXXX+++XXXXXXX+XXXX+X+XXXXX+XXXXXXXXXXXXXXXXX+XXXXXXXXXXXX+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................................................................
+HHHHHHHHH--= =-HH-HHH=-HHH=-=HHHH-=HHHHHHHHHHHH-HHH-=HHHHHHHHHHH-=-H=-HHH--HHHHHHHHHHHHHHHHHHHHHHHHHHH-
+BBBCBBBCC      CC BBC  BBC   CBBB  CCCBBBBBCBBC BBB  CBBBBBBBBBB   C  BBB  BBBBBBBBBBBBBCBBBBBBBBCCBBB
+                   V           VV     VV          V   VV VVVV V        V      V V   VV     VV       VV
+                                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-        --     -
+XXXXXXXXXXXX+XXXXXXXXXXX++XXXXXX+ ++XXXXXXXXXXXXXX++XXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................   ...................................................................
+HHHHHHHHHHHH=-HHHHHHHHHH==-HHHHH   =-HHHHHHHHHHHHH==-HHHHHHHHHHHH-H-=HHH---HHHHHHHHHHHHHHHHHHHHHHH-HH-
+BCBBBBBBBBCC  BBBBBBCBBB   BBBCB     CBBBBBBBBBBBB   CBBBBBBBBBBB C  CBC   BBBBBBBBBBBBBBBBBBBBBBC CB
+    V VVV             VV              V VVVV V  VV     VV VVVV                VV    V V        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--         -  --
+XXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................
+HHHHHHHHHH--HHHHHHHHHHHH=-HH-HHH--HHHHHHHHHHHHHHHH -HHHH-HHHHHHHHHHHHHHHHH-HHHHHHHHH-HH---HHHHHHHHH-HH
+BBBCBCBBBB  CCBBBBBBBCBC  BC BBB  BBBBBBBBBBBBBBBB  CBBB CBBBBBBBBBCCCBBBC CCBBBBBBC BB   BBBBBBBBC BB
+ VV   V V      V          V              V VV   V      V   V V                  V V         VVV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX   --  -   -- - -
+XXXXXXXXX+XXXXXXXXXXX++X+XXXXXXXXXXXXXXXXXXXX+XXXX+XX+XX +XXXXXX+XXXXXXXXX++XXXXXXXXXXX+X+XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''
+........................................................  ............................................
+HHHHHHHHH=H-HHHHHHHHH==-=-HHHHHHHHHHHHHHHHHH-=-HHH=-H=-H  -HHHHH=-HHH-HHHH =HHHHHHHHHH-=-=-HHHHHHHHHHH
+BBBBBBBBC C CBBBBBBBC     CCBBBBCCCBBBBBBBCC   CCC  C  C   BBBBC  CCC CBBB  CBBBBBBBBC     BBBBBBBBBBB
+VV  V        VVV             VV          V                              V     VVVVV          VVVVVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO= -  -      --  --
+XXXXXXXX+XXXXXXXXXXXX+XXXXXXXXXXX+XXXXXXXXX++XX++XXXXXXX+=+XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+XXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''
+......................................................... ............................................
+HHHHHHHH=-HHHHHHHHHH-=-H---HHHHHH=-HHHHHHHH==-H==H--HHHH  =HHHH---HHHHHHHH -HHHHHHHHHHHH--=HHHHHHHHHHH
+BBBBBBBB  BBBBBBCBBB   C   CBBBBB  CBBBBBBC   C  C  BCCC   CBBC   BCCCBBBC  BBBBCBBBBBBC   CBBBBBBBCBC
+VVVV   V   VVVV                                                         V    VV  VVV          VV V
+                                                                                                 A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO              -  -
+XXXXXXXXXXXXX+XXXXX++XXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXX+XXXXX+XXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................
+HHHHHHHH-HHH-=HHHHH =-HH-HHHHHH-  -HHHHHHH-HHHH-HHHHHH-HH-======HHHHHHHHHH -HHH-=HHHHHH--HHHHHHHHHHHH=
+BBBCCBBB CBC  BBBBC   CC BBBBBB    BBBBBBC CBBC BBBBBC CC       BBBBBBBBBC  BBB  CBCCBB  BBCBBBBBBBCC
+VV        V     VV          V                                    VVVVVV V             V       VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-  --            -
+XXXXXXXXXXXXXXXXXX+++XXXXXXXXXX+XXXXXXX+XXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXX++XXX+XXXXXXX+XXXXXXXXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................... .................................................................................
+HH--HHHHHHHHHHHHH-   -HHHHHHHH-=-HHHHHH=-HHHHHHHHHHH==HHHHHHH--HHHHHHHHHHH =HHH=-HH--HH -HH-HHHHHHH-H
+BB  BBBBBBBBCBBBC     CBCBBBBB   BBBBBC  BBBBBCBBBBC  CCBBCBB  CBBBBBBBBBC  CBB  BB  CC  BB BBBBBBB C
+VV   VVVVVV   V           V V      V       V V             V     VVVVV       V            V    V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-      -     - -
++++XXXXXXXXX+XXXX+++XXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXX++XXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................
+===-HHHHHHHH HHH-= =HHHHHHHHHH-HHHHHHHH=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH==-HHHHH==HHHHHHHHHHHHH
+    CBBBBBBB BBB    CCCBCBBBBB CBBBBBBC  CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB  BC   CBBBB  CBBBBBBBBBBCC
+      VVV     V           V      VVVV         VVV VV  VVVVV VVV VVVVV               VV         V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=        -      ---
+++XXXXX+XXXX+XXX+++++XXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXX++XXXXXXXX++XXX++++++XXXXXXX+++XXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................ ....................................................................................
+ =-HHH-=HHHH -H-  ===HHHHHHHHHHHHHHHHHHH-=-HHHHHHHHHHHHHHHHHHH- =-HHHHHH-==-HH======-H--HHH===HHHHHH-
+   CBB  BBBB  B      CBBBBBBBBCBBBBBBBBB   CCBBBBBBBBBBBBBBBBC    CBCBBB    BC       B  BBC   CCBBBB
+     V                    V V    V V          VVV  V  V  V                               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOO-         -    - -
+XXXX+X++XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXXXXXXXXXXXXXXXXXX++++XXXXX++XX+ ++XXXXXXXXX+++XXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''
+...... ........................................................................ .....................
+H-H-=H =HHHH==--HHHHHHHHHHHHHHHHHHHHHHHHH-=--=-HHHHHHHHHHHHHH--HH== =-HHH-==--=  =-HHHHHHHH===HHHHHH
+C B  C  CBCB    CBBBBBBBBBBBBBBBBCBCBCBBB      BBBBBBBBBBBBBC  CC     CCC          BCBCCCBC   CBCBBB
+                  V      VV V                      V      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA-   -- ----- - ----
+XX+++=+++XXXX+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXX
+''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....  .............................................................................................
+HH=    ==-HHH=-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH =HHHHHHHHHHHHHHHHHHHH
+BB        BBB     BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBB CCBB  BBBBBBBBBBBBBBBBBBBB
+            V       VVVVV    VVVVV VVVVV V VV  VVVVVVVVVVVVVV    VV   VVV        VVVVVVVVVVVVVV    V
+                                               A  A       A A                            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--           ----=--
+X+=+++X++XXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+XXXXXXXXXXXXXXXXXXXX
+'' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.. .................................................................................................
+H=   =-==HHH---= -HHHH-HHHHHHHHHH--HH-HHHH=HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=-HHH-=HHHHHHHHHHHHH---HHHH
+B        CBC      BBBC CBBBBBBBBB  CC CBBB CBBBBBBBBBBBBBBBBBBBBBBBBBBBC   BBB  CBBBBBBBBBBBC   CBBC
+V                   V    V V V V        V    VVVVVVVVVVVVVVV    V    V            VVVVVVVVVV     VV
+                                                           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  --   - - -- ---===
+++++XX++XXXXXXXXXXXXXXX+XXXXXXXX+++++++XXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXX+
+' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+. ........................................ ................................................. ......
+=  =-H==HHHHHHHHHHHHHH-=--HHHHHH=======-H- =HHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHH-HHHHHHHHHHH= =HHHHH
+     C  CBBBBBBBBBBBBC    BBBBBB        C   CBBBBBBBBBBBBCBBCBBBBBCC CBBBBBBBBC CBBBBBBBBBB   CBBBB
+         VVV  V    VV      VVV                 V VVVVVVV     VVVV       VVVV      VVVVVVVVV    VVVV
+                                                               A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+   -    ----  ---==)
+ +++++XXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXX+XXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXX
+ '' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  . ...............................................................................................
+     =HHHHHHHHHHHHHHHHHHHHHHHHH==-HHHHHHH- HHHHHHHHHHHH= =--HHHHHHHHHHHHHH-H=HHHHHHHHHHHHHH-HHHHHHH
+      CBBBBBBBBBBBBBBBBBBBBBBBB   BBBBCBB  CBBBBBBBBBBB     CBBBBBBBBBBBBB C CBBBBBBBBBBBBB CBBBBBB
+       VVV VVVVVV VVVVVV V V                      VV V           VVV VVV      VVVVVVVVVVVV   VVVV
+        A                                                                      AA              AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- --     -   --=--=+1
++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XXX++XXXXXXXXXXXX+XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................................
+== -HHHHHHHHHHHHHHHHHHHHHHHHHHH-- -HH=--H  -HHHHHHHHHHH=HHHHH--HHHHHHHHHH=-HHHHHHHHHHHH--HHHHHHHHH
+    CBBBBBBBBBBBBBBBBBBBBBBBBBB    CB   B   CBCCBBBBCCC CBBBB  BBBBBBBBBC  CCBBBBBBBBBB  CCBBBBBBB
+      VVVVV V VVVVV VVVVV VVVV                           VV      VVVVVV      VVVVVV  V       VV  V
+         A                                                          A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- -   - ------- --==)1
+XXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXX+XXXXXX++XXXX+XXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXX++X
+''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................... ........................................................
+HHHHHHHHHHHHH-HHHHH==HHHHHHHHHHHH-=HH-HHH =-H--=HHH====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH====-HHH-==-
+CBBBBBBBBBBBB BBBBB  BBBBBBBBBBBB  CB CBC   C   CCC     BBBBBCBBBBBBBBBCBBBBBBBBBBBBBB     CBB
+  VV VVVVVV   VV                                          VV      VVVV    VVVV VVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM -      -   --- --=-)1
+XXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXX++XXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................................................
+HHHHHHHHHHHH-HHHHHH= HHHHHHHHHHHHHHHHHH-  -HH-HHHHH==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==--HHH--=
+BBBBBBBBBBBB CBBBBB  BBBBBBBBBCBBBBBBBC    CC CCBBC  CCCBBCCBBBBBBBBBBBCBBBBBBBBBBBBBBC    CBC
+VVVVV VVVVVV   V V      V V     VV                           VVV   VVV      VV V VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-           - ----==)1Z
+XXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXX+XXXXXX+XXXX+XXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXX+XXXXXX++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................................................
+HHHHHHHHHHHHHHHHHH==-HHHHHHHHHHHH=-HHHHH=-HH- -HH-HHHHHHHHHHHHHHHHHH-=HHHHHHHHHHHHHHHHHH=H-HHHH==
+BBBBBBBBBBBCBBBBBB   CBBCCBCCBBBC  CCBBB  CC   BC BBBBBBBBBCBBBBBCBC  CBCBBBBBBBBBBBBBBC C CBBB
+VVVVVVVVVVV  V        V                            V VV  V   VV          V V  VVV  V
+ AA
 OOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX              - --==)1Z
+XXXXXXXXXXXXXXXXXX +XXXXXXXXXXXX+++XXXXXXXXX++XXXXXXXXXXXXXXXXXX+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXX+
+'''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................  ............  ..............................................................
+HHHHHHHHHHHHHHHHHH  -HHHHHHHHHH-   -HHHHHHH-==-HHHHHHHHHHHHHHHHH=--=-HHHHHHHHHHHHHHHHHH--H-HHHH=
+BBBBBBBBBBBCBBBBBC   BBBBBBCBBB     CBBBCCC    BBBBBBBBBBBBBBBBB     CBBBBBBBBBBBBBBBBB  C CBBB
+ VVVVVVVV   VVVVV             V                     VV  V VVVVV       V  VVVV  VV
+  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO        - --- ----++)ZAM
+XXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXX+XX++XX++XXX+XXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................. ............................................................................
+HHHHHHHHHHHHHHHHH- =-HHHHHH-HHHH-=-H==--==-HH=HHHHHHHHHHHHHHHHH= ==HHHHHHHHHHHHHHHHHHHHHHH-HHHH
+BBBCCCBBBBBBBBBBB    BBBBCC CBBB   C       BB CBBBBBBBBBBBBBBBC    CBBBBCBBBBBCBBBBBBBBBBC BBBB
+VVV    VVV  VVVVV     V       V                  V V V VVVV  V      VVV  V      V   VV V
+              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-      -  - -------)))XMO
+XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXXX+XX+XXXXX+XXXXXXXXXXXXXXXXXXXXX+                        -
+'''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................  ..........................................................
+HHHH==-HHHHHHHHHHHHHHHHHHHHHHHHH--=  ====HHHH-HHHHHHHHHHHHHHHH-=--=HHHHH=-HHHHHHHHHHHHHHHHHHHH
+BBBC   BBBBBBBBBCCCBBBBBBBCCBBBB         BBBB BBBBBBBBBBBBBCBB     CBBBB  BBBBBBBBBBBBBBBBCBBB
+           VVVV    VVV  VV  VV                   VV VVVV V   V       VV   VV VV    V VVV
+                                                                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO         -  - ----==+)1XOM
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+XXXXX                        -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................................................
+HHHHHHHHH--HHHH-HHHHHHHHHHHHH-=-HHHHHHH-HHHHHHHHHHHH=-HHHH-HHHHHHHHHHHHH=HHHHHHHHHHHHHHH=HHHH-
+CCBBBBBCC  CBBC CBBBBBBBBBBBB   BBBCCCC CCCBCCBBBCBB  CBBB BBCCBBBCBBBBC CBBBBBBBCBBBBBB CCCB
+                   VVVVV    V                           V            V            VV VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=       -  --- --===+ZZZMOO
+XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                         -+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................................................................................
+HHHHHHHHHHHHHHH=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=
+CCBBBBBBBCBBBBB BCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBCCBBBBBBBBB
+    VVVV    V     VVV V VVV  V   VV V       V VVVVVV  V V  VV  V VVVVV   VVV VV      V V
+                                                                 A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+       -- - ----=--)+1XXMOO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                          ==
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................................................
+=--HHHHHHHHHHHHHH-HHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+   BBBBBBBBBBBBBB BBBBBBBBBBBC CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBCBBBBBBC
+    VV VVVVV VV     VV VV VV     VVVVV  V   VVVVV V VV V V VVVVV  VVVVV   V V  VVV    VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+       -- -      -==+11ZAMOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                           -+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHH=---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-
+CBBBBBBBBBBBBBCBBCBBBBBBBBBC    CCCCBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBCBBBBBB
+  VVVVVVVVVVVV       VVVVVV              V       VVVV V VVVVV   VV            VVV    V VV
+    A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=    -   -- -- --======Z1XMMMO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXX                             -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........................................................................................
+=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=HHHH--HHHHHHHHHHHHHHHHH-
+ CBBBBCBBBBBBBCCBBCBBBBBBBCCCBBBBC CCBBBBBBBCCCBBBBBBBBBBBBBBBBB  CCCC  BBBBBBBBCBBBBBBBC
+  V VV  V V V   VV VVVVVVV     V         VV     VVVVVV  VV VVV           V V V    V VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=             - -- ==+=+)XAMMOM
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXX+                             -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=-HHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBCBBBBBBBBBBBBBBBBBCCBBBC  CBBBBBBBBBBBBBBB
+ VVVV V VVVVV   VV V      VVV V        VV         VV V VVVV VV            V VVV VVV VVVV
+                                                                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=             ---- -===+)ZXMMOMO
+XXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                             - =
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................
+HHHHHHHHHHHHH=-HHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHH
+BBBBBBBBBBBBC  CBBBBBBCCBCCCBBBB CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC  CBBBBBBBBBBBBBB
+V VVVV V VVV    VVVVV       VV      V VVVVV     V    V V VVVVV             VV   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-       - -  --------===+)ZAMOMMO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=                             -  -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBCBBBBBBBCCBCCBBBBBBBBBBC
+VVVV   VVVVV       VV V V   VVV  VVVVVVVVVV   V V    V  VV  VV VVVVV           VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX                   - - =++1ZAMMMOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                                 --
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................
+HHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHH
+CCBCCBBBBBBBBBB CBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBCBBBBBBBBBC CBBBBBBBBBBBBBC
+       VV  VVVV  VV VVVVVVVVVVV V VV     V   V V VVV   VVV V    V VV    VVVV  V  VV
+                     A    A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX              - - -----==)1Z1XXAMMO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                                   -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................
+HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-
+BBB BBBBBBCBBBBBBBBCBBBBBBBBBBB CBBBBBCCCCBBBBBBBBBBBBBBBBCBBBBCBBBCCBBBBBBBBBCCCBB
+V    VVVV   VVVVV V    V VVVVVV  VVVV     VV VVVVVVV V  V     V        VVVVVV     V
+              A                                                          A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+               ---- ---===))1ZAAAAMM
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHH-= =-HHHHHHHHHHHHHHHHHHHHH
+BCBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBC CBBBBBBBBBBBBBBBC     BBBBBCCBBBBBBBBBCBBCC
+    VVV     VVVV        VVVVVVV  V  V       V  VVVVVVV       VV V     VVV VVV
+                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-              ---------=++)1)1ZXAOAMO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXX                                   -  -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................................
+HHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH   =  -HHHHHHHHHHHHHHHHH--
+BCBBBBBC  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB       BBBBBBBBBBBBBBBBB
+   VVVV      V  VVVVVVV VVVV VVVVV  V   VVV V  VVV VVVV       VVVVVVVVVVVV  VV
+                                                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)                - ------=-+)+)1ZZAXMMMO
+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXX                                       =
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................
+HHHHHHH=-HHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHH--HHHHHHHH==-H-HHHHHHHHHHHHHHHHHHHHH
+BBBBBBB  CCCBBBBBBBBBBBCC BBBBBBBBBBCBBBBBBB  BBBBBBBB   C CBBBBBBBBBBBBBBBBBBBB
+VV VVVV        VV VVVV    VVVVVV VV  V VVVVV    VV VV         VVVVVVVVVV V  VVV
+                                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-            - --  -----=-==++)1ZZMAMMOOO
+XXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                                      --+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............................................................................
+HHHHHHHHHHHHHHHHHH--==-HHHHHHHHHHHHHHHHHHHHH= -HHHHHH--HHHHHHHH--HHHHHHHHHHHHH
+BBBBBBBCBBBBBBBBBB     CBBBBBBBBBBBBCBBBBBBB   CBBBBB  CBBCBBCC  CBBBBBBBBBBBC
+VVVVVV   VV VVVVV        VVVVVVVVVVV   VVV V    VVVVV                V   VV V
+ A                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA                 ---- --=-=+=)+)1ZZAAMMMMO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                                          =
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................................................................
+HHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH
+BBBBBBBCBBBBBBBBBC CBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCBBBBBCCC CBBBBBBBBBBBB
+VVVVV     V VVVVV    VV VVVVVVVVVVVVVVVVVVVVV  V   V    VV           VVV
+   AA                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=             -     - --===+)))))11XAXXOOMMO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                                       --  =
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBCB
+V VVVVV  V V V VVVVVVVVV VVVVVVVVV V      VVVV VVV    VVV         VVV VV
+  AA                            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)                 -    ------=+=++)=111AAAMOOO
+XXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+XXX++++XXXXXXXXXXXXXXXXXXXXXXXXXX+++XXX                                           --+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                             '
+....................................... ..................................
+HHHHHHHHHHHHHHHHHHHHHHH-=-HHHHHHH-=HH-   =-HHHHHHHHHHHHHHHHHHHHHHHHH===-H-
+CBBBBBBBBBBBBBBCCBBBBBC   BBBBBBB  CC      BBCBBBBBBBBCBBBCBBCCBCCCC    C
+   V VV VVVVVVV  VV VV     V V  V               V   V
+         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                   -  -----=-++)))))11XAMMMOOOO
+++XXXXXXXXXXXXXXXXXXXXXX++XXXXXXXX+XXXXXXXXX+XXX++++XXXXXXXXXXXXXXX+XXXX+                                           ---+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                              '
+......................... ..............................................
+==-HHHHHHHHHHHHHHHHHHHHH  HHHH-HHH HHHHHHHH-=--H====-HH----HHHHHH--=HHH-
+   CBBBBBBBBBBBCBBBBBCBB  CBCC BBC CBBBBBCC    C     CC    CBBBBB   CCB
+      VVVVVVV     V   V              VVV
+        A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1                  -  ----====++++)111Z1XXAMAMOOO
+XXXXXXXXXXXXXXXXXXXXX+XX+++++++XXX+XXXXXXXXXXXXX++XXX+++XX++XXXXXXXXXX+                                              ==+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................ .....................
+HHHHHHHHHHHHHHHHHHHH-=H-= == ==H-H=-HHHHHHHHHHH- =-HH===--==-HHHHHHHHH
+BBBBBBBBBBBBBBBBBBBB  C        C B  BBBBBBBBBBB    BB        BBBBCCBCC
+ V V VVVVVVVVV  VVV                   VVVVV  V
+         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA                 -  -- ==-=====)+)+))Z111XXAMOOOOO
+XXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXX+XXXXXXXXXXXX=+XXXX+XXXXXXXXXXXXXXX                                              ---=+
+''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''
+............................................... .....................
+HHHHHHHHHHHHHHHHHH= ==-H--HHHHHHHH=-HHHHHHHHHH-  -HHH=-HHHH-HHHHHHHHH
+BBBBBBBBBBBBBBBBBB     C  CCCBBBCC  BBBBBBBBCC    BBB  CCCC BCCCCBBBC
+VVV VVVVVVVVVV V                     VVVVVV
+         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=                    - -----++)+++))1)))1111ZXXOMOOO
+XXXXXXXXXXXXXX+++++XXXXXXXXXXXXX+X++XXXXXXX+X+X+XXXXXXXXXXXXXXXXXXX+                                               - -++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                                  ''
+................  ..................................................
+HHHHHHHHHHHH-- =   -HHHHHHHHHHHH H= HHHHHHH=-=-=HHHHHHHHHHHHHHH-HHH=
+BBBBCBBBBBBB        BBBBBBBBBBBB C  BBBBBCC     CCBCBBBBBBBBBBB CBB
+ V      V           VV VVV  V        VVVV           VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                 -   -----==-=++=+)))111)1ZZZXMAOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+-                                                --=++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                                     '
+..................................................................
+HHHHHHHHHHHHHHHH--HHHHHHHHHHHHH=HH-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+BBBBBBBBBBBBBBBC  CBBBBBBBCBBBC BB  BBBBBCBBBBBBBBBBBBBBBCBBBBBBB
+VV VV VVV    VV     VVV V  VV    V    VV     VV VVVVVV    VV V V
+                                                     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-                      - -=-====+==+)))))1111ZZXAMAOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+XXXXXXXXXXXX+X+XXXXXXXX=                                                   --++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                                       '
+................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=HHHHHHHH-=HHHHHHHHHHHH=-=-HHHHHH-
+BBBBBBBBBBBBBBBBBBBBBBCCCCBBBC CBBBCBBC  CBCBBBBBBCBC    CBBBCC
+VV   VVVVV   VV    VVV      V     V           V V         VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=                   -   -  ==+=++)))1))11))111)1XXAOOOMOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXX+XX++XXXXXXXX=                                                   --- -=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---===HHHHHHHH -H==-HHHHHH-
+BBBBBBBBBBBCBBBBBBBBBBCBBBBBBBBBBBB      CBCBCBBC  C   BBBBBB
+VVVVV VV     VV  VVV V  VV     V                            V
+ A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1                      - -----=+++1)1)1+1)1)1ZZ1ZXAAMOOMOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXX+++XXXXXXXXXXX                                                     -- -=+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=HHHHH------H= =---HHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBC CBBBB      C      BBBBBBBC
+   V VVV  VV VVV V VVV     VVV       V V               VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ                   --  -----=====++)))+)++))1111ZZZZAAMOMMOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX+                                                        -  -=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=HH---HHHHHHHH-HHH-HHHHHHHH
+BBBBBBBBCBBBBBBBBBBBBBCCCBBBBB  CB   CBBBBCCC CCC BBBBBBBC
+VVVVVVVV    VV     VV    V VVV          V          V VVVV
+ A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1                        - -----==))))))++))++=1)+1111XZAAMMOMO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=                                                            - -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................
+HHHHHHHHHHHHHHHH-HHHHHHHHHHHHH--HHHHH----HHH-HH--HHHHHH=
+BBBBBBBBBBBBBBBC CBBBBBBBBBBBB  CBBCC    CCC CC  CBBBBB
+VVVVVVVV   VVV     V   VVV                        VVV
+     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=                        - ----==+=))+)+))))))+=+1))))+)1ZXXAOMOM
+XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXX+XXXXXXXXXXX=                                                             - -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................
+HHHHH--HHHHHHHHHHHHHHHHH--H=HHHHHHHHHHHHH-=HHHHHHHHHHH
+BBBBB  BCBBBBBBBCCCBBBBC  C CBCBBBBBBBBCC  CBBBCCBBBBC
+V VVV      VV                    VV V            VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                        - - --==-++))+)+-=++=++====+)++)=====)ZZMMM
+XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+XXXXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................
+HHHH==HHHHHHHHHHHHHHHHHHHHHHHHHHHH-=-HHHH-=-HHHHHHH-
+BBBB  BCBBCCBBBCBBBBBBBBBBBBBCBBCC   BCCC   CCCCBCB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                         ------==+=+11))1))+)+)))=++)))1)+)1)11XZMMMO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+-                                                                    -
+''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=--H=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC    C
+VVVVVVVVVV    VVVVVVVVVVVVVVV VV     V V
+                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA-                        - ---=-=++))+1Z)=+)))=++)+++++=))1))+))ZZZXMMO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                                                                       -
+''''''''''''''''''''''''''''''''''''''''''''''''
+................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBCCBBBBBBBBCCC
+VVVVVVVVVVVVVVV V VVVVVV  VVVV       V V
+A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA-                            --====1))1111))))+)+)+===++++)))1))11ZZXMMOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                                                                        --
+''''''''''''''''''''''''''''''''''''''''''''''
+..............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBB
+VVV  VVVVVVVVVVVVVVVVVVVV  V VV    VVVVV V
+A      A          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-                          - --====)1)1Z1111)1)=)+===+++==++))1+1++))1AAMOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                                                                         -+
+''''''''''''''''''''''''''''''''''''''''''''
+............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBCC
+VV VVVVVVVV  VVVVV VVV  VV V VV V   V V
+AA  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=                           ---===))1ZZXXZX1Z1)1++)+=-===+=+=+=))+)1)))XXMOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++                                                                          --+
+'''''''''''''''''''''''''''''''''''''''''''
+..........................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H=
+BBCBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBCCBBB C
+VV VVVVVVVVV  V     V VV VV VV  V
+         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=                            - --++))1ZAAAAXZ1)+))++=+--=-=-=+=-=+++))111ZAOMOO
+XXXXXXXXXXXXXXXXX+X++XXXXXXXXXXXXX+XXX++-                                                                           - =+
+'''''''''''''''''''''''''''''''''''''''
+.......................................
+HHHHHHHHHHHHHHHHH=-==HHHHHHHHHHHH-=-HH=
+BBCBBBBBBBBBBBBBC    CBCCBBBBBBBB   BB
+V   VVVV VVV   V             V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-                              --==)1Z1ZXMAXAMZ11+))++==----+=+++++)+=))1Z1XAMOOO
+XXXXXXXXXXXXXXXXXXXXXXX+++X+++XX++XXXX+                                                                              -++
+''''''''''''''''''''''''''' '''''''''''                                                                                '
+...........................  ..........
+HH---HHHHHHHHH-HHHHH---===-  =HH= -HHH
+BB   BBBBBBBBB CBBCC          CB   BBC
+V       V V  V                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                            - ---==11ZXZZAMMOOM1Z1))+====-=-===+=+)+++++11)XXMMOOO
+XXXX+XXXXXXXXX+XXXXXXXXXXXX+++XXXXXXX-                                            --                                 -=+
+'''''''''''''''''''''''''''''''''''''
+.....................................
+HH--=-HHHHHHH-=HHHHHHHH--H- ==H--HHHH
+BC    BBBBBBB  CBBBBBBB  C    B  BBBB
+V      VVVV       VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-                            -- =-+)11ZAMMMOOOOMAZ11))))+-=-======++=+)))111ZXAMOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=                                           ----                                 --++
+'''''''''''''''''''''''''''''''''''                                                                                   '
+...................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBB
+VV VVVVVVVVVVV VVVVVVVVVVVVV
+     A           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)                           -  ---==1)1ZMMOMMOOOMMAZ11+++===--===--====)))1Z1ZZXMMOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                                          -  -=-                                  -+=+
+''''''''''''''''''''''''''''''''''
+..................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC
+VV V VVVVVVVVV VVVVV   VVVVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-                           -  ---=+)ZXAMOOOOOOOOOOMX1+)=)===--====+++=+))1)ZZXXXMOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                                          =-+-+++---                               --+++
+''''''''''''''''''''''''''''''''                                               '                                     '''
+................................                                                                                       .
+HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBB BBBBBBBBBBBBBBBBCBBBBBBBBBC
+ VV   VV  VVVVV VVVV   VVVVVVVV
+                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-                                ==+1ZXAAOOOOOOOOOOOMAZ))++=++=====--=+===)+111AMMMMOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                                         --++++++=--                                -++++
+'''''''''''''''''''''''''''''''                                              '''                                      ''
+...............................                                                                                       ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+BBBBBBBCBBBBBBBBBBBBCCBBBBBBBB
+VVV  V     VVVV VVV    V VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                                --=))ZZMOOOOOOOOOOOMAAZ)))+====-==-=+===++)11ZZZXAXZMMOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+-                                        --=+++++++-                                   -+++
+'''''''''''''''''''''''''''''                                             '''                                        '''
+.............................                                                                                         ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+BBBBBBCBBBCCBBBBBBBBBBBBBBBB
+VVVVV   V     VVV  VV    VV
+A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOO-                               ----+)1AMOOOOOOOOOOOMMAZZ1))+====-=-=++++++111ZXXAMMMOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX=                                         -=+++++++++                                 -++++++
+'''''''''''''''''''''''''''                                              '''''                                     '''''
+...........................                                               ...                                       ....
+HHHHHHHHHHHHHHHHHHHHHHHHHHH                                               ==                                          ==
+BBBBBBCBBBBBBBBBBBBBBBCBBBB
+VVVV V VVVVVVV V V  V   VV
 OOOOOOOOOOOOOOOOOOOOOOOOOO)                                - -=+)ZZMOOOOOOOOOOOOOMX11))=-====+===++)++1111ZXAMOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXX+                                          -=++++++++++-                             ---=++++++
+''''''''''''''''''''''''''                                            '''''''''                                   ''''''
+..........................                                             ........                                    .....
+HHHHHHHHHHHHHHHHHHHHHHHHH=                                              ==                                           = =
+BBBBBBBBBBBBBBBBBBBBBBBBB
+ VV  VVVVV   V         V
 OOOOOOOOOOOOOOOOOOOOOOOOO              -                - ----+11XMOOOOOOOOOOOOOOMM1)=+=-=-==-===+++)1)ZAZMMMMOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXX+                                          -+++++++++++=-                             -=++++++++
+'''''''''''''''''''''''''                                            '''''''''                                    ''''''
+.........................                                            .........                                     .....
+HHHHHHHHHHHHHHHHHHHHHHHH                                                 =                                            =
+BBBBBBBCBCBBBBBBBBBBBBBB
+ VV  V      VV    V  V
 OOOOOOOOOOOOOOOOOOOOOOOA                                   ---1)XMOOOOOOOOOOOOOOOA111+++==-===)=++)+))1ZZXXMMMOOOOOOOOOO
+XXXXXXXXXXXX+XXXXXXXXX+                                           -++++++++++++--                             ++=+++++++
+'''''''''''''''''''''''                                             ''''''''''                                   '''''''
+.......................                                             ..........                                    ......
+HHHHHHHHHHH-=-HHHHHHHH=                                                                                               ==
+CCBBBBBBBBB   BCBBBBBB
+   VVVVVVV       V   V
 OOOOOOOOOOOOOOOOOOOOOO=                                ---==++ZMOOOOOOOOOOOOOOOMMZZ1)+======)+++=)1)11Z1AXMMOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXX+                                          --++++++++++++-                             -=+=+++++++X
+'''''''''''''''''''''                                              '''''''''''                                  ''''''''
+.....................                                              ..........                                    .......
+HHHHHHHHHHHHHHHHHHHHH                                               ==    =                                         ===-
+BBBBBBBBBBBCBBBBBBBBC
+VV  VVVVV     V VV V
 OOOOOOOOOOOOOOOOOOOO1                                  --=+)11AOOOOOOOOOOOOOOOMOX11)++======+=+1))11ZZZZAMOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX                                           -++++++++++++++ -                          --==+++++++++X
+''''''''''''''''''''                                             '''''''''''''                                  ''''''''
+....................                                              ...........                                    .......
+HHHHHHHHHHHHHHHHHHHH                                              = ==== =                                          ===-
+BBBBBBBBBBBBCBBBBBBC
+VVVVVVV V VV   V V
 OOOOOOOOOOOOOOOOOOO+                                 ----++1ZAMOOOOOOOOOOOOOOOOOM11)=+)=++==++)))ZZZXZAAOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+++X+                                            =++++++++++++++--                        --+==++++++++++X
+'''''''''''''''''''                                             ''''''''''''''                                 '''''''''
+...................                                              ............                                  .........
+HHHHHHHHHHHH--===-=                                                === = =                                       = ====-
+BBBBBBBBBBBB
+     VVVVVV
 OOOOOOOOOOOOOOOOOO-                                 --===)ZAMOOOOOOOOOOOOOOOOOMM111)==++==+))+Z)ZZZZXAMMOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+                                           -++++++++++++++++                          -=+++++++++++X+X
+''''''''''''''''''                                             ''''''''''''''                             ''''''''''''''
+..................                                             ..............                                 ..........
+HHHHHHHHHHHHHHHHH                                               ========== =                                     ====-=-
+BBBBBBBBBBBBBBBBB
+VVVVVVVVVV  V VV
 OOOOOOOOOOOOOOOOO-                                  ---=ZAMOOOOOOOOOOOOOOOOOOOOXZ1)+=+)))=+)))1Z11AAMMMOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX-                                          -+++++++++XX++++++=-                        -=++++++++++++X++
+''''''''''''''''                                              '''''''''''''''                             ''''''''''''''
+................                                               ..............                             .  ...........
+HHHHHHHHHHHHHHHH                                                  ===--== =                                    == ===-==
+BBBBBBBBCBBBBBBC
+VVVVVV V     VV
 OOOOOOOOOOOOOOOZ                                   --==1XMOOOOOOOOOOOOOOOOOOOOOAX11)+1)++++)1111ZXMMMOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX                                           -=+++++++++++++++++--                      --==+++++++++++++++
+'''''''''''''''                                             '''''''''''''''''                            '''''''''''''''
+...............                                              ...............                                ............
+HHHHHHHHHHHHHH-                                               ===  ======                                    = ==== ====
+BBBBBBBBCCBBCB
+VVVV V
+A
 OOOOOOOOOOOOOO=                                     -+)XOOOOOOOOOOOOOOOOOOOOOOMXX11)))))))Z1)ZXAXMMMOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX                                          -++++++++++++X+++++++-                      ---=++++++++++++++X+
+''''''''''''''                                             '''''''''''''''''                            ''''''''''''''''
+..............                                             .................                             ...............
+HHHHHHHHHHHHH-                                               ====== =-===                                   = ========-=
+BBBBBBBBBBBBB
+VVV V
 OOOOOOOOOOOOO=                                  ---=))XOOOOOOOOOOOOOOOOOOOOOOMOMMX11)))1111ZZXXXAMMOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+                                          -+++++++XX++XX+X++++++ -                    --+++++++++++X++++X++
+'''''''''''''                                           ''''''''''''''''''''                          ''''''''''''''''''
+.............                                            ...................                            ................
+HHHHHHHHH-HH=                                            =  ===--==--=-===                              =  == ==-====-==
+BBBBBBBBB BB
+VVV VVVV
+ A   A
 OOOOOOOOOOOO-                                   ==))ZMOOOOOOOOOOOOOOOOOOOOOOOOMMXX1)1)1111ZXAXAXMMOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX=                                          -++++++XXXX+X+X++++++++-                    --++++++++++X+++X+++++
+'''''''''''                                            '''''''''''''''''''''                         '''''''''''''''''''
+...........                                             ....................                          ..................
+HHHHHHHHHHH                                               ===----=-=-=====                               = == -===-=====
+BBBBBBBBBCC
+VVVVVV V
+AA
 OOOOOOOOOOA                                  ---+=1XOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ111Z1ZZXMMAMMMOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX                                          -=++++++XXXXXXXXXXX++++++--                 =-=+++++++++++++X+XXX+++
+''''''''''                                            ''''''''''''''''''''''                       '''''''''''''''''''''
+..........                                            .....................                           ..................
+HHHHHHHHHH                                             =====----H------====                           =  = = ===-=---===
+BBBBBBBBBC                                                      C
+VVVVVVVVV
 OOOOOOOOO)                                   ---)1AOOOOOOOOOOOOOOOOOOOOOOOOOOAMXZ1111)1XXMX1AXMMOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX                                          -=+++X++XXXXXXXX+XXX+++++-                   -=+++++++++++++++X+X++++
+'''''''''                                            ''''''''''''''''''''''                       ''''''''''''''''''''''
+.........                                            ......................                       . ....................
+HHHHHHHHH                                             ==-==--------=---=                                === =====-=-===
+BBBBBBBBC
+VVVVVVV
+    A
 OOOOOOOO+                                   --+11MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXZZXZZAXMAMMMMOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+                                          =++++XX+XXXXXXXXX+++++++++---                -=++++++++++++++++X++++++
+''''''''                                            ''''''''''''''''''''''''                      ''''''''''''''''''''''
+........                                            .......................                        .....................
+HHHHHHH                                              ==--=--H------=====                             = = === ====-=== ==
+BBBBBBB                                                     C
+VVVVVVV
+  A
 OOOOOOO                                     -=)ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOAXX1AXXMXMAMMOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+                                          -++++XXX++XXXXXX++X++++++++-- -             --=+++++++++++++++X++++++++
+'''''''                                            '''''''''''''''''''''''''                     '''''''''''''''''''''''
+......                                              .......................                       ......................
+HHHHHH                                              ==---==------==-=====                          == = =======-=====
+BBBBBB
+VV V
+A
 OOOOOO                                     -=))XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZZXXMMMMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX-                                          =++++XXXXXXXXXXXXX++X+++++++=--          -  -=+++++++++++++++++X++++++++
+'''''                                            ''''''''''''''''''''''''''                      '''''''''''''''''''''''
+.....                                             .........................                      .......................
+HHHHH                                              ==----H-HH-----==-== ==                           ==========-===== =
+BBCBB                                                    C CC
 OOOO1                                  - --=)ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZMMXMMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX                                            =++++XX+++XXXXXXXXX++++++++==--          - -==++++++++++++++++++++++++++
+''''                                             ''''''''''''''''''''''''''                    '''''''''''''''''''''''''
+....                                              ........................                       .......................
+-HHH                                               ==--===---H-H---=====                           =  = === ======  =
+ BCB                                                         C C
 OOO1                                 - ----+1AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+                                            -+++++XXXXXXXXXXXXXXX+X+++++++ --    - -----==+++++++++++++++++++++++++++
+'''                                              ''''''''''''''''''''''''''                  ''''''''''''''''''''''''''
+...                                              .........................                     .......................
+HH=                                               = =------H-H-H----=-===                             =   ===========
+BB                                                         C C C
+V
 OO-                                - ----=)ZXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X=                                            -=++++++X+XXXXXXXXXXXX+++++++=++=-   -  =--=-++++++++++++++X++X++++++++++=
+'                                               '''''''''''''''''''''''''''                 '''''''''''''''''''''''''''
+.                                                .........................                    .........................
+H                                                 ====-=----H-------====                         = = ====-==-====== =
+B                                                           C
 1                            - -  -  ---==)ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                               +++++X+++XXXXXXXX+XX++++++++====   -=--=-=++=+++++++++++++++++++++++++++=
+                                                '''''''''''''''''''''''''''                  ''''''''''''''''''''''''''
+                                                ...........................                  . .......................
+                                                   =-===--------=--=====                         =    ============
                            -   -  -----==)XZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                             --++++++++X+XXXXXXXXXX++++++++===--- ---=-=+++++++++++++++++++++++++++++++-
+                                               '''''''''''''''''''''''''''              '''''''' ''''''''''''''''''''
+                                                ..........................                 .. .. ....................
+                                                  =====-=----------====                             = = ==== ====
                              -   ----=++))ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            --+++++++++++X+X+XXX++X++++++++=++---==-===+=++++++++++++++++++++++++++++++=
+                                               '''''''''''''''''''''''''''               '' ''''''''''''''''''''''''''
+                                               ...........................                   .........................
+                                                 ========-=-=---==-==== =                      == ==== ==========
                                ------=+))1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                           --=++++++++++X++++XXXX++++++++++++=-----+=+=+++++++++++++++++++++++++++++++=-
+                                              ''''''''''''''''''''''''''''              ''''''''''''''''''''''''''''''
+                                               ...........................                ......................... .
+                                                 == ====-====----=======                        = ====== ======  =
                        -  --  ----=-++)ZZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                           -+++++++++++++++X+++X+XX++++++++++++++++++++++++++++++++++++++XX+++++++++++=-
+                                             ''''''''''''''''''''''''''''''  '    ' ' ''''''''''''''''''''''''''''''
+                                             ............................              ............................
+                                                ===========-===-=--===                        ==== ======--==== =
                        -  ---------+=+)ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                           ++++++++++++++++++X+++X+++++++++++++++++++++++++++++++++++++++++++++++++++---
+                                            ''''''''''''''''''''''''''''' '   ''  '  '  ''''''''''''''''''''''''''''
+                                             ...........................  .   .         ............................
+                                              = ==== ==== ===-===-== ==                     == === ============= =
                 -     --------=-)=+))ZXXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                          -+++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++==--
+                                            ''''''''''''''''''''''''''''''''  '   '''''' '''''''''''''''''''''''''''
+                                            ............................ ..          .   ..........................
+                                              ================== ====  =                 =       ============== ==
                   -- --------=)+++)1AXMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                         -++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++---=
+                                          '''''''''''''''''''''''''''''''''' ''' ''''''''''''''''''''''''''''''''''
+                                            .............................. .  .   ..... ...........................
+                                               ===========-=== = = ===             ===   =  ==== =============
               -  -- ----=-===)1)))1ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+                                      ---++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++X+X+++++++++++==-=
+                                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
+                                           ............................... . . ......... ........................
+                                             = ===  ============ ===   =       =         = =  =======-=-===== =
             -   ------=--+==+)1XZZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                     -=++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++++++=+=-+-=
+                                        '''''''''''''''''''''''''''''''''' ''''''''''''' ''''''''''''''''''''''''
+                                        ................................ . . ..........  .......................
+                                           = ======= ======-=== ===          =  = = =      ==== = == =====  =
           - - ------=)+==++)11XZXAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                    --++++++++++++X++X++++++++++++++++++++++++++++++++++++++++++++++++++X++++++++++--==+
+                                       '''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''
+                                        ...................................  . ...................................
+                                        ==  ======-==-====== ===    === =          =    = ===== ========-==    =
          -    -=-==++))))))1XAMAAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                  --=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++---=-
+                                      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                       ............................... ........................................
+                                        ==   ======================                =      == ====-===========
       -   - ---==++))))1+)ZAMAAOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX
+                               - -==+++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+==-
+                                    '''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''
+                                     ................................. ...  ...................................
+                                          ============= =-===   =             = = =  = ====  = ===========
       -    -=-==)+))1111)11XAMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1
+                               - -+++++++++++X+++X++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++++++++==--
+                                  '''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''
+                                  ................................. .. .. ........ ..........................
+                                   =  =  ====-===-=== = ==-=  =            =  =     = =  = == =====   ===== =
         --===+==)1Z1ZXZZ1MMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+
+                               -=+++++++++++XXXX+XX++X++X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=-
+                                  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                  ................................ ... .......................................
+                                   === =====----=--==-==-=== == =    =     = ==     =       === ======= ==
     - ----=-+=+1)1XAOMAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)- -
+                    -    ---=-=++++++++X+++XXXX+XX+X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
+                               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                ...................................  ........................................
+                                  = ===-===----=--=-========= =            =    = === = = == ==  ====== ==
   -  --- -==111ZZXAAMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=-
+                     -- ---+++++++++++++++XX+XX++XX+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                               ........................................ ....... ...........................
+                                 =========--=--==--==== ======            =  =  ==  =   = = == == === ===
   -- --==+)11ZAXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-
+                 --==-=+=+++++++++++++XXX++++++XXX+X+++++++++++++++++++++=+++++++++++++++++++++++++++++++++++==
+                         ' ' '''''''''''''''''''''''''''''''''''''''''' '  '''''''''''''''''''''''''''''''' '
+                              ...................................     .       .   ...  .     ..............
+                              ========---======---=-====  =                                     ==  === ==
   ----==+)1ZAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=-- -  --
+                -=+++++++++++++++++++XXXXX+X+XXXX++X++X++++++++++++++++++++++=+++++++++++++++++++++++++++++++=
+                     '''''''''''''''''''''''''''''''''''''''''''''''''''''    ' '''''''''''''''''''''''''''''
+                       . .......................................... ..          .. ..........................
+                            =   =====-----=-=----==-==-======= =                       =      == ===  ==
  ----==+1ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-   -----+
+            ---==+++++++++++++++++XXX+X+XX+XXXXX++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++-
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''' '   '  ' '''''''''''''''''''''''''
+                  ..  ............................................. ...            .........................
+                      ===   ======---=-=--=-----============== = =                         = == =   ==
  -=-=+)1ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+    ----=)1
+           --++++++++++++++++++++XXX+XXXX+XXXXXXX+++++++++++++++++++++++++++==+=++=++++++++++++++++++++++++
+               '''''''''''''''''''''''''''''''''''''''''''''''''''''' '''           '''''''''''''''''''''''
+                 ...................................................    .           . ....................
+                    = = =========---=----=H------====== =  ====                             =  =  ==
+                                          C
 -===)11ZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-   - ---=))Z
+         --=+=++++++++++++++X+++XXX+XXXXXXXXXXXX++++++++++++++++++++++++++=+++-==+++-++++++++++++++++++++=
+            ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''        ''  ' '''''''''''''''''
+               ...................................................... ..                ..  ..... .......
+                   = = == ==-===---=------------============ =  =
 -=+11ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-   - --==+1AO
+         -=++++++++++++++++++++X+XX+XXX++X+++XXXX+X++++++++++++++++++++++++=+=--=====+=+++++++++++++++++-              -
+           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '              ' '''''''''''''''''
+            ...................................................... .                   . ..  ....... ..
+             ==== ======  =====-=--=-H-==-===H---=-==  =====   ===                            =
+                                     C       C
 +))ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOMOOOOM+     --===+1AMO
+       --=+++++++++++++++X+XXX++XXXXXXXXXXXXXXXXXXX+++++++++++++++++===++-===- --=-==+++++++++++== ----                =
+          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       ''  ''
+           .......................................................                        .
+            = =  ========-=---==----HH-------------=== ===  =    =
+                                    CC
 ZZZMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOMZ)==--=-=-   ----=+-+1AOOO
+      -=+++++++++++++X++XXXXXXXXXXXXXXXXXXXX+XXX+X+++++++++++++++++++=++++=-+ ---=--=+++++===                        -++
+         '''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''                   '                              ''
+         .......................................................                                                       .
+             ==  ====-==----H------H-HH--H--=---=-========= ==
+                            C      C CC  C
 XXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOX+--            - --=+))ZXOOOO
+    -=+++++++++++++++XXX+XXXXXXXXXXXXXXXXXXXX+XXX+++++++++++++++++++++++==----=-----+=- =-                          -+++
+      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '   ''                                             '''
+       ...................................................... .        .                                              ..
+       == ===========---=----------H--H------=---===========                                                           =
+                                   C  C
 MMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOX1)=-               ---=+)1ZZMOOOOO
+   ==+++++++++XXX+X+XXXXXXXXXXXXXXXXXXXXXX+XXXX+X+++++++++++++++++++=-=====-=-- --- -                              +++++
+      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''                                                 ''''
+      ..........................................................                                                    ....
+         =====---=-=-HH-----HHH-H--HH-----=----=-=======    =                                                        ===
+                     CC     CCC C  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOMMMAA1)+-                    -=+)1)ZAMOOOOOO
+---++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++=--  ----                                      +++++X
+     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                                  '''''
+     ...........................................................                                                   .....
+         ======-=-----HH--HHHH-HHHH-H-HHH---H-H--=====     = =                                                      ===-
+                      CC  CCCC CCCC C CCC   C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOZ)==--                      ----=)))ZAMOOOOOOO
+=++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXX+++++++++++++++++=--  --                                       +++XXXX
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''                                               ''''''
+    ..........................................................                                                    ......
+       ======-=-----H-HH-HHHHHHHHHH-HHH----==-----  ==   ==                                                       ==----
+                    C CC CCCCCCCCCC CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMM=-                          - --++))ZAOOOOOOOOO
++++++++++++X+XXXXXXXX+XXXXXXXXXXXXXXXXXXX+XXXXX+++++++++++++++++++=-                                           -++++XXXX
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''' '                                              ''''''''
+ ...................................................... ..... .                                                 ........
+  = =======-=--------=HHH-HHHH-HH-H------=-----=====                                                             ===-HHH
+                      CCC CCCC CC C                                                                                  CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOZ) --          -  --   -   - -----+)1Z1MOOOOOOOOOO
++++++++X++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++ - -                                        -++++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                               '''''''''
+................................................................                                               .........
+=======- =-==--H-HHHHH-HHHHHHHHHHHH-HH--HH------==== ===                                                         ==--HHH
+               C CCCCC CCCCCCBCCBCB CC  CC                                                                           BBB
+                                                                                                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZ)             - --  -         -=+)1XZAMOOOOOOOOOOO
++++X+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+++++++++++++++++=-                                          =+++XXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                             ''''''''''
+.................................................................                                              .........
+===-=--=---------HHHHH-HHHHHHHHHHHH-HH--H-=---H-===== ==    ====                                                =--HHHHH
+                 CCCCC CCCCBCCBBCCB CC  C     C                                                                    CBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1)= -- -   -  -- ----- -     - --=+))Z)AMOOOOOOOOOOOO
+++X++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX+++++++++++++++++=                                          -++++XXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                            '''''''''''
+.................................................................                                             ..........
+==-==--=----H--HHHHHHHHHHHHHHHHHHHHHHH-----==---======== == = ==                                              ===--HHHHH
+            C  CCCCCCCBCCBBBCCBCCBBCCC                                                                             CCBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+-- ------    -- -------  ---- --=+))1ZZMOOOOOOOOOOOOO
++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX+++++++++++                                          -+++XXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                           ''''''''''''
+.................................................................                                           ............
+===--------HH-HH-HHH-HHHHHHHHHHHHHH-HHHHHH-------=-=--= =   =  =                                             = --HHHHHHH
+           CC CC CCC CCCBCCCCBBCCCC CBCCCC                                                                       CCCCBBB
+                                                                                                                      VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=-- --=+)+=-- -   ---=----  - ----=+)1ZZAMOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX++++++++-                                           -++++XXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                              '''''''''''''
+.............................................................                                               ............
+==-----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH----HH-=----== ====                                               ===HHHHHHHHH
+       CCCCCCCCCCCBCCCBBCCBBBBCBCCCCCC CCC    CC                                                               CCCBBBBBB
+                                                                                                                    VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA-- - --+)1ZZ1=---- -----===---    ---)))1ZAMOOOOOOOOOOOOOOO
+X+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++++                                             -++XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                                '''''''''''''
+...........................................................                                                .............
+-=-=-=-H-HHH-HHHHHHHHHHHHHHHHHHHHHHHHHH-H---HHHH----=---===                                                 --HHHHHHHHHH
+       C CCC BCCCCBCBBBCCCCCBBCCCBBCCCB C   CCCC                                                              BCBCBBBBBB
+                                                                                                                    VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+--   -==)1ZMMZ=----=====+=+----------==1+11AOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X++                                              --+++XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                                '''''''''''''''
+........................................................                                                 ...............
+-------HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH-=-=-=                                                  ==HHHHHHHHHHHH
+       CC CCCBBCBBBBCBBCBCBBBBCCBBCCCCCCCC CCCCCCC                                                          CCBBBBBBBBBB
+                                                                                                                 VVVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA-   ---=)ZAMOOOX+--=-==)+)+)+++====---+=))ZZZXOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+             --=                               -+++XXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''                                                 ''''''''''''''''
+.......................................................                                                 ................
+------HHHHHHHHHHHHHHHHHHHHHH-HHHHHHHH---H-----HHHH----=                                                  =-HHHHHHHHHHHHH
+      CCCCBCBCBBBBBBBBBBCCCB CBCCBCCC   C     CCCC                                                         CBBBBBBBBBBBB
+                                                                                                              VV VVVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+ -  --+ZMOOOOOOO+---==+111ZZZZ)1+++)+==)11XXAOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=          -+++++-                             -=+++XXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''            '''''                                ''''''''''''''''''
+.....................................................             . .                                 ..................
+----H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH--HHHHHHH=              = =                                  ==-HHHHHHHHHHHHHH
+    C CCCBBBBBBBBBBBBCCCBBBCCCCBCCCBBC  CC  CCCBCBC                                                       CBBBBBBBBBBBBB
+                                                                                                             VVVVVVVVVVV
+                                                                                                                   A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+--  -=1ZOOOOOOOOOZ--=)1ZXAAAMAMAXZ1111)1)ZXAAMOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+          -+++X++++                             -++XXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''           ''''''''                              ''''''''''''''''''''
+...................................................            .......                               ...................
+---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHH-             ==-===                                 ---HHHHHHHHHHHHHHH
+   CBCCCCBBBBCBBBBBCCBBCBBBCBCBBBCBCCC CCCCCBBCBC                                                        BBBBBBBBBBBBBBB
+                                                                                                          VVVVVVVVVVVVVV
+                                                                                                                   A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+-- --)ZOOOOOOOOOOOO)=))XMOMOOOOOOOMMAX1)1ZXAAMOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++-         --++++XXXXX-      - --+=---            --++XXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''            '''''''''                              '''''''''''''''''''''
+................................................             ........                               ....................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH--H-=               ===H-HH-                               =-HHHHHHHHHHHHHHHHHH
+CCCCCCCCCBCBBBBBBBBCCCCCCBCCCBBBCCCCC  CC  C                    C CC                                  CBBBBBBBBBBBBBBBBB
+                                                                                                         V VVVVVVVVVVVVV
+                                                                                                                A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+     ---)1OOOOOOOOOOOOO1+)ZMOOOOOOOOOOOOMAAZ)ZZXAMOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++            -++++XXXXXXX+     -+++++++++--          =+++XXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''             ''''''''''''       ''''''''             '''''''''''''''''''''''
+...........................................              ............       .....  .              ......................
+HH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=                ==---HHHH=                             ==HHHHHHHHHHHHHHHHHHHH
+CC  CCCCBBBCCBBBBBCBBCBBBBBBBCBBCBBBCCCCC                       CCCC                                CCBBBBBBBBBBBBBBBBBB
+              V                                                                                         VVVVVVVVVVVVVVVV
+                                                                                                          AAA   A A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-       ---+ZOOOOOOOOOOOOOO11ZOOOOOOOOOOOOOMMAXZXXAMOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+-             +++XXXXXXXXXX+   -=+++++++++++         -+++XXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''               ''''''''''''      '''''''''            '''''''''''''''''''''''''
+.........................................               ............      .........             ........................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=               ==-HHHHHHHHH      =====   =              =-HHHHHHHHHHHHHHHHHHHHH
+CCBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBCCCCC                    CCBBBBBBC                               BBBBBBBBBBBBBBBBBBBBB
+                     V                                                                                VVVVVVVVV VVVVVVVV
+                                                                                                           A     A A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX        --)1AOOOOOOOOOOOOOOA1ZMOOOOOOOOOOOOOOMA11ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+              =++XXXXXXXXXXX    ++++XXX++++=--       -++XXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''               '''''''''''''     ''''''''''           ''''''''''''''''''''''''''
+........................................               .............     .........             .........................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=               ==HHHHHHHHHH-      ==---=               =HHHHHHHHHHHHHHHHHHHHHHHH
+CCBBCBBBBBBBBBBBBCBBBBBBBBBBBBBBCBCCBB                   CBBBBBBBBB                             CCBBBBBBBBBBBBBBBBBBBBBB
+             V                                                                                     VVVVVVVVVVVVVVVVVVVVV
+                                                                                                                 A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=    --==1XMOOOOOOOOOOOOOOOOZXAOOOOOOOOOOOOOMMAZZAXMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+            +++XXXXXXXXXXXX+   -++XXX+X++++=        ++XXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''             '''''''''''''''    ''''''''''           '''''''''''''''''''''''''''
+........................................             ...............    ..........           ...........................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=              =-HHHHHHHHHHH=     =---=-=             =-HHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB                 CBBBBBBBBBB                            BBBBBBBBBBBBBBBBBBBBBBBBB
+         V                 V V                                V VV                              V VVVVVVVVVVVVVVVVVVVVVV
+                                                                                                    A       A A A AA A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-=-+=+1XOOOOOOOOOOOOOOOOOO)XOOOOOOOOOOOOOOMAXXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-         =++XXXXXXXXXXXXXX-  -++XXXX++++---     -++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''           ''''''''''''''''    '''''''''           '''''''''''''''''''''''''''''
+........................................           ................     .......            .............................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH            =--HHHHHHHHHHHH     =-H--==             --HHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBCBCCBBBBCCBBBBBBBBBBBBBBBCBC               BBBBBBBBBBBC       C                   CBBBBBBBBBBBBBBBBBBBBBBBBB
+    V                             V                       V  VVVVV                              VVV VVVVVVVV VV VVVVVVVV
+                                                                                                 A                   A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOZZXOOOOOOOOOMOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++--  ++XXXXXXXXXXXXXXXX+   ++XXXX++= ----   -=++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''     '''''''''''''''''''    '''''''           '''''''''''''''''''''''''''''''
+...........................................      ..................    ......            ...............................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-       =--HHHHHHHHHHHHHH      -HH-=            ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBCBBBBBC           CCBBBBBBBBBBBB       CC                 BBBBBBBBBBBBBBBBBBBBBBBBBBBB
+    V V V             V    V V   V                       V  VVVVV                             V VVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                                      A  A A AA AA A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+1AOOOOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXX+    +++XX++-  ------+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''''           '''''''''''''''''''''''''''''''''
+..................................................................     .....           .................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---=HHHHHHHHHHHHHHHHHH       =--            ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC    CCBBBBBBBBBBBBBBBB                         CCBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+            VV           V  VVVV                      VVVVVVVVVV                             VVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                             AA                                        A    A   AAA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)--+MOOOOOAZ1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+     =+++-    =++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      '''       '' ''''''''''''''''''''''''''''''''''''
+.................................................................      ...          ....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH        =            =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBC                       CBCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBB
+        V           V            V           V  V V  VVVVVVVVVV                               VVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                                   AA   AAAA AAAAA A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO----=1OOAZ)+11OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-      --      -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                '''''''''''''''''''''''''''''''''''''''''
+...............................................................                 ........................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH                  ====-HHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBC                       CBCCC  BBBBBBBBBBBBBBBBBBBBBBBBBBB
+     V         V   V  V VVV V   VV  VV        VVVVVVVVVVVVVVVV                                 VVVVVVVVVVVVVVVVVVVVVVVVV
+                                                          A                                              A AA  AA  AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1--- -=++==+=+)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                +++++XXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                ''''''''''''''''''''''''''''''''''''''''''
+..............................................................                ..........................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=                 ====--H---==-HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB                        C      CBBBBBBBBBBBBBBBBBBBBBBBBBBB
+   VV  V V V          VVV  VVV V V            V VVVVVVVVVVV                                   VVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                    AA   A                                       A A  AA AA AAAAAA  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)------=++=)Z)XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                +XXX+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                '''''''''''''''''''''''''''''''''''''''''''
+............................................................                 ...........................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH                  ---=---HHH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBB                         CCC   BBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+    V V    VV         V  VVVVV               VVVVVVVVV VVVV                                 VVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                         A                                    AA   A  A      AAAAAA AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+----+ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+        -=+++=-+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''           '''   ''''''''''''''''''''''''''''''''''''''''''''
+...........................................................                 ............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH                  =----H----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBB                       C    CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+      VVVV  V        VV  V V   VV V             VVVVVVVVVV                                 VVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                       A                                      AAAA A    A        AAA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=---=)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-      -++XXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........................................................        ......................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH         =HH---===-HHHHHHH--HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBCBCCCBBBCBBBBBBBBBBBBBCBBCBBCCCCC CCBBBBBBBBBBC          CC       CCCCCCC  CC BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+  VV                       V VV                  V VVV V                                  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                            A AAAAAAA  A     A  AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)- --=XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+       ++XXXXXXXX+XXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................        .......................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HHHHHHHHHH         =-HHHHH--=HHHHHHHHH=---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC   BBBBBBBBBC           BBBBB   CCCBCCCCC    BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V  V   V  V  VVV   VVVV VV V VV  V VV   VV         VV                V                   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                          AA AAAAAAAAA   A A    A   AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+----+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+        ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................          ........................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH          =HHHHHHHHHHHHHHHHH----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBBBBC           CBBBBBBBBBCBBCBCC    CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+   VVV  V   VVVV V  V VVV V V  V VVVVV VV        VVVV               VVVV               VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                         AA      AA A AAA   A A AAA AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=----=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+        -++XXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................         ..........................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=          =HHHHHHHHHHHHHHHHHH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCBBBBB            BBBBBBBBBBBBBBBBCC   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+ V  VVV VV V   VVV V  V     V     VV             V                VVVVVV   V           VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                           A     AAAAAAA  A     AAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-- -=)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=        ++XXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................          ...........................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-          =-HHHHHHHHHHHHH--H-H=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBB             BBBBBBBBBBBCC  C C   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+ VV V VVV      V  VVVV VV      V   V V                          VVVVVVVVV             VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                  A                          AAA AAA   AAAAA    A   AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=-==1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+        ++XXXXXXXXXXXXXX+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................         .............................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-          =HHHHHHHHHHHHHH=  = == =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBB            CBBBBBBBBBBBBC         BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVV VVVV    VVVVVV VV            VVVVV  V                     VVV VVVVV             VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                            AAA   AA   AAAA  A  AA AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+--=1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+-      +++XXXXXXXXXXXXXXX+=-----++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''      ''''''''''''''''''''''''''''''''''''''''
+................................................        ..................       .......................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=         =HHHHHHHHHHHHHH-=       =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB           CBBBBBBBBBBBBB           BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVV  VVV V  VV VV  VVVV     V VVV VVVVVV                      VVV VVVVV            VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                   AA                           AA  A  A   AA    AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA=-=1MOOOOOOOOOOOOOOOOOOOOOAZAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+      +++XXXXXXXXXXXXXXXX+=     ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''
+...............................................       ...................       ........................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH         =HHHHHHHHHHHHHHHH=        HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC          CBBBBBBBBBBBBBBC         CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V VVVV VVVVVVV VVVV  V V  VV VV   VVVVV  VVV                 VVVVVVVVVV            VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                    AA       A A      AAA       AAAA
1
 --=)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     +++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      ..................................................................................................................
+      ====--HHHHHHHHH-H-HHHHH-HHHHH--HH----HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHHHHHH
+            CCCCBCCCC C CCCCC CCCCC  CC    CC CBCBBBBCBBBBBBBBBBBCCBBCBBBCCBBBCBBBBCCCCCBBBBBCCBBCBCBBBBBBC CC BBBBBCBBB
 AXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      ..................................................................................................................
+        -=--HHHHHHHHHHHH-HHHHH-HHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+            CCCCCCCCCCCC CBCBC CCCCCCCCCBCC CCBCCBCBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBBBBBCBBCBCBBCCBB
+                                                     V       V                  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+= =----HHHHHHHHHHH-HHHHHHHHH----HHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+       CCCCCCCCCCC CCCCCCCCC    CCCCCCCCBBCCCC CCCBCCCBBBBBBBBBBCBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBCBBBBBCCCCBCBBBCCCCBCBBBC
+                                                                   V             V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-----H---HHHHHHHHHHHHHHHHHHHHHH-HH--HHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+     C   CCCCCCCCCBCCCCCCCCCCCC CC  CCCCCCCC CCCCBBBBCCBBBBBBBBBCBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBCBBCCBBBBBC
+                                                                                   V      VV      V  V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+   CCCCBBBCCCCCBCBCCCCBCBCCCCCCCCCCCCCCBBBCBCCCCBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBCBBBBCCBBBBBBBBBBBBBBBCBBBBCBCBBCB
+                                                                       V                            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=-H-HHHHHHHHHHHHHHHHHHH-HHHHHHHHH-HHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  C CCCBCCCCCCCCCCCBBCC CCCCCCCCC CCCCBCCC CCCCCBBBCBBBBBBBCBCBBBBBCBBBBBB CCBBCCCBBBCBCCBBBBBBBCBBCBBBCBBBBCCBCCCBCCCCC
+                                                          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+--HHHHHHHHHHHHHHHHHHHH-HH--HHH-HHH--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--H-HHHHH
+  CCCCCCCCCCCCCCCBCCCC CC  CCC CCC  C CCCCCCBCBBCBBBBBBBBBBBCBBBBBCCCCBBCC    CCCCCCCCCCCCCBCCCBBBCCCCCBCCCCC C  C CCCCC
+                                                         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=HHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHH-HH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH= =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+ CCCCCCCBCBBCBBCBCBBCBCC CCCCCCCC CC  CCCCCCBBCCBBBCBBBBBBBBBBBBBBBBBBBBBBC    CCBCBBCBCCBBCBCCCBBCCCBBCBBCBCCCCCCCCBCBB
+                                                         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+--HH-=---HHHHHHHHHHHHHHH-H---HHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----HHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHH-HHHH
+  CC     CCCCCCCCCCCCCCC C   CCCCCCC CCCCCCCBCBBBBCCBBCCCBBBCBBBCCBBCCCBBBB    CBCCBBCBCCCBCCCCCCCCCBBBB BBCCCCCCCC CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+--HHHHHHHHHHHHHHHHHHH-H-H--H--HHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  CCCCCCBBCCCCBBCCCCC C C  C  CCCCCCCC CCCBBCCCCBBBCBBBBBBBBBBCCBBBBCCBBBBBBCBCBCCCCCBCBBBBBCCCCBCBCBBBBBBCCCCBCBCCCCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-HHH--HHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H
+ CCB  CCBBCCCCCCCCCBBCCCC CCCBCCCBCCBCCCCCCBCCBCCCCCCBCCCBCCCCCBBBCBBBBCBBCCCCCBCCCCCCBCCCCCCCCCCCCCCBCBBCCBCCCCCCCCBC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-H-HHHHH-H-HHH-----H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHH-H-HHHHHHH---H-HH-HHHH
+ C CCCCC C CCC     C CCCCCCBBBBBBBBCBCBCCCCBCBCCCCCCCCCC CCBBCCBBBCBBCCBBBCC CCBBCCCCCCCCCCCCCBCCC C CCCBBBC   C CC CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HH-HHH--H--H-======--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CC CCC  C  C         CCCCCBCBBBBCBBCCBCBCBCCBCCCCCCCCBCBBCCBCCBBCBCCBBCBBBBCCCCBCBCCCCBBCC BCCCBBCBBBBBBBBBCCCBCCBCCCBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HH-H-------==      ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CC C                   CCBBCBBBBBBBBBBBBBBCBBCCCCCBCCBBCCBBBBBBBBBBBBBBCBBBBCBCBBCC C CCC CCCCCCCCBBBCCCBCBBBCBCBCCBBBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++++++=-=++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........     ........................................................................................................
+-----=== ==       =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                    CCBBBBBBBBBCBBBBBBCBBBBBBCBBCCCCBCCBCBBBCCBBBBBBBBBBBBBBCCBBBCBCCBCCCCCCBCBBCBBCBBCBBBCBCBCBBCCCBBBC
 OOOOOOOOOOOXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX++++--   +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........      .........................................................................................................
+-----===        =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                 CCBBBBBBBBCBBCCBBCBCCCCBBBBBBBBBBBBBCCCCBBCBBBBCBBBBBBBBBCBCCBCCCBCCCCBCBCBBBCCCBCCCCBBBBBBBBCCBCBBBBBB
 OOOOOOOOMZ)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X++++++    -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......      ...........................................................................................................
+=-=== =       -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+               CCBBBBBBCCCCBBCCBBCBCCBBBBCCBBCBBBCCCCCCCCCCCCBCBBBCBBCCCCCCCC C CCCBCCBCC CCCBCCCCBCCCBCBCCCCCCCBCBBBBBB
 OOOOOOM11XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++=    -++++XXX+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....         ..........................................................................................................
+== =          =-H-=== ===-H-HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                C         C CCCC BBCCCCCCCCCBBCBBCCCCCCCCBBBCCBBBBBBBBCBCCBCCCCCCBCCCBBBCCCBBBBCCCCCCBCBBBCBBBBBBCBBCBBC
 OOOOM1+)AOOZ)MOOMZ))ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++     +-   ++     -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''      '    ''      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...           .        .................................................................................................
+                        ===-H-H--HHHH-HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                            C C  CCCC CCCC CCCCCCCCBBCBBCCCCCCBBCBCBBCBBBBBBCBCCBCBBBCCCCBCCCBCBBCCCCBBCCBBCCCBBCCBBCBBB
 OOO1=-=MOO)111+--  -)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++=     =+            =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''       '             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.        .              ................................................................................................
+                        ===-HH--HHHHHH-HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                            CC  CCCCCC CC CCCCCCCCCCBCBCBCCCCCBCBBCBBBCBCCBCBCCCCBBCCBCCBCCBBCCCCCCCCCCBCCCCCCBBCCCCCBBB
 M1- =+MXOOO=-      -=1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        ++-            +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+        ''             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        ..              ................................................................................................
+         =               =--H-HHH--HH--HHH----H---HHHHHHHHHH--H-HHHHHHHH--HHHHHHHHHHHHHHHHH-HHHHHHH-H--HHHHHHHHHHHHHHHHH
+                            C CCC  CC  CCC    C   CCCCCBCBCB  C CCCCCCCC  CCCCCCCCCCCCCCCCC CCCCCCC C  CBCCBCCCCCCCCCBBB
 M) -+OOMOO-        --=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     += +=             -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+        '               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        .               ................................................................................................
+                          ==----HHHHHHHH-HH-H----HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                CCCCCCCC CC C    CCCCC CCBCCBBCBCBBCCCCBCCCCCBCBBCBCCBBCBBBCBBCBBCCCCCCCCCCCCCBCBCBBCBBB
 OOOMZO1OM           -=1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++  = -                -+++++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''                       ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..                         .............................................................................................
+-=                          ==-==HHHHH-H-HH--HHH---H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                 CCCCC C CC  CCC   C  CCCCCBCCCCCCBCCCBCCCCCCBCBCCCCBBCBCCCCCCCCCCBCBBCBBCCCCCBCBBCBBBCB
 OOOM1M1+           --=+)ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX                        =++++++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''                         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...                         ............................................................................................
+HHH                          =====---=--HH-H-H--HH--HHH----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBC                                     CC C C  CC  CCC    CCCBBCCBCCCCBCCCCBBCBBBBBCBBBCCBCBBCBCBBBCBBBBCCCBBBBBCCCCCBC
 OOO)AM=            ----))1ZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+                         -+++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''                           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...                           ..........................................................................................
+HH=                            = === =-=---HHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHH
+CC                                         CCCCCCCC  CCCCCCCCCCCBCCCCCCCBBCCCBCBBBCCBCBCBBBCC CCCBCCCCBBCBBBCBCCCBCCBBBB
 OOOOM-                -+=)11AAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+=-                          =++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..                               . .....................................................................................
+-=                                  = =---HHHHHHHHHHHHHHHHH-HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                          CCBCCCBCCCCCBCCCC CCC CCCCBCBCCBCCCCCBCBBCCBBBBBBBBCBBBBBBBBCBBCBBBBBCCCCBBBCC
 OOXM-               ----===+)1AAZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+                                =+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''                                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..                                 .....................................................................................
+-                                  ===--HHH-HHHHHH-HHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                        CCC CCCCBC CCCCCC C CCCCCCCCBCBBCCCCCBBBBBCBBBCCBBBBBCCBBBBBBBBBBCBBBBCCBCCBCBBB
 OOZ=                -- -=--=++)1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X-                               ++X+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'                                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.                                 ......................................................................................
+-                                  -=====--HHHH-H-H-HHHHHH-HH-HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                           CCCC B C CCCCCC CC CC CCCCBCCCBBCCBBBCCBCBCBBBBBBBBBBCBBCBCBBBBBBBBCCCBBBBBCC
 OM+                  - --- --+)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++                               ++XX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                ........................................................................................
+                                 =--=====--H-HHHHHH-HHHHH-H-HH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                           C CCCCCC CCCCB C CC  CCCCCBCCCCCCCCCBBCBBBBBBBBBBBCCBBBBBBBBCBCCBBBCBBBCBBBBC
 M)                         -=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                              -+++X++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                               .........................................................................................
+                                ==-====----HHHHHHHHHHHHHHHHH-HHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                           CCBCCCCCCCCCCCCCC CCCC   CCBCCCCBCCCCCCCCCBCCCCBCCCBBBBCBCCCBCCCCCBBCBBCBBCCB
 Z-                         -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                             +++XXX+++XXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                              ..........................................................................................
+                               =---===-------HHHH---------=------H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                             CCCC                C  CCCBCBCCCCBCCCCBCBCCBCCCCCBBCCBCCCCCCCBCCBBBCCCCBCCC
 -                        --+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                            =++XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                             ...........................................................................................
+                             ==--H-==-------HHHH--H---H-H--------H-H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                 C          CBCC  C   C C        C C  CCCBCBBBCCCCBCBCCCCCCCCCBBCCCCCCCCCCCCCCBCBCCCBBCC
                          -+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                            +XXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            ............................................................................................
+                             -HHHH-----===--HHH--H-----HH-H---H----HHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                              CBCC          CCC  C     CC C   C    CCC  CBCBBBCBBBBBBBBCCCBCCCCCCBCBBCCCCBCBBBCBBBBBCBBB
                         --XOOOOOOOOOOOAXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           ++XXXXXXX++  =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                           ''''''''''    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            .........    ...............................................................................
+                            =H-HHHH-=     =-H-HHHHH-HH-HH-----------HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                             C CCCC         C CCCCC CC CC           CC CCCBBCCBBBBBBBBBBBCCBCBBBCBBBBBCBBBBBBBBBBBBBBBCC
                       --=1OOOOOOOOOO1-=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                          ++XXXXXXX+    +++++XXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                           '''''''''     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                           .........     ...............................................................................
+                           =-HHH-H-         =HHHHHHHHH---==----HHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                             CCC C           CCCCCCBCC         CCCCCC   CCCCBBBBBBBBBBBCBCBCCBCCCCBCBBCBBBBBBBBBBBCCBCCB
                      --)XOOOOOOOOOO+- =AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         ++XXXXXXX+     ++++XXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                          '''''''''     ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                          .........     . ..............................................................................
+                          =-HHHHHH=         -HHHHHHHHH--= ===-H--H--HHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                            CCCCBB           CBBBCBCCC        C  C  CCCCCCC CBCBBBBBBCBCBCBBBBCCCCBCBBBBBBBBBBBBBBBBCBBB
                      -+XOOOOOOOOOOM  --+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        =++XXXXXXX      -+++XXXXXXXXXX++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                         '''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                         .........       ...............................................................................
+                          =-HHHHH-        ==HHHHHHHHH-=    =-=-H--------------HHHHHHHH--H-HH-HHHHHHHHHHHHHHHHHHHHHHHHHHH
+                            CCCCC           CBCCCBCCC          C              CCBCCCCC  C CC CCCCBCBBBBCCBBBBBBBCCCBCBCB
                      -1AOOOOOOOOOO=   -XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        +++XXXXXX+      +XXXXXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                        ''''''''''      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ..........      ..............  ................................................................
+                         ==--HHHH=       -HHHHHHHHH-==   ===-------H--HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-
+                             CCCC         CCBBBBBBC                C  CC CCCCCCCBCCCCBCCCCCCCCCCCBCCCBCBCBBCBBBCBCCC CC
                    --=1MOOOOOOOOOO=  =OOOOOOOOOOOOOOMZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        ++XXXXXXX+    -+XXXXXXXXX++=   ++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                        ''''''''''     ''''''''''''     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ..........     ............     ................................................................
+                        ==-H-HHHH=     =-HHHHHHH-=       ==---------------HHH-HHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                           C BCBB        CBCBCCC                          CCC CCCCCCC C CCCCCCCCCCCCBBCBBBBCBBCBCCCCBCCC
                   - -=1OOOOOOOOOOO+ =OOOOOOOOOOOOZ+++)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       -++XXXXXXX+   ++XXXXXXXX+-     -+++XXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                        ''''''''''    ''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ..........    ..........        ................................................................
+                         =-HHHHHH=    =-HHHHHH-         ==----H---=-HH---H--H--HHHHHHH--HHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHH
+                           CCCCCC       CCCCCC                C     CC   C  C  CCBBBBC  CCCCCCC CCCCBCCCCCBCCBCCBBCBCCBC
                  -  ==)MOOOOOOOOOO1XOOOOOOOOOOZ--- =)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        +XXXXXXXX+  +XXXXXXX++        ++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                        ''''''''''  ''''''''''         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ..........  .........          .................................................................
+                         -HHHHHHH=   --HH---=            =--H-H------HHHH---H-HH-HHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHH
+                          CBBBBCB      CC                   C C      CCCC   C CC CCBCBCCBCBBBC CCCBCBBBBBBBBCBBBBBCCCBBC
                   - -=1OOOOOOOOOOOMOOOOOOOMZ=  ---=)XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       =+XXXXXXXX+ +++++++            +++++XXXX+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                        '''''''''' ''''''             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        .......... ......              .................................................................
+                        =-HHHHHHH=   = =                ===----=-==---------H-HH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                          BBBBBBC                                           C CC C CCCCCCCBCCCCCCCBCBBBCBBBBBBBBBBBBCBBB
+                                                                                                          V
                     -=1OOOOOOOOOOOOAZAX1=- -  --==)ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       ++XXXXXXXX++                  +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                        ''''''''''                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ..........                    ..................................................................
+                        =HHHHHHHH                      =--H-H-HH---------H--HHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                         CBBBBBCC                         C C CC         C  CCCCCC CCCCCCCCBBBBBBCBCBBBBBBBBBBCBBBBBBBBB
+                                                                                                         VV
                      -ZOOOOOOOOOOOA)=-----  - --=)ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       ++XXXXXX++-                  =++++XXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                        ''''''''                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ........                     ...................................................................
+                        =-HHHH-                      = ==----------------=---HHHHHH---H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                          BBCC                                               CCCCCC   C  CCCCCBBBCBCCCBBBBBBBBBBBBBBBCCB
+                                                                                                                V
           - -- -     =)OOOOOOOOX1X)- -     ---=++1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       ++XXXX++                    =++XXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                        ''''''                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ......                       ...................................................................
+                         -HH-                        =----H--HHH---H--=-----HHHH-H-HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                          CC                              C  CCC   C        CCCC C CCCCC CCCCCBBBBCCCCCBBBBBBBBBBBBBBBBC
+                                                                                                         V   V    V
           --=---     =AOOOOOOOZ1=- -- - ---- -=+1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       =++X++-                    -++++X+XXXXXXXX+XXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                        '''''                      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                         ....                       ....................................................................
+                          -=                          =-=--------=------===----HHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                                               CCCCCCCCCCCBC CCCBCCCCCBBBBBCBBBBBBBBBCCB
          -+))=--    -1OOOOOOOOAZ1)=---  -----=)1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      =+++++++                    =+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                       '''''''                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                       ......                      .....................................................................
+                        ====                       ===--H--HH-----------H---HHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                        C  CC           C   CCCCCCCCBBCC BCCCCCCCBCCCCBBBBBBBBBBBBBBBBCB
+                                                                                                             V       V
         -)OOMZ)=-----1MOOOOOOOOOMZ++----------))ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          -=           ++++X+++=                 -++++XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                       ''''''''                   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        .......                    .....................................................................
+                          =-==                      ==---HHHH-H--=-----H-HHHH---HHHHHHHH-HH---HHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                         CCCC C        C CCCC   CCCBCCBB CC   CCCCCBCBBBBCBBBBBBBBBBBBBB
+                                                                                                       V        V V
        -)OOOOOOX1=- =))AOOOOOOOOOOZ)=----- -==)1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+         =++++-         =++XXXX++=               -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+          ''''           ''''''''                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ....           ........                  .....................................................................
+          ==             ==HHHH=                   ===HHHHHHHHHHH-----------H--HHH-HHHHHHHHH----HH-HHHHHHHHHHHHHHHHHHHHH
+                           CCBC                       CCCCCCCCCCC           C  CCC BCBBCCCCC    CC CCBBBBBBBBBBBBBBCCCCC
 -     -1OOOOOOOOX) --=XOOOOOOOOOOOOX+-------+=+ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        =++X+++-       ++XXXXXXXX++              =++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+         '''''          '''''''''''               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         .....          ..........                ......................................................................
+          =-=           =-HHHHHHH=                 =-=--HHHHHHHH-HH----H------H-HH-HHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHH
+                          CBCBCCC                       CCCCCCCC CC    C      C CC CCBBBCBCCCCC  CBBBBBBBBBBBBBBBBBBBCBB
+                                                                                                             V   V
 -    -+MOOOOOOOOM=  -1OOOOOOOOOOOOOOO)-- ----=)ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        +++++++-      ++XXXXXXXXXXX+-            +++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+        '''''''       ''''''''''''''             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        ......         .............              ......................................................................
+         =====         =HHHHHHHHHH-=               ===----HHHHH------HHHH-H--HHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH
+                        BBBBBBBCBB                        CCCCC      CCCC C  CCCCCBBBCBCCBBC CCCBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                           V VVV V  VV
 =   --ZMOOOOOOOOO=  -OOOOOOOOOOOOOOOOOX+---=-=11MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        +++++++=-    -XXXXXXXXXXXXXX++           +++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+        '''''''       ''''''''''''''''            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         .. ...       ................             .....................................................................
+              =       -HHHHHHHHHHHHH=              ===-HH-HHHHHHHHH-H-H----H-HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                       CBBBBBBBBBBCC                   CC CCCCCCCCC C C    C CC CBCCBCCCCCCCCCCBBCBBBBBBCBBBBBBBBBBBBBBB
+                                                                                                              V
 M-  --+)XAOOOOMMZ   +OOOOOOOOOOOOOOOOOOOZ)==+))ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          -+++       +XXXXXXXXXXXXXXXXX+         ++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+            '        ''''''''''''''''''           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                     ..................            .....................................................................
+                      HHHHHHHHHHHHHHHH-            ==-HH-H--H---HHH-H-HH----H-H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                      CCBBBBBBBBBBBBBB                CC C  C   CCC C CC    C C  CCBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBB
+                                                                                                            VVVVV
 O- ----=)AOMM)++=   1OOOOOOOOOOOOOOOOOOOOOM11ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++         -          +XXXXXXXXXXXXXXXXXX+=      -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'                    ''''''''''''''''''''        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.                    ....................         ......................................................................
+                      HHHHHHHHHHHHHHHHHH=          ===---H-HHHHHHHH-HH-H-H---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                      CBBBBBBBBBBBBCBBBC                 C CCCCCCCC CC C C   CCCCCCCCCBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBB
+                         V                                                                                VVV   V  V   V
 O1--- --11)=--==---1MOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X                    +XXXXXXXXXXXXXXXXXXX++= - -=+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'                    ''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.                    ......................       ......................................................................
+-                    =HHHHHHHHHHHHHHHHHHH=         =--HHHHHHH--H-----HH-HH-HHH-HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                      CCBBBBBBBBBBBBBBBBC             CCCCCCC  C     CC CC CCC CCCC CCCBCBBBCBBBBBBBBCBBBBCBBBBBBBBBBBBB
+                                   V                                                                          VV V     V
 OO-- - =1+  --=-=+)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+                  =+XXXXXXXXXXXXXXXXXXX+++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''                   ''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.                    .......................    ........................................................................
+H                    =-HHHHHHHHHHHHHHHHHH==        =-=-HHHHHHHHH---H--HHHH-H-HHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+C                      CCCCBBCCBBBBBBCCCB              CCCCCCCCC   C  CCCC C CCCCCC CCCBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                            V V  VVVVV
 OO)-  -)1- ----1OO)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+              =+  -+XXXXXXXXXXXXXXXXXXX++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''               '   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..               .   ...................................................................................................
+-=                    -HHHHHHHHHHHHHHHHH-== =    ====--HHH--HHH--HHHH-HH----H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                       CCCCCCBBBBBBBBBBB               CCC  CCC  CCCC CC    C CCCCCCCCCCBBCBBCCCBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                                  VVV
 OOO-  =)1    =AOOOOZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X+            +XX= +XXXXXXXXXXXXXXXXXXXX+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''             '''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..             ...  ....................................................................................................
+=-              HH   -HH-HHHHHHHHHHHHHH--= =   ===----HHHHHHHHHH-H-H---HHH-H-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                CB    BC CCBCCBBCBBBBBC               CCCCCCCCCC C C   CCC C C CCCCCCBBBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBB
+                                  VV                                                                               V V
 OOO1--+Z)   -MOOOOOZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++           +XXXX =+XX+++XXX+XXXXXX+++++++++++++XXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''           '''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...           .....  ...................................................................................................
+===           =HHH-  =HH ==---=----H-========= ===-----HHHHHHHHHHHH-==-HHH-HH---HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+               CBB    BB           C                   CCCCCCCCCCCC    CCC CC   CCC CCBCBCBBCCBBCBBCBBBBBBBBCBBBBBBBBBBB
+                                                                                                                  V  VV
 OOOO---Z1 - AOOOOOOMXOOOOMMOOOMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++         +XXXXX  +XX+  +++  - -+++++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''          ''''''  ''''  '''      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...          ......  ....   .       ....................................................................................
+==           =HHH-H   HH=   =        ===-=-=-HHHHHH-HHHHHHHHH-HHHHH--HHH-------H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+              BBB C   CC                     CCBCCC CCCCCCCCC CCCCC  CCC       C CCCCCBBCBBBCBBBBBBBBBBBBBBBBBCBBCCCCBCB
+               V
 OOOO===O1- ZOOOOOOO1+OOOO+=1OZ=-+)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++   -    +XXXXX+  =+++   -      ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''        '''''''   '''          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....        .......   ...           ....................................................................................
+-= =        =HHHH-=    ==           =HHHHHHHHHHHHHHHHH-H-HHHHH-HHHH-H-----H---HHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+             CBBC                    CBBBBCBBBBCBCBCCC C CCCCB CBCB C     C   CCCCCCC CCCCBBBBBBBBBBBBBBBBBBBBBBBBBBCCBC
+                                                                                                       V    V  V  V
 OOOOO+1XM=-OOOOOOOO- -MOOZ--+- -ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++X+      =XXXXX++    ++         -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''        '''''''    ''          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....        ......     ..          .....................................................................................
+== -        HHHH-=     =           =HHHHHHHHHHHHHHHH----HH-----HH---H-H--HH-HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+            CBBC                    CBBBBBBBBBBBBBBC    CC     CC   C C  CC CCCCC CBCCBBBBBBBCBBBBBBBBBBBBBBBCBBBBBBBBBB
+                                      V        VVV                                                    V         V
 OOOOOM+1M++OOOOOOO)-   )OA-  --AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XX      +XXX+++      -       =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''      '''''''               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....      .......               .......................................................................................
+ ==--       HHH===                =HHHHHHHHHHHHHHHH-----HHHHHHH-HH-HHHH--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+            BBC                    CBBBBBBBBBBBBBBB     CCCCCCC CC CCCC  C CCCCCCCCCCCCBCBBBCCBBBBCCBBBBCBBBBBBBBBCBCCBC
+                                     V   V      V
 OOOOOOX1X1MOOOOOOZ   - -=-   -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXX     XXXX++              +XXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''     ''''''              '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......     ......              .........................................................................................
+===-H-     -HH-=                -HHHHHHHHHHHHHHHH--HH=---H-HHHHHH-HHHH---HHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    C       BB                   CBBBBBBBBBCBBBBB  CC    C CCCCCC CCCC   CCCCC  CCCCCCBCBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBCC
+                                      VV       V                                                      V V  V V
 OOOOOOOZMXOOOOOOO-          -)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXX   +XXX++-              +XXXXXXXXXXXXXXX+++XXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''   ''''''               ''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......   ......               ................. .......................................................................
+=== HHH    HHH=                =HHHHHHHH--HHHHH   -HH--==--HHHHH-HHH----H--HHHHH-HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    CBC    CBB                  BBBBBBCC  BBBBC    BC      CCCCB CCC    C  CCCCC BC CBBBBBCBBBBCCBBBBBBBBBBBBBBCBBBBBBBB
+            V                      VV                                                                 V  V            VV
 OOOOOOOOXMOOOOOZ-          -=AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+++XX+  ++++=               ++XXXXX++++XX+++=-+XXXXX+XXXXXXXXXXX+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''  ''''                ''''''''' ''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........  ...                 ......... .....   ........................................................................
+HH===HH    ==                  =HHHHH=  =-H=     -H-H-=-----H-----=--=-----------HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CC   CC                         CCCCB     C       C C       C                    CCCCBCCCBCCCCCCCCCCBBCBBBCBBBBBBBBBBBBB
+                                                                                                            V VV    V
 OOOOOOOOOMOA+-+-           -)OOOOOOOOOMOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+XXX+ -                  ++XXXXX++ +X++- -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''                     '''''''' '''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........                     ........  ..    ..........................................................................
+HHH- -HH                      =HHHHH=   -      -HHHHH----------HHHHH-H--HHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBB   BC                       CBBBC            CCBCC          CCCCC C  CCCC C CCCCCBCBBBBBBBBCBBBCBBBBBBBBBBBCCBBBBBBBB
+                                                                                                   VV V V             V
 OOOOOOOOOO-----      -    --MOOOOOOMAMOOA))OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+XXX+                   +XXXXX   ++   =+XXXXXXXXX+X+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''                   ''''''   ''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........                   ......   ..    ............................................................................
+HHHH-=HHH                    =-HHHH    =     --HHHHHH-=-=====--HHHHHHH-H-H-HHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBB  CBB                      BBBC            CBBBBC          CCCCCCC C C CCC  CCCCCCCBCBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBB
+VV                                                                                                VV V V V           VV
 OOOOOOOOOOX            -   -OOOOOOO)+OO  )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX++XXXX                  =+XXXX+  -+   +XXXXXXXXXX+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''                   ''''''       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........                   ......        .............................................................................
+HHHH==HHHH                   =HHHH         -HHHHHHHH-===  ====--HHHH-HHHHHHHH-HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBB  CCBB                    CBBC          CCBBBBBB            CCCC CCCCCCCC CC CBBBCBBBBBBBBBCBBBBBBBBBBBBCBBBBBBBBBBB
+                                                                                         V       VVV  VVVVV           V
 OOOOOOOOOOOZ              --OOOOOOO))=--)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX                 +XXXXX+      +XXXXXXXXXX++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''                  ''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........                  ......      ...............................................................................
+HHHHHHHHHHH                  -HHHH=       -HHHHHHHH-   =  ==-=-HHHHHHHH----HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBCBBBBB                   CCBB         CBBBBBBC            CCCCCCCC    CCCC CCCCCCBCBBBCBBBCBBBBBBBBBBBBBBBBBBBBCBBB
+VVV                                                                                                   V  V           V
 OOOOOOOOOOOO=     -        -OOOOOOOZ- -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX                -+XXXX+     ++XXXXXXXX+++-+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''                 ''''''     ''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............                 ......     ............    ................................................................
+HHHHHHHHHHH-                 =HHHH       =HHHHHHHH=       ===-HHH-HHH------H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBB                   CBBC        CCBBBBBC            CCC CCC      C CCCBCCBBBBBBBBBBCCCCBBBBBBBBBBBBBBBBBBBBBBB
+VVVVV  VVV                                                                                         VVVV  VV  V       V
 OOOOOOOOOOOOO-    - - - - --AOOOOOO= -XOOOOOOOOOOOMXXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+                +XXXX-    ++XXXXXXXX+     =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''                '''''     '''''''''''      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............                 .....     ...........        ..............................................................
+HHHHHHHHHHHH                  -HHH      =HHHHHHH-         ==-HHH--HHHH---HH--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBB                   CBB       CBBBBBB             CCC  CCCC   CC  C CCCBCBCBBBBBCBCCCBCBBBBBBBBBBBBBBBBBBBBBB
+  VVVVV  VV                                                                              V          VVV VV V      V  V
 OOOOOOOOOOOOO=      -----   +OOOOOA =OOOOOOOOOOOX+==)ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX                +XXXX   =+XXXXXXXX+       -=++XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''                '''''    ''''''''''         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............                .....    ..........         ...............................................................
+HHHHHHHHHHHHH                 HHHH    =-HHHHHHH           =-HH-HHHHHH---H-HH=----H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBC                 CCBB      CBBBBBC             CC CCCCCC   C CC     C CCCCCCCBBBCCBCCBBBBBBBBBBBBCCCBBCCCBC
+VV  VVV  V                                                                                         V  VV VVVV
 OOOOOOOOOOOOO1    --- --    -OOOOO=+OOOOOOOOOOA=- -=)1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX                -+XXX  -+XXXXXX++         =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''                 ''''   ''''''''           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............                 ....   ........            ...............................................................
+HHHHHHHHHHHHH                 =HHH    -HHHHH=             -HHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBCCC                  CBC     BBBBB               CCCCCCC CCCCCCCBCBCCCCCCCCCCCCCBBBBBBBCBBBBBBBBBBBBBBBBBBBBBB
+V    V                                                                                             VVVVVV  VV V    V VVV
 OOOOOOOOOOOOOO  -- - -=--- --AOOOO=MOOOOOOOO1- - --+ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX-                +XX+  +XXXXXX+          +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''                 ''''  '''''''            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............                 ...   .......            .................................................................
+HHHHHHHHHHHHH                 =-H   =--HHH-            ==--HHHHHH--HHHH-HHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBCB                   B      BBB                 CCCCCC  BCCC CCCCCCCBCCC CCCCCCCBBBBBBCBBBBBBBBBBBBBBBBBBBBBB
+VV   V                                                                                               VVV  VVV VV     VV
 OOOOOOOOOOOOOO-- ----==--- -=AOOO))OOOOOOO1-    --)1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+                +XX  =+XXXX+           ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''                '''   ''''''           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............                ...   ......            ..................................................................
+HHHHHHHHHHHHH=                =H-   =HHHH=            =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCCCCCBCBB                  C     CCBC                CCBBBCCCCCCCCCCCCCBBBBCCBCCCBBCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVV                                                                                                 V V VVVVV VVVV V  V
 OOOMZXZXOOOOOO+ - --==-==----ZOO1-)OOOOOO=-     -)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++     =+++XX                ++   +X++++          =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''      '''''                ''   ''''''           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...       ....                ..    ....             ...................................................................
+H=         =--                 =    -===             =-HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+C                                                      CCCBCCCCC CCCCCBCBBBBBBBBBBBBBBCC CCCCBBBCBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                    VVV VV V  V  VV    V
 OOOOOOOOOOOOOOO-----=)+-==---1M+--1OOOOX=      -=XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++=+---+-                    =++=           =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''   '   '                       '             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.... .   .   .                                     .....................................................................
+  ==                                                =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                     CCBBBCCCCCCBBCCCCCBBBBBBBBBBBCCBCCBCCCCCBCCCBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                    VV VV VVVV V    V  V
 OOOOOOOOOOOOOOOM=---=+)++=---=+=-=)Z))-      - -+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++XXXXXX                                   ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''' ''''''''''                                   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.... ..........                                   ......................................................................
+  =      -HH---                                    =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+          CC                                         CBBBCCCBBCBCCBCBBBBBBBBBBBCBCBCCCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                      V  V V   VV V
 OOOOOOOOOOOOOOOO1==)+))1))=---+==-==-- - - --===XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXX+XXXXXX+                                 ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ .. ............                                  ......................................................................
+    =---=----HH=                                  =-HHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHH
+             CC                                     CBBBBCCCCCBBCBCCBBBBBBBBBCC CCBCBCCCCCCCC BCBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                        VVVVVVV VVV VV V
 OOOOOOOOOOOOOOOOO1++)))Z1)-=-=-===----  -  -+))XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXX+                               =+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''                                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................                                .......................................................................
+=  =-H--HHHHHHH-=                                 -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+     C  CBBBBBB                                    CBBBBBBBBBBCBCBBCCCBBBBBBBBBBBBCBCCCCCCCBCCCCCCBBBBBBBBBBBBBBBBBBBBBB
+         V                                                                                            VV VVV    V   V
 OOOOOOOOOOOOOOOOOOZZ111AX1===--------    --=ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++XXXXXXXX+X+                            +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''                             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................                              .........................................................................
+ = == =HHHHHHH-=-                               =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+       CBBBCBB                                    CBBBBBBBBBBBBBBCBBCCBBBCBBBBBBBCCBCBCCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBB
+        VV                                            VVVV                                          VVV V VVV  V
 OOOOOOOOOOOOOOOOOOOMMOMXX1)=-===)=---  - --+1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X++++XXXXXXXXXXX+  -                       +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''                           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..... ............                            ..........................................................................
+ =-=  =HHH---HHHHH                             =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+       CCC   CCBBC                              CBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCC CCCCCCCCCCCCCCCBCCCBBBBBBBBBBBBBBBBBBB
+                                                    V V V VVV                                            VVVVVV   V   VV
 OOOOOOOOOOOOOOOOOOOOOOOOMZ1)+=-===--     -=+AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XX++++XX+++XXXXXX+--+=                     ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''  '                      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...... .............                         ...........................................................................
+==H-   =-- = -HHHHH=                          =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HH-H---HHHHHHH-HHHHHHHHHHHHHHHHHHHHHH
+  C           CCBBC                            CBBBBBBBBBBBBBBCBBBBBBBBBBCCBCCC CC CC C   CCCCCCC CCBCBBBBBBBBBBBBBBBCBB
+                                                  V VV   VV                                             V VV VV  VVV
 OOOOOOOOOOOOOOOOOOOOOOMOOXZ1===-==---- --==1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+X++++++++++++XXXXX= +=                    +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''' ''' '''''''''  '                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....... ...  ........                        ...........................................................................
+--=-==        ==HHHHH                         -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                CBBBB                          BBBBBBBBBBBBBBBBBBBCBBBBBCBCBBBCBCBCCCBCCCCCCCCCBCBCCBBBBBBBBBBBBCCCCBBBC
+                  V                                VV VV              V
 OOOOOOOOOOOOOOOOOOOOOOOOOOMA)======-- -- -=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++=+++++++XXXXXX+---                  ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''' '''   ''''''''                      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........  ..   ........                      ...........................................................................
+-----==         -HHHHH=                      =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                 BBBBB                        CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCBCCCCCCCCCCCCBCBCBBBBBBBBBBBBBBBBBBBBB
+                   V                            V V V   V V V V      V                                   V VVVV V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOAXOZ+=====--- ---+1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXX++++++==++++XXXXX+-  =                ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''    ''''''''                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........       ........                     ...........................................................................
+=-----==         =-HHHH=                     =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHH
+                   BBBB                        BBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCBCCBBBBCCC  CCCBCCCCBBBBBBBBBBBBBBBBBBB
+                     V                          V     V     VV                                             V   VVVVV VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOZOMA)==+===- --=)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXX+++++=+=++++XXXXXX= -                =+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''  ' ''''''''''                    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........  . ..........                    ...........................................................................
+===--H-===       ==-HHHH-                    =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H-HHHHHHHHHHHHHHHHHHHHHHHH
+     C              BBBB                      CBBBBBBBBBBBBBBBCBBBBBBBBBBBBCCBCBCBCCCCCBCCCC  C CCCCBCBCCCCCBCCCCCBBBCCB
+                                                  VVVV  V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOZZZ)1===++=---)1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+X+XXXXXXX+++=++++XXXXXX+=                 =+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''  ''''''''''                   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............ .  ..........                   ...........................................................................
+H=-=--HH---      ==-H-HHH=                   =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HH-HHHHHHHHHHHHHHHHHHHHHHHH
+C     CC            C CCC                     BBBBBBBBBBBBBBBBCBBBBBBBBBBBCCCCCCCBCCCCCCCC C CC CCBCCCBBBCBBCBBBBBBBBBBB
+                                               V   V    V V       V     V                                      V V  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOAA1)=-===--=-)ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+++++++++XXXXXX++                ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................                  ...........................................................................
+HHHHHHHHH--=  =   ==--HH--=                  =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBCCCBCC             BC                      BBBBBBBBBBBBBBBBCCBBBBBBBBBCCCCCCCCCCBBCCCBCCCBCCCCBCBBBBBBBBBBBBBBBBBBBBB
+                                                   V V VVVV         V                                      V VV V VVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ))+=--==++XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX++++XXXXXXXX++-             +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................                ...........................................................................
+HHHHHHHHHH-HHH--= ==--HH-H--                 -HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHH
+CCBBBBBCCC CCC        CC C                    CBBCBCBBBBBBBBBBBBBBBBBBBBCCC CBCCCCCCCCCBBBCCCC CBCBCBCBBBBBBBBBBBBBBBBBB
+                                                     VV                V                                     V   V VV VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX))=-==+)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX+X+XXXXXXXX++           -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................            ............................................................................
+HHHHHHHHHHHHHHHHH--=-=H--HH--- =             -HHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBCBCCCCCCCCC     C  CC                   CCBCCCCBCCCCBBBCBCBBCCBCBCCCC  CCCCCCCBCCBCBCCCCCC BBBCCBBBCCBBCCCBBBBBBBB
+                                                                                                                     VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)+)=))ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++         -++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................           ............................................................................
+HHHHHHHHHHHHHHHHHH-----HHHH-H---=           ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBCBBCBBCCBCCCCCC     CCCC C                 CBBCCCBCCCCBBBBBBBBBBBBBBBCBCCC   CCCCCBBBBCC CCCCCCCBCBBBBBBBCBBBBBBBBBBB
+                                                                                                                 V V VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAX11ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++       =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................         ............................................................................
+HHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHH=          =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBBBBBBBBCBBBCBBBBC  CCCCCCCBCCCC            CCBBCBBCCCCBBBBBBBBBBCCCBCCCBCCCCCBCCCCCCCCCCCBCBCCCCCCCCCCBCBCCBBBBBBBBBB
+                 V                                                                                                    VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++-  ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................      ............................................................................
+HHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHHHHH-=       -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHH
+BBBCBBBCBBBBBBBBBBCBCCCC CC CBCCBBBC          CBCCBCBCBCBBBBBBCBBCBBBBBCCCBBBCCBCCCCCC CCCCCCCCC CCCCCBCCCCCCCBBBBBBBBBB
+  V                                                                                                               V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHHHHHHH--== ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBCCBBBBBBBBBBBCCCCC CC CCCBCBBBBB       CBCBBCBCBCBBBBBBBBBBBBBBBCCCCCCCCCBBCCCC CCCBBCBBCCCCBBCBBBCBBCCCBBBBBBBBBB
+            V V VV                 VV                                                                            VV   VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHH=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----------H--HH-H-HH-HH--HHHHHHH--H-----HHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBCBCCCC CCCCBBBBBBBBBBBBCCBBCBBBBBCBBBBBBBBBBBBCC          C  CC C CC CC  CCCCCCC  C     CCBCBBBBBBBBB
+                V                   V                                                                              V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBBBBBBBBBCBC   CCCCCCBBBBBBBBBBCCBBBBBBBBBBBBBBBBBCBBCBBBCCCCCCC CCCCCCCBCCCCCBCCBCCCCCBCCCCCCCCCCCBBBBBBBBB
+      V     V V                      VVV V                                                                           VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHH--HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBBBBCCBCCCCBC  CC CCCBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBCBCCCCCCBCCBCCCCBCCCCCCCBBBCCCBCCCCCCBCCBBBBCBBBBBBBBB
+   V       V V                                                                                                  V V VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHH=--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBBBBBBBCBBBCBC CCBCBCBCBBBBBBBBBCBC   C CCCCBBBCBCBBCBCCCBBCCBBCBCCCCCCBCCBBCBBCCCCCCCCCBCCBBBBCBBBBBBBBBBBB
+     V    VV VV                                                                                                   V VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................  .....................................................................
+-HHHHHHHHHHHHHHHHHHHH-H-HH-HHHHH-HH-HHHHHHHHHH-       ====-=--HH-H-H-H-HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+ CCCBCCBBBBBBBBBBBCCC C CC CCBCC CC CCBBBBCBCC                CC C C C CCCCC CCCCCCCCCCCCCCCCCCCCBCCCBCCBBBBCCBBBBBBBBBB
+             V                                                                                                     VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=--   ---=+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................           ............................................................
+HHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHH--HHH-=              ====-----H-HHH-HHHHHHHHHHHHHH-HHH-HHHHHHHHHHHHHHHHHHHHHHH
+BBBCBBBBBBBBBBBBBBBBBBBBC CCBBBCCBCCCBCBBC  CCC                         C BBC CCCBCBBBCCCCCC CCC CCCCCBBBBBBBCCBBBBBBBBB
+     VV V  VVVV                                                                                                   V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ)))))ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++=          --=+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''               ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................                 .....................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH====                   ===-----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBCBBBBBCBBBCBCC                               CCCBCCCCCCBBCCCCCBBCBCCBCCBBCBBBCBBBBBBBBBB
+      VVVVVVVVVVVVV                                                                                               V  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA11)=-==)1AAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++             --+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''                 '''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................                   ..................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=                     = ===--HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCBBBBBBBBBBBBBBBBBBBBBCBBCBBBBCBBBBBBBBCCCCBCCC                             CCCC CCCBBCCCCCCCCBCBBCCBBBBBBBBCBBBBBBBBB
+   V V V VV V VVVV    VV V                                                                                         VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ1)+==-=))ZZX)XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++                 =+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''                    ''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................                    ................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHH===                      ====----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBCBC  CCCC                                 CCCCCCCCBBCCBCBBBBBBBBBCBBBBBCBBBBBBBB
+      V VV VVVVV VVVVV                                                                                               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZ)=+-+)))Z)ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++                 =+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''                   ''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................                    ...............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=                        ======H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBBBCCCC                                C  CCCCCBBCCCCBBBBBBBBBBBBBBCBBBBBBBBBB
+    VV VVVVVV V VVVVV  V                                                                                  V         V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX1)1)1))1ZZXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++               -++++++++++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''                 ''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................                    ..............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===                     = ====-=-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBCBBBBBCBCCBBBBBBBB                                     CCCCCCBBCCCBBBBBBBBBBBBBBCCBBBBBB
+     VV V VVVVVVV VV  VV                                                                                              VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1111ZZZXZAMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++              =++++++++++++++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''                 '''''''''''''''''''''''''''''''''''''''''''''''
+........................................................                  ..............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=                    = == ======-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCBBBBBBBBBBBBBBBBBBBBBBCCCCCCBBBCCBBBBBBBBBBBBBBCC                                      CBBCBBBCCBBBBBBBBBBBCBBBBBBBBB
+     V  VV V VV V                                                                                                    VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXMZAZZXZXAOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++-          -- +++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''                   ''''''''''''''''''''''''''''''''''''''''''''
+.........................................................                   . . ........................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=                         == =  ====H----HHHHHH--HHHHH-HHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBBCCCCCBBBCCCCCBBCBBC                                      C    CCCCCC  CCCBC CCCCBCCBBB
+  VVV    VV    VVVVVV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=-- -- =+++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''             '''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................               ..............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--                   =       =  = =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCCCCCBCCCBBBCBBBBBBBBBBBC                                    CBCCBBCCCBBBCBBBBBBBBBBBBBBBB
+VVV VVVV VVVVVV V VV VVVV                                                                                            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++=+++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '' ' '''''''' '''''''''''''''''''''''''''''''''''''
+..............................................................            ......        ................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===                              =-HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCBCBBCBBBBCBCCCCBCBCCCCBCC                                    CCCCCCCBBBCBBBBBBBBBBBBBBBBB
+V VV VV  VV VVVVVV V V V                                                                                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++-+=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''''''''''''''''''''''''''''''
+................................................................................  .      ...............................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----  ==    == =                  =HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBCBCBCCBCBBBBBBBBCCCCCCBBBBBBBBBB                                   CCCCCCBBCBBBBBBBBBBBBBBBBBCB
+  V  VVVVVVV VVVVVVVV VV                                                                                V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++++++==  -+++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''
+...................................................................................       ..............................
+-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---=-=== ==  ===  ===          =-HHHHHHHHHHHHHHHHHHHHHHHHHHH
+ BBBBBBBBBBBBBBBBBBBBBBBBBCBCBBCBBCCCBCBBBBCCBBBBBBBBBCCBBCC                                 CCCCBCBBBBBBBBBBBBBBBCBBBBB
+       VVVVVVVVVVV VVV                             V                                                    VV V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX+++++++++++++  -  ++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''
+...................................................................................        .............................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH------===--==========         =-HHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCBCBBBBCBBBCCCBBBCCCCCBCC                                CBBBBBBBBBBBBBBBBBBBBBCBCCB
+  VV VVVVVVVV VVVV  V  V                                                                                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZX1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX+XXX+X+X++++-     -+XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''
+...................................................................................        .............................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---==---=---=-=-==         =-HHHHHHHH-HHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBCBBBBBBBBCBBBBCCCCCC                             CBBBBBCC CCBBCBBBBCBBBBCCCC
+  VVVVVVVVVVVVVV VVVV  VV                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1)+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=     -++XXXXXXXX+XXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''
+...................................................................................        .............................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----------HHH----===         =HHHHHH--=-HHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBCC          CCC                 CCCCCC    CBBBBBBBBBBBBBCBB
+  V VVVVVV VV VVVVVVV  V VV    V V    V   V V    V                                                                V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAX=+)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++      +XXXXXXX+++XXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''
+.....................................................................................      .............................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-H-HHHHHHHHHH--==        =HHHHHH-== --HHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBCBBBCBBBBBBBBBBBCBBBBBBBBBCC CC C CCCCCCCCCC             CCCCCB      CBBBBBBBBBBBBCCB
+    VVVVVVV  VVVVVVVV  VV      V           VV VVVV                                                            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+=)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++-     +XXXXXX++++++XXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''
+....................................................................................       .......... ..................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHH-H--=         -HHHHH==   =-HHHHHHHHHHHHHHH
+CBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCBBBBBBCBBBBBBBBBBBCBBBBCBBBCCCC  CCCCCCCCCC C             CCBCC       BBBBBBBBBBCCCBB
+   V  VVV    V   VVVVVVVV     V                V                                                           VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)=)OOOOOOOOOOOMOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++-    =+XXXXXX++- =++XXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      '''''''''   '''''''''''''''''
+....................................................................................       ........    .................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-H-HH--H-HH---         =-HHHH-=     =HHHHHHHHHHHHHHH
+BCBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBBBCCCBBBCBBBBBBBBBBBBBCBBCBCC C C C CC  C CC              CCCC        CBBBBBBBBCBCBCB
+     V  V VV  VV VVV  V                                                                                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1+1OOOOOOOOOMZZOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++-    ++XXXXX++   -+++XXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      ''''''''     ''''''''''''''''
+.....................................................................................      ........     ................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHH--H-HHHHHH--=        =-HHHH=      ==HHHHHHHHHHHHHH
+BBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBCCC C CCC  C CCBBCC             CCCC         CBBBBBBBBBCCBB
+   VVVVVV V   VVVV VVVVVV V  V                                                                                  V
+               AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1XMOOOOOOOOOZ1XOMOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=    ++XXXX++-   - ++XXXXXXXXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      '''''''       '''''''''''''''
+.....................................................................................      .......       ...............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHH----HHHHHHH-==        -H--=         -HHHHHHH-----=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCBCCBBBBBBBBBBBBBBBBBBBCCCC  CCC    CBCCBCC            C             CBBCBCC
+   VVVVV VVVVVVVV VV V      V                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOMAMAMOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++-  =++X++++     --++++XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''''''        '''''''''''''''
+.....................................................................................     ......         ...............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH==       =-==           ==-HHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCBBBCCCCBBBBBBBBBCCBBBBBBBBBCCCCC CCBCCCCCCBCCC                           CBBBBBBBBBB
+ V VVVVVVVVVVVVVV VVVV V                                                                                       V      V
+     A     A   AA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++---=--=+=++++++XXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''          '''''''''''''''
+......................................................................................   ......           ..............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--      ===               ==---HHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCCBBCCBCCBBBBBCBBBBBBBBBBBBBCCCCCCCCCCBCBBCCCCC                               CCBBBBB
+V  VVVVVVVVVVVVVVVVVVVV  V  V                       V   V
+               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++=+=++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''  ' '''''''''
+..............................................................................................                 .........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===  = =                    = === ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCCBBCCBBCBBBBBBBBBBBBBBBBCCBCCCBCCBCCCCCCCBBCCBC
+    VVVVVVVVVVVVVVVVVVVV                          VV   V
+            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++=+-++=++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          ''''
+................................................................................................  ..... ..           . .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----HH--HHHHHHHHHHH-===== ==         =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBCBCBCCBBBBBBBBBBBBBBBCBCC    CC  CCCCCBBCCCC
+VVVVV VV VVVVVVVVVVVVV                            V V V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+++++++++++++++++++=++==+++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''
+.........................................................................................................  .         ...
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---==--====  =    =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCBCCCBBCBBCBCBBBBBBBBBBBBCBCCCCCCCCBCCCBCBBCBBCCC
+V V VVV VVVVV VVVV VVV V VV                          VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++++++++++++++++===++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ' ''''
+...........................................................................................................         ....
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H----HHHHHHHHHHHHH---H-==-==  === =
+BBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBCBCCCCCBCCCCCCCCBCCBBCBBCBCCCBCCCCC C    CCCCCCBCCCCCC   C
+      VVV VV VVVV VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++++++++++++++++=+++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '  '''''''
+........................................................................................................... .     . ....
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH---=-=-== ====                ==
+BCBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBCCBCBBCBBBBCBCCCBBBCBBBBBBCCCCCCCCBCCBCCC CCCBCCCCBBCCC
+            V VVVV VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''
+..............................................................................................................   .......
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHHHHHHHHH-=-=========== =        =   =
+CCBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCBCBCCCBBBBCBBBBBBBBBBBCCCCCCCCCCCCCCC CC BCBBCCBCCCCC
+              VV   VVV V                              V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX++XXX+++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-=----==---========== = == =     =
+CBCCBBBCBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCC CCCCCCCCCCBCCCCCBBCCCBCCBCCCCCCCCCCCC C C
+         V   V  V   VVV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+H--HHHHHHHHHHHHHHHHHHHHHHHHHHHH=--H-------------H-HHHHHHHHHHHH-HHH----HH---HHHHHH-H-H-------HH---=-=-==== ===     = ====
+C  CBCBCBBBCBCBBCBBBBBCCCBCBBCC   C             C CCCCBBCBCCCC CCC    CC   CCCCCC C C       CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+H--H-HHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHHHHHHH--HHHHHHHHH---H---=======     ===  ==
+C  C CCCCCCCCCBBCBBBBBBBBBCBBCC CCCCCCCCC CCCCCCCCCCBBCBBBCBBCCCCCC C CCCCCBBCCCCC  CCCCCCCCC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+------HH--HHHHHHHHHHHHHHHHHHHH-HHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HHHHHHHHHHHHHHHHHHH--H---=-=-=====  = = =  =
+      CC  CCCCCCBBBCBBBCCCCBCC CCCCCBCCBC CCCCBBCBBBCBBBBBBBBBBCBBCCCCCCC   CCCCBCCCCCCCCCCBBCC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+++XX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+---===--==---HHHHHH-HHHHHHHHHHH---H--HHHHHHHHHH-HH---HHHHHHHHHHHHHHHHHHHHHHHH--HH-H-HHHHHHHHH-HHHH----=-================
+             CCCCCC CCCCCCCCCCC   C  CCCCCCCCCC CC   CCCCCCBCCBBBCBCCCCBCCCCC  CC C CCCCCCCCC CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++XXX+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX+X++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=== =  ====---=--=------HH-HHHHH-H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HH-HH-HHHH----------=-=--=-======= == ===
+                        CC CCCCC C  CCCCCCCCCCBCCCCBCCBCBBBCCCBCCCBBCBCCCCCB   CC CC CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++X++X++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+X++X++++++++++
+'''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...  .     .............................................................................................................
+=            = =  =====-==-==--=------HH-H-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH-HHH----H-=-=-=-==-==========
+                                      CC C C CCCCCCCCBBBBBBCCCCCCCCCCBBCCCCCC CCCCCCCBCCBCC CCC    C
 OMMMMMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=     -=- =++++++++++++++++++X+XX+XXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX+++XXXX+XX+
+               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                ........................................................................................................
+                  =  ========-=--=--H---=HHH-H-HHHHH-HHHHHHHHH---HHHHH-H--HHHHHHHHHHHHHHHHH-HHHHH-HHHH--==---===----=--=
+                                    C    CCC C CCCCC CCCBBBCCC   CCCCC C  CCCCCCCBCCCCCCCCC CCCCC CCCC
 ZZ+1111ZZXXXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              -=-=++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXX+++++
+                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                   .....................................................................................................
+                    == =========---HHH-HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHH-H-HH-------=-=-H-=====
+                                   CCC CC CCCCCCCCBBCCBBBBBCBBCBCCCBCCCCCBBCCCCCC CCCCCCBCCCCCCBC C CC           C
 ==--====+)+)ZXAMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                 - ==+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX
+                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                      ..................................................................................................
+                       =   == ====-H---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHH------H-----------=--
+                                   C   CCCCCCCCCCCCCCCCBCBBBCBCCCCCCCCCCCCCCB CCBCCCCCCCBBBBBCCCCCC      C
     ------==+11ZZXAAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      =+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++XXXXX++X+++++++
+                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                         ...............................................................................................
+                            = ====------HHHHHH-HHHHHHHHHHHHHHHHHHHHHH-HHHHHH-HHH-----HHH-H---H----=-=-===-----==-=======
+                                        CCCCCC CCCCCCCCCBCCCCCCCCCCCC CCCBCC CCC     CCC C   C
    -  - --==--=++)11ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       -+=+++++++XX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+XXXX++
+                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                          ..............................................................................................
+                              ===--===--HHHHHH-HHHHHHHHHHHHHHHHHHH-H-HH--HHHHHHHHH-HHHHHHHHH-HHH-H---------=-----=----==
+                                        CCCCCC CCCBCCBCBBBBBBCCCCC C CC  CCCBCCCCC CCCBCCCCC CCC C
          -----=+=+)Z1XAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       --=+++++++++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXX
+                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                             ...........................................................................................
+                              =====-==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHH---HH----=-=---H-------
+                                         CCCCCCCCBBBBBCBBBBBCCBCBBCCCBCBCBBCBCCCCCCCCCCCCC CC CCC   CC          C
        - -   ---==+)1ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         -=++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                              ..........................................................................................
+                                =====-=---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHH-----------------
+                                          CCCCCCCCCBBBCCCBCBBBBBCBBCCBBBBBBCCCCCCCCCCCCCCCCCCCC C CCCCC
            -----===+)1ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         --=+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                              ..........................................................................................
+                                =========---H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-H-HHHHH--H-HHHH--H-----H--H-HHH-H
+                                            C CCCCBBCCCCBBCBBBBCBBBCCCBCCCCBCCCCCCC CC C CCCCC  C CCCC  C     C  C CCC C
           ------===))111XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                          -==+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                              ..........................................................................................
+                                =  =====-------HHHHHHHHHHHHHHHHHHHHHHHH-HHH-HHH-HHHHHH---H--HH-H-H-H------H-HHH--HHHH-HH
+                                               CCCCCCCCBBCCCCCBCCCCCCCC CBC CCC CCCCCC   C  CC C C C      C CCC  CCCC CC
              - ----++)+1XAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -=++++++++++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXX
+                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                              ..........................................................................................
+                               == =====--=---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH----HH---HH-------=HH----HHHHHHHHHH
+                                             CCCCCCCCCCBCBBBBCCCCCCCBBBBBBBBCCCCC  CC    CC   CC        CC    CCCCCCBCCC
                 --==-+)1ZZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                            --+++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXX+XXXXXXXXXXXXXXXXX
+                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                               .........................................................................................
+                                   = ====-=---HH-HHH--HH-HHHHHHHHHHHHHHHHHHHHHH-HH--HHHH-H-----=--=---=--H---HHHHH-HHHHH
+                                              CC CCC  CC CCCCCCCBBBCBBBCBCBCCCC CC  CCCC C               C   CCCCC CBBBC
                 ---+=+))1XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           --=+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++XXX++X+++X++XXXXXXXXXXXXX
+                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                ........................................................................................
+                                    === ===----HHHHHHHHHHHHHHHHHHHHHHHHHHHH-H---H-H--H-H--=-===---==-===-==---H--HHHHHHH
+                                               CCCCCCCCCCCCCCCCCCCCCCCBCCCC C   C C  C C                      C  CCCCCBC
                 ---===++1ZXMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                            - -++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++XXX+++XXXXXXXXXX
+                               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                 .......................................................................................
+                                   =  ===-=----H--HHHHHHHHH-HHHHHHHHHHHHHHH-----H----======= == ========---===--HH-HHHHH
+                                               C  CCCCBCCCC CCCCCCCBBCCCCCC     C                               CC CCCCC
           -     ====+1)1ZXXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                             -+=++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+++++++++++++++++++X++++X+XXXXXXXXXX
+                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                 .......................................................................................
+                                    =  = =--HH-HHH-HHHHHHHHHHHHHHHHHHHHHHH--H---=---==== =  = =========-====-=--H-HHHHHH
+                                            CC CCC CBCCCCBCBCCCBBCBBCCCCBC  C                                   C CCCCCC
         - -- ---=-=++++1ZAAAOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                            - ==+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++++++++++++++++++++X+++X+XXXXXXXXXXX
+                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                 ....................................................... ...............................
+                                   == ===------HHHHHHHHHHHHHHHHHHHHHHHHHHH--H-=-=-===      = = ========-===-=---H----HHH
+                                               CCCCCCCCBCBBCCCCCBCCBCCCCBC  C                                   C    BBC
         --------==+++1)ZZZXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                             -=++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++X+XXXXXXXXXXXXXX
+                                '''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''
+                                 ....................................................         . ........................
+                                  = =====----H--HHHHH-HHHHHHHHHHHHH-HHHHHHHH--======              === ==-=-----HH--HHH-H
+                                             C  CBCCC CCBCBCCBCCCCC CCCCCCCC                                   CC  CCC C
         --=-----=-)=1)1ZZAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                            -==++++++++++X+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++=+--+-=+=++++++++++++++X+XX+XXXXXXXX
+                                '''''''''''''''''''''''''''''''''''''''''''''''''''           ''''''''''''''''''''''''''
+                                . .................................................            .........................
+                                     == =-=--=-HHHHHHHHHHHHHHHHHHHHHHHHH-H----===                  ==  ====-=--=---H--HH
+                                               CCCCBCCCBCCCCBCCCCCCCBBCC C                                         C  CC
     ---===)1)+)=)++1)1)ZAXMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                            -+=++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++=--   - =--++++++++++++++X+++X++XXXXXX
+                               ''''''''''''''''''''''''''''''''''''''''''''''''''               ''''''''''''''''''''''''
+                               ..................................................                 ......................
+                                     ========---H--HHHHHHHHHHHHHHHHHHHHHHHH-===                        == =-===-==---HHH
+                                                C  CCCCCCCCCCBCBCCCCCCCCCCC                                          CCC
     ----=)XMA1))111Z11ZXOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXAMMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        -  --=+++++++++X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=-       - --===++++++++++++++++XXXXXXXX
+                               '''''''''''''''''''''''''''''''''''''''''''''''''                  ''''''''''''''''''''''
+                                ...............................................                   ......................
+                                  =====-===-------H-HHHH-HHHHHHH-HHHHHHH-H--                           == ======---H-HHH
+                                                  C CCCC CCBCCBC CCCCCCC C                                         C CCB
  -   ===)XMOOMXAXZZZAZZAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXXXXXAAAAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOO
+           =-              --+=+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++-             --==+++++++++++++X+XXXXXXXX
+                               '''''''''''''''''''''''''''''''''''''''''''''''                    ''''''''''''''''''''''
+                                . ............................................                      ....................
+                                  =  =====------HHHHHHHHHHHHHHHHHHHHHHHHHH-= =                        == =====-=-H-HHHHH
+                                                CCCCCCCCCCCCCBCBCCCCBCBCCC                                       C CCCBC
 =OZ)+))1OOOOOOMMZZXXXMMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZZ)ZZZZAXZZAMMOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -      --++++           - --=++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++                -=-+++++++++++++++XXXXXXXX
+          '''                  ''''''''''''''''''''''''''''''''''''''''''''''                      '''''''''''''''''''''
+          . .                    ...........................................                        . ..................
+          =                       ========--H-HHHHHHHHHHHHHHHH---H--HH-HH-=                              = = ===----HH-H
+                                            C CCCCCCCCCCCBCCCC   C  CC CC                                           CC C
 ZOOOMAMOOOOOOOOOAXXXAMMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ1111111Z1ZXAXOAMOOOOOOOOOOOOOOOOOOOOOOOOO
+ ++-   =++++++=-           =+=+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++-               -  --==++++++++++++++XXXXXXX
+ ''     ''''''                ''''''''''''''''''''''''''''''''''''''''''''''                         '''''''''''''''''''
+ ..     ......                  ............................................                          ..................
+  =       = =                     === ===------H-HH---HHHHHH-HHH-H------=-=                            = =  =====H--HHHH
+                                               C CC   CCCCCC CCC C                                               C  CCCC
 OOOOOOOOOOOOOOOOMMAMMMMMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZ)+))+)1)11ZZX1XAMOOOOOOOOOOOOOOOOOOOOOOOOO
+=++++=++++++++++        -  -=+++++++++X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++-                   ---=++++++++++++X+X+XXXXX
+ '''' ''''''''                '''''''''''''''''''''''''''''''''''''''''''''                           ''''''''''''''''''
+ ....   ......                .............................................                           ..................
+ ==     ======                 =   ===-===------H-HH-HHHHH-----H-H-H-----==                            == =  ==-=-=H-HHH
+                                                C CC CCCCC     C C C                                               C CCC
 OOOOOOOOOOOOOOOOOMMOMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1+==+==+++)11ZZ1XMAMMOOOOOOOOOOOOOOOOOOOOOOO
++X+++++++++X+++=-  = += ---=++++++++++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++                      -=-=+++++++++++X++XXXXX
+'''''''''''''''             '''''''''''''''''''''''''''''''''''''''''''''''                            '''''''''''''''''
+...............               ............................................                             .................
+=-=   = ===-===                     ==-==---------H--HHHHH-HHH-HH--H---==                               ==   ===-==--HHH
+                                                  C  CCCCC CCC CC  C                                                 CCC
 OOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)+==-=+=====+)))1Z1XAMMMOOOOOOOOOOOOOOOOOOOOO
+XX++++++++XX+++++-==-= -+-=+=+++++++++++++X++XXXXXXXXXXXXXXXXXXXXXXXX++++=                         =-+=++++++++++XX+XXXX
+''''''''''''''''             ''''''''''''''''''''''''''''''''''''''''''''                              '''''''''''''''''
+...............                ..........................................                               . ..............
+--   =====--==                  ====== ===-==----H-H--H--H---H---H---====                                      ==--=-H-H
+                                                 C C  C  C   C   C                                                   C C
 OOOOOOOOOOOOOOOOOOOOMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+=---=====-=))1ZZZZZMAMMOOMOOOOOOOOOOOOOOOOOO
++++++++++XX+++++==-= =- =-=++++++++++++X+++XXXXXXXXXXXXXXXXXXXXXXXXXXX+++-                         -- -++++++++++++XXXXX
+  ''''''''''''''             ''''''''''''''''''''''''''''''''''''''''''''                                 ''''''''''''''
+   ............              . ..........................................                                  .............
+       ==--===                   ======-===-----HHH--HHHHHHH-H--H-----==                                    ====  =---HH
+                                                CCC  CCCCCCC C  C                                                     CC
 MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+=----=-=====)+11Z11XXAMMMOMOMOOOOOOOOOOOOOOOO
+  +++++++XXX+++++==-=-=-==+++++++++++++X+++XXXXXXXXXXXXXXXXXXXXXXXXX++++=                           - - ---+++++++X+XXXX
+   ''''''''''''''          '''''''''''''''''''''''''''''''''''''''''''''                                    ''''''''''''
+    ............            ............................................                                      ..........
+       ==--H==                  = =====-===-----HHH-HH-H--HHH-HH----===                                         = -=--HH
+           C                                    CCC CC C  CCC CC                                                      CC
 1XMOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+=------=====-+)))11ZXXAMAMOMMMOOMOOOOOOOOOOOOO
+   +++++XXX++++++=- =----=+++++++++++++++++++XXXXXXXXXXXXXXX+XXXXXXX++++                            -   -- -=+++++XXXXXX
+    '''''''''''''           '''''''''''''''''''''''''''''''''''''''''''                                       ''''''''''
+    ............               ........................................                                        .........
+      ==---===                       = ======---HH----------=----H--===                                         = ---HHH
+                                                CC               C                                                   CCC
 MOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+==--=-=--====)1)11111Z1MXXMAXOMOMMOOOOOOOOOOOO
+ +++XXXXXXX++++++=-+ --+=++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXX++++=                               - -  -++++++XXXXX
+ '''''''''''''''          ''  '''''''''''''''''''''''''''''''''''''''''                                      '''''''''''
+  ............                 ........................................                                        .........
+   =-H--H--==                     =======---H-H-HHH-HH-H--H--------===                                         == =-----
+     C  C                                   C C CBC CC C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)=----------===+)1))1XZZZXXZ1111ZXAMOOOOOOOOOOOO
+=+++XXXXXXX+++++=-+--====+++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXX++++                                     =-+++++XXXXX
+ ''''''''''''''           '''''''''''''''''''''''''''''''''''''''''''''                                       ''''''''''
+ ..............            .. .........................................                                        .........
+   =----H--=                  ==  ========--H-HHHHH--HHHH-HHHHHHHH-= =                                         ====---HH
+        C                                   C CCCCC  CCCC CCCCCCCC                                                    CC
 OOOOOOOOOOOOOOOOOMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)=---- -------+=++))111111Z111111ZAAMOOOOOOOOOOOO
++++++++XX++++++=+  = =++==+++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXX+++=                                     =++++++XXXXX
+'''''''''''''''           ''''''''''''''''''''''''''''''''''''''''''''                                         '''''''''
+..............              ..........................................                                         .........
+ ======-H== =                  ==========----H-H-H--H---HH-H----H-H===                                           ==--HHH
+        C                                    C C C  C   CC C    C C                                                  CBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+-- -- --=-=--===+++)11111)Z1111ZZAOOMOOOOOOOOOOO
+++++XXXX++++++++---+=+=-+++++++++++X++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXX++                                    -- -++++XXXXXX
+''''''''''''''          ' ''''''''''''''''''''''''''''''''''''''''''''                                         '''''''''
+............              ............................................                                          ........
+====----===                  == ===-==-=----H-HHHH---HH-HH--HHHHHH--=                                            =--HHHH
+                                            C CCCC   CC CC  CCCCCC                                                  CBBB
 OOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=--- - --------===+1)))1))))+)+11XXXXOOOOOOOOOOOO
++++XXXX+++++++=- - ---==+++++++++++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                                      -+++++XXXXXX
+''''''''''''             '''''''''''''''''''''''''''''''''''''''''''''                                        ''''''''''
+......... .                ...........................................                                         .........
+ ==----==                    ======---=--H---HHHHHH-H-HHHH--H-HH-----                                            =-HHHHH
+                                         C   CCCCCC C BCCC  C CC                                                   CCBBB
 OOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1--  - ---------=+)+))++))))+)+11Z1ZAMOOOOOOOOOOOO
+++++++++++=+ =--==----+++++++++++++++X++XXXXXXXXXXXXXXXXXXXXXXXXXXX+++                                      -+++++XXXXXX
+'''''''''                ''''''''''''''''''''''''''''''''''''''''''''                                         ''''''''''
+........                 ............................................                                         ..........
+===== =                     =  ======-==HH--------HHH--HHHH--HHH-H-==                                           ==-HHHHH
+                                        CC        CCC  CCCC  CCC C                                                 CCBBB
 OOOOOOOOOOOOMXMMOMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)----------------=+++)++++)+)+=))1Z1XMMOOOOOOOOOOO
++++++++==---    -  - -==++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++-                                       +++++XXXXXX
+ '''''                   ''''''''''''''''''''''''''''''''''''''''''''                                         ''''''''''
+  ....                   ............................................                                         ..........
+                            = ======-=----------H--HH--H-H-H--H-H--==                                           ==HHHHHH
+                                                C  CC  C C C  C C                                                 CCCBBB
+                                                                                                                      VV
 MOOOOAMMOMMMOAXAMAOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+----  --  -----=++++++)++++==+)))11XMOOOOOOOOOOOO
+ ----   -   -     - - -++++++++++++++++XXX+XXXXXXXXXXXXXXXXXXXXXXXXX+                                       =++++XXXXXXX
+                        '''''''''''''''''''''''''''''''''''''''''''''                                         ''''''''''
+                          ...........................................                                          .........
+                            =  ========---=------HH---------H--HHH--                                            =-HHHHHH
+                                                 CC         C  CCC                                                CCBBBB
 11XZXXAXOXAAXMAAMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-- --- ----  -=====+++++)+)==-+)11)1XMOOOOOOOOOOOO
+        -        -  -==+++++++++++++XXXX+X+XX+XXXXXXXXXXXXXXXXXXXXX++                                       -++++XXXXXXX
+                         ''''''''''''''''''''''''''''''''''''''''''''                                         ''''''''''
+                         ............................................                                         ..........
+                             =======----=-=-H=H-HH--H----HHHHHHH---=                                          ===-HHHHHH
+                                            C C CC  C    CCCCCCC                                                  CCBBBB
+                                                                                                                     VVV
 +1111Z1Z11ZZZMAAAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)=- -  ---- ---=-=+=)))++++====+)))ZZAOOOOOOOOOOOOO
+                   --++=+++++++++++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXX+++                                      --++++XXXXXXX
+                        '''''''''''''''''''''''''''''''''''''''''''''                                         ''''''''''
+                         ...........................................                                           .........
+                             = ====-=-=--HH--H-HH--------H---HHH--==                                            =HHHHHHH
+                                         CC  C CC        C   CCC                                                 CCBBBBB
+                                                                                                                       V
 =++)+)))111ZZXXZMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)=-- -- ---  --=+==+)++=)++=+=++)+)ZXAMMOMOOOOOOOOO
+                    --++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++                                        - =+XXXXXXX
+                         '''''''''''''''''''''''''''''''''''''''''''                                            ''''''''
+                          ..........................................                                            ........
+                                ====-----HHHHH-HH----HH-HHH---HHH=-=                                            =-HHHHHH
+                                         CCCCC CC    CC CCC   CCC                                                 CBBBBB
+                                                                                                                   V V V
 -=)===))1)11ZZXXAMXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+--- -+ -- ---=+=+===++=+++=+++)111AAAAAXOOOOOOOOOO
+                     =-=++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=                                         -+XXXXXXXX
+                        ''''''''''''''''''''''''''''''''''''''''''''                                            ''''''''
+                          ..........................................                                            ........
+                              == ===--H----HH--HH---H--H-HH-HH-----=                                            -HHHHHHH
+                                      C    CC  CC   C  C CC CC                                                   BCBBBBB
+                                                                                                                   VVV
 --===++))=+)ZZXXZMMXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=--- -Z- - - =--=+===+====+)++)))1ZAMOOZXOOOOOOOOOO
+                    -==-++++++++++X++++XXX++XXXXXXXXXXXXXXXXXXXXX+++                                      --  +XXXXXXXXX
+                        ''''''''''''''''''''''''''''''''''''''''''''                                          ''''''''''
+                         ...........................................                                          ..........
+                              ====-====---==----H--------H--H-H--==                                           =-HHHHHHHH
+                                                C        C  C C                                                 BBBBBBBB
+                                                                                                                  VVVVVV
 --===+=-++=)ZZXZAAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=----)X=-----==+)=--+))=++++)+)Z11XMMOOMOOOOOOOOOOO
+                    -=++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++                                      =- =+XXXXXXXXX
+                        ''''''''''''''''''''''''''''''''''''''''''''                                          ''''''''''
+                          ..........................................                                          ..........
+                          = = ====-=----H--H-HH-H-H--H---------=--=                                           =-HHHHHHHH
+                                        C  C CC C C  C                                                          BCBBBBBB
+                                                                                                                  VVVV V
 -=-=-===++=))ZZXZXAMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ------)- -----==+==++=+)))))+)1111XXOOOOOOOOOOOOOOO
+                    -- =++++++++++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX+++                                     -=+++XXXXXXXXXX
+                         ''''''''''''''''''''''''''''''''''''''''''                                        '''''''''''''
+                         ..........................................                                          ...........
+                            == ===---=--H---H------------------H-==                                           -HHHHHHHHH
+                                        C   C                  C                                               CCBBBBBBB
+                                                                                                                   VVV
 -=--==-++))11Z11ZZMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-----+1------===-=++=++))++))1ZZ1AXAMOOOOOOOOOOOOOO
+                    -- -++++++++++X++++XXXXXXXXXXXXXXXXXXXXXXXXXXX++                                      ++++XXXXXXXXXX
+                        '''''''''''''''''''''''''''''''''''''''''''                                       ''''''''''''''
+                         ..........................................                                        .............
+                          == =====-====---HH----HH----------------=                                         ==-HHHHHHHHH
+                                          CC    CC                                                             CBBBBBBBB
+                                                                                                                 VVVV V
 -===-++=)+)1)ZXZXMOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+-----M=-=-----==+=+++))1))1)+1ZXXAMMOOOOOOOOOOOOOOO
+                  -  ===++++++++++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=                                     =+++XXXXXXXXXXX
+                         ' ''''''''''''''''''''''''''''''''''''''''                                       ''''''''''''''
+                           ........................................                                       ..............
+                             = ===--=------HHHHHH-HHHH-H--H-------=                                        ==-HHHHHHHHHH
+                                           CCCCCC CCCC C  C                                                   BBBBBBBBBB
+                                                                                                                VV VVV
 --=====+++))1Z1XXAOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+--  -Z--- -----++==)1)1Z1111ZZZZXMOOOOOOOOOOOOOOOOO
+                  - -=-=+++++++++++X++XX+XXXXXXXXXXXXXXXX+XXX+XXX++-                                   -=+++XXXXXXXXXXXX
+                        '''''''''''''''''''''''''''''''''''''''''''                                      '''''''''''''''
+                         ..........................................                                      ...............
+                            =======-==--=----HHHH----H---=---=---==                                       ==-HHHHHHHHHHH
+                                             CCCC    C                                                       CBBBBBBBBBB
+                                                                                                               VV VVVV
 =-==-=-==))11ZZZXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-=---1=---=-=====)=+)11111ZXZ1ZAAMOOOOOOOOOOOOOOOOO
+                   ----++++++++++++XX+XX+XXXXXXXXXXXXXXXXXXXXXXXX++-                                   -++++XXXXXXXXXXXX
+                        '''''''''''''''''''''''''''''''''''''''''''                                      '''''''''''''''
+                        ...........................................                                      ...............
+                           === ====--=--=--HH--HHHHH-H--HH-------==                                       ==HHHHHHHHHHHH
+                                           CC  CCCCC C  CC                                                  CCBBBBBBBBBB
+                                                                                                                V  VVVV
 --==+=++=+1)1XZXMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)- =-=1=--=--==+++)+)111XZZMMZXMMOMOOOOOOOOOOOOOOOOO
+                    --=+++++++++X++++X+XXXXXXXXXXXXXXXXXXXXXXXXXX++-                                 - -++++XXXXXXXXXXXX
+                        '''''''''''''''''''''''''''''''''''''''''''                                     ''''''''''''''''
+                        ...........................................                                     ................
+                           =====-====-=---H------HHH-H---H-----HH==                                       ==-HHHHHHHHHHH
+                                          C      CCC C   C     CC                                            BBBBBBBBBBB
+                                                                                                                   V VV
 -=-=+-=+)11ZAX1XZMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+=--------=-=++++)1++)1ZZZZXAZMMOMOOOOOOOOOOOOOOOOOO
+                    ==++++++++++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXX++-                                - =+++++XXXXXXXXXXXX
+                       ''''''''''''''''''''''''''''''''''''''''''''                                     ''''''''''''''''
+                       ............................................                                     ................
+                              ==----=-------HH-HH-HHHHH-HHH--HH--==                                      ===HHHHHHHHHHHH
+                                            CC CC CCCCC CCC  CC                                             CBBBBBBBBBBB
+                                                                                                               VVV   V
 -----+=+))111ZAAMAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=----===--==-+)1+)1)ZZ1AXZMXAMOMOOOOOOOOOOOOOOOOOOO
+                    --+++++++++++++XX+++XXXXXXXXXXXXXXXXXXXXXXXXXX++                               - --++++XXXXXXXXXXXXX
+                      ' '''''''''''''''''''''''''''''''''''''''''''                                    '''''''''''''''''
+                         ..........................................                                     ................
+                         =  =======--===---HHH-HHH----HHH-HHHH----=                                     ===--HHHHHHHHHHH
+                                           CCC CCC    CCC CCCC                                               CBBBBBBBBBB
+                                                                                                                  V
 --===))))+1Z1ZAAMMMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1==--=-=-===--+)))1ZZZXXAAMMAMOMOOOOOOOOOOOOOOOOOOOO
+                    -=+++++++++++XX+XX++++XXXXXXXXXXXXXXXXXXXXXXXX+=                              - -=+++++XXXXXXXXXXXXX
+                        '''''''''''''''''''''''''''''''''''''''''''                                    '''''''''''''''''
+                        ...........................................                                    .................
+                          =======--=--====--------H--H--HHHHH-----                                      ===-HHHHHHHHHHHH
+                                                  C  C  CCCCC                                               BBBBBBBBBBBB
+                                                                                                                    V
 ---==+++)))111ZXMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1==-=--=--=====+))11XZAMMAMOMMOOOOOOOOOOOOOOOOOOOOOO
+                   --=+++++++++++++++XX+XX+++XXXXXXXXXXXXXXXXXXXXX+-                           -  ==+++++++XXXXXXXXXXXXX
+                         ''''''''''''''''''''''''''''''''''''''''''                                 ''''''''''''''''''''
+                         ..........................................                                   ..................
+                         == ==== ====--=--===-------H--H-H-HH-----=                                      ==-HHHHHHHHHHHH
+                                                    C  C C CC                                               BBBBBBCBBCCB
 -=-=++++=1)1ZXZXAOAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+---==--====+)++1)1ZAAMAMOMMOOOOOOOOOOOOOOOOOOOOOOO
+                 -  -=++++++++++++X++X+++++++++X++XX++X+XXXXXXXXX+++                          -  =+++++++XXXXXXXXXXXXXXX
+                       '''''''''''''''''''''''''''''''''''''''''''''                                ''''''''''''''''''''
+                        ...........................................                                 ....................
+                            === ==-==-=========-==--==-=---HH----==                                    ==--HHHHHHHHHHHHH
+                                                           CC                                              CBBBBBBBBBCBB
 ----=+==+))))ZZXXXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+=-----===+)))))1ZZMMMAOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    -+++++++++++++++++++++++XX+X+XXXXXXXXXXXXXX+XX++                        ---==++++++++XXXXXXXXXXXXXXX
+                      ''''''''''''''''''''''''''''''''''''''''''''''                             '''''''''''''''''''''''
+                       . ..........................................                                .....................
+                         =  == == ==========--=-=----------HHH-=--                                    ===-HHHHHHHHHHHHHH
+                                                           CCC                                            CCBBBBBBBBBBBB
+                                                                                                            V VVVVV   VV
 ====+=+++)))1Z1XAAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)+=-=---==+)))1)1ZXMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    =-++++++++++++++++++++++X+XXXX+XXXXXXXXXX+XX++++                     -  -===+++++++++XXXXXXXXXXXXXXX
+                       '''''''''''''''''''''''''''''''''''''''''''''                              ''''''''''''''''''''''
+                       . ...........................................                              ......................
+                          = ================-=----=----------=--===                                  ====-HHHHHHHHHHHHHH
+                                                                                                          CBBBBBBBBBBBBB
+                                                                                                             VVVV VV
 -===+))+)++)1ZAXAMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)=-=-===+++)111ZZXMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                  -- =++++++++++++++++++++++++XXXXXXXXX+XXXXXXXX++++-                      --==+++++++++XXXXXXXXXXXXXXXX
+                       '''''''''''''''''''''''''''''''''''''''''''''                           '''''''''''''''''''''''''
+                         ...........................................                             .......................
+                            ===  ===== ====== ---------=--------====                             =======--HHHHHHHHHHHHHH
+                                                                                                          CBBBBBBBBBBBBB
+                                                                                                              VV VVV  V
 )+++))+++)1)11ZAXXMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1+-+===+=)11111XXXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                   - -+++++++++++++++++++++++++XX+XX+X++X+XX+X+X++++=                     =-+++++++++++XXXXXXXXXXXXXXXXX
+                       '  ''''''''''''''''''''''''''''''''''''''''''                          ''''''''''''''''''''''''''
+                            ........................................                            ........................
+                                   ==   ===== =--=--=-==-=--=-=-===                              === ==----HHHHHHHHHHHHH
+                                                                                                           CBBBBCCBBBCCC
 +)))++)+)))11)AXMMAMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1+===-+++++)1)1ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    - --++++++++++++++++++++++++++X+X+XX+XXX+X++++X++                    --=++++++++++XXXXXXXXXXXXXXXXXX
+                         '''''''''''''''''''''''''''''''''''''''''''                         '''''''''''''''''''''''''''
+                            ........................................                         . .........................
+                                    = ===  = =====-=-=--=---=-====-=                           =======--HHHHHHHHHHHHHHHH
+                                                                                                        CBBBCBBBBBBBBCBB
 +)+))))=++))))1ZZZXAMAAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)+++++==)))1)1ZZAAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         --+=++++++++++++++++++++++++++++XXX+++++++++                     =++++++++XXXXXXXXXXXXXXXXXXXXX
+                              ' '''''''''''''''''''''''''''''''''''''                       ''''''''''''''''''''''''''''
+                                .....................................                       ............................
+                                    == ==  ==============---========                           ====----HHHHHHHHHHHHHHHHH
+                                                                                                       CCBBBBBBBBBBBBBBB
+                                                                                                              V  V
 )1++))1)+=1+)11Z)ZZXMMXMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1))+++))))11ZXAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         - -=+++++++++++++++++++XX+XX++++++++++++XXX+-                  --=++++++++X+XXXXXXXXXXXXXXXXXXX
+                               ''''''''''''''''''''''''''''''''''''''                      '''''''''''''''''''''''''''''
+                                 ....................................                        ...........................
+                                       ==   ====--=--======= = ==---=                           ===-=--HHHHHHHHHHHHHHHHH
+                                                                                                       CCBBCBBBBBBBBCBCB
+                                                                                                             V V
 11)=)+++==++=+))1111ZZMMAAAXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1+=)++)+)11ZZAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                              -=++++++++++++++++++++++++++++++++++X+++                  -==++++++++XXXXXXXXXXXXXXXXXXXXX
+                                    ' '''''''''''''''''''''''''''''''                      '''''''''''''''''''''''''''''
+                                        .   .........................                       ............................
+                                              =  =========  ======-=                         =  ===--HHHHHHHHHHHHHHHHHHH
+                                                                                                     CCCCBBBBBBBBBBCBBCC
 )1)++===-======1)Z111ZXXAAMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1)++11+)11ZZXMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -  ---=+=+=+++++++++++++++++++++++++++XX+++                - --++++++++XXXXXXXXXXXXXXXXXXXXXX
+                                       '' ''''''''''''''''''''''''''''                    ''''''''''''''''''''''''''''''
+                                           ..........................                       ............................
+                                             = ======  = =    = =--==                         ====---HHHHHHHHHHHHHHHHHHH
+                                                                                                     CCCCBBBBBBBBBBCCBCC
+                                                                                                              V
 +====-= ----===+++))1)1ZZXXAOMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)++))1)111ZXZAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                            -  -- -----==+++++++++++++++++++++++XXX+++-                 =++++++++XXXXXXXXXXXXXXXXXXXXXXX
+                                            ''''''''''''''''''''''''''                    ''''''''''''''''''''''''''''''
+                                            .........................                      .............................
+                                              = = == ==    =  ==---=                       =  ===---HHHHHHHHHHHHHHHHHHHH
+                                                                                                    CBBBBBBBBBBBBBBBBBCB
+                                                                                                           V   V
 =-- --  - -- --=-=+=)))1ZXXZXXXMMXZMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1))))111ZZZAMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                        --=+++++++++++++++++++++XXX+++-               --+++++++++XXXXXXXXXXXXXXXXXXXXXXX
+                                            '''''''''''''  '''''''''''                    ''''''''''''''''''''''''''''''
+                                             ... ........   ..........                    ..............................
+                                                  =           ==--H==                      ======--HHHHHHHHHHHHHHHHHHHHH
+                                                                  C                                CCCBBBBBBBBBCBBBBBBBB
+                                                                                                             V
      -   --- --=----=1Z)1Z1111ZZX1XAZZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZZ))111XZXXZAOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                        --=++==++++++++===+++++XXXXX++               - =+++++++++XXXXXXXXXXXXXXXXXXXXXXX
+                                                '''''     '''''''''''                    '''''''''''''''''''''''''''''''
+                                                ..         ..........                    ...............................
+                                                             ==-----=                      =   ==-HHHHHHHHHHHHHHHHHHHHHH
+                                                                                                  CCCBBBCBBBBBBCCBBBBBCC
      -  -  --  -- -=-==+++11)+1ZZZXZXXXAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ11111ZZXZZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                          --=-==++++=++===++++XXXXXX++               ---++++++++XXXXXXXXXXXXXXXXXXXXXXXX
+                                                ' '   '   ''''''''''''                   '''''''''''''''''''''''''''''''
+                                                          ............                   ...............................
+                                                           ===--HH--                         ===-H--HHHHHHHHHHHHHHHHHHHH
+                                                                CC                               C  CCBBBBBBBBBCCBBCCBBB
                 ----------====+)+)1111ZXAAAAOMMOOOOMOOOOOOOOOOOOOOOOOOOAZ1111XZXXAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            -  -=-- =---++++++XXXXX+++-             ---+++++++XXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                         '''''''''''''                  ''''''''''''''''''''''''''''''''
+                                                         ............                   ................................
+                                                          ====-HHHH==                     ====--H-HHHHHHHHHHHHHHHHHHHHHH
+                                                               CCCC                             C CCCCCBBBBBBBBCBBBCCCBB
+                                                                                                             V
              - - - -=----===+==+++)1Z)1ZZXAMOOOOOOOMMOOOOOOOOOOOOOOOOOOAX1))1ZXXMMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            ------=  -=+++++XXXXXXXX++-             --++++++++XXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                       '''''''''''''''                  ''''''''''''''''''''''''''''''''
+                                                        .............                   ................................
+                                                          ==-----HH-=                   =  ===-HHHHHHHHHHHHHHHHHHHHHHHHH
+                                                                 CC                            CCCCBBBBBBBBBBBBBBBBBBBBB
+                                                                                                             V VVV   V
           -     -- --===-- --=-==+++))11ZXZZAZMMMMMMOMOOOOOOOOOOOOOOOOOMXZZXZXAMOMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                    - +++++XXXXXXXX+++-         -    -=++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                      '''''''''''''''                  '''''''''''''''''''''''''''''''''
+                                                       ..............                  .................................
+                                                        ===-H--H-HH=                      ===---H-HHHHHHHHHHHHHHHHHHHHHH
+                                                            C  C CC                             C CBBCBBBBBBBBBBBCBCBBBB
+                                                                                                         V   VV
            -     - -- ----=-==-+=+)))11Z1ZX11ZXXMOOOOOOOOOOOOOOOOOOOOOOMMXZ1XAZXAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                 ----+++++XXXXXXXXX+++=              -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                      ''''''''''''''''                ''''''''''''''''''''''''''''''''''
+                                                      ................                  ................................
+                                                        ==--HHHHHHH==                    ===----HHHHHHHHHHHHHHHHHHHHHHHH
+                                                            CCCCCCC                             CCBBBBBBBBBBBBBBBCCCBBBB
+                                                                                                       V     V
        -     ----- -------=-===+++++)1+11ZZZZXXMMOOOOOOOOOOOOOOOOOOOOOOMMAXZXAAAAXOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                 --+++++X+XXXXXXXXX+++-           -  +++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                    ''''''''''''''''''                 '''''''''''''''''''''''''''''''''
+                                                    .................                   ................................
+                                                     ===-=-HHHHHHHH=                     ===---HHHHHHHHHHHHHHHHHHHHHHHHH
+                                                           CCCCCCCC                            CCBBBBBBBBBBCBBCBCCCBBBCB
+                                                                                                       V
     -       - -  - -------=---===++=)1)1)1)Z1ZAMOOOOOOOOOOOOOOOOOOOOOOOMAAAAXAMOAOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                -++++++XXXXXXXXXXXXX++-        - -- =++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                  ''''''''''''''''''''               '''''''''''''''''''''''''''''''''''
+                                                  ....................                ..................................
+                                                    ===--HH---HHHHH-=                   ===--H-HHHHHHHHHHHHHHHHHHHHHHHHH
+                                                         CC   CCCCC                          C CBBCBBBCBBBCCBCCCCBCBCCCC
    --  - -      --    -----=--====+-++)+))1Z1AMOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOMOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                               -++++XXXXXXXXXXXXXXXX+++-- - -- ---- =++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                 '''''''''''''''''''''               '''''''''''''''''''''''''''''''''''
+                                                 .....................                ..................................
+                                                   =--HHHHHHHHHHHHH-=                  ======--HHHHHHHHHHHHHHHHHHHHHHHHH
+                                                      CCBCCCCBCCCCC                            CBBBBCBBBBBBBBBCCCBBBCCBC
+                                                                                                         VV
                   - -- --- ---=---====-++)+)ZAOOOOOOOOOOOOOOOOOOOOOOOOOMMMOMMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                              -=++++XXXXXXXXXXXXXXX+++=   -    --=+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                ''''''''''''''''''''''               '''''''''''''''''''''''''''''''''''
+                                                 .....................                ..................................
+                                                  ==---HHHHHHHHHHHH==                 =====--HHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                       CBBCCCBCCBCC                          CCBCBBBBBBBBBBBBBCCCCCCBBBC
+                                                                                                   VV VVV
                  --     ------===-=-==-==))XAMOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                              +++++XXXXXXXXXXXXXXXXX++=-  -    --+++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                               '''''''''''''''''''''''            ''''''''''''''''''''''''''''''''''''''
+                                               .......................             .....................................
+                                                ===---HHHHHHHHHHHH--=                = ===-=-HHHHHHHHHHHHHHHHHHHH-HHHHHH
+                                                      CCCCBBCCCCCC                           CBBBBBBBCBBBBBCBBCBC BCCCBC
+                                                                                                    V
      -        -      --  --=--====--===+)1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            -++++XXXXXXXXXXXXXXXXXX+++=-- -- ---=+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                             '''''''''''''''''''''''''            ''''''''''''''''''''''''''''''''''''''
+                                              ........................             .....................................
+                                              ===-----HH-HHHHHHHHH-==                 ====--HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                      CC CCCBBBCCC                          CCCCCCBBBBCCCBBCCCCCCCCBCCCC
     ---        -    -------------=-=-=))1XAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                           =++++X++XXXXXXXXXXXXXXXXX+++=-  -=-+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                            ''''''''''''''''''''''''''         '''''''''''''''''''''''''''''''''''''''''
+                                             ........................            . .....................................
+                                              ==-==HHHHHH-HHHHHHHHH-                 ==-----HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                   CCCCCC CCBCBCBCC                         CCBBBBBBBBCBBBBCCCCCBBCCCBBB
+                                                                                                   V
      ---   -        --- --=-====+==++)1XXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                          =++++XXXXXXXXXXXXXXXXXXXXX+++=-=-==+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                           ''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''
+                                           ...........................        . ........................................
+                                             ==--HHHHHHHHHHHHHHHHHH-=             =  ===H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                 CCCCBCCCCCCBBBBBBC                     C CCBBBBBBBBBBBBBBBBCBBCBCBCCBBB
+                                                               V                                  VV
     --     -- - -  ---- --=-=-=====++)XAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                        -=++++XXXXXXXXXXXXXXXXXXXXXX++++----=++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                           ''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''
+                                           ..........................          .........................................
+                                             =----HHHH-HHHHHHHHHHH--              = = =-HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                  CCCC CCCCCBBBBBC                      CCC CBBCBBBBBBBBBBBBBBBBBCBCCCCB
+                                                                                                  VVVV   V
   --  - --      - -------=--=--===++1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                      --+++++XXXXXXXXXXXXXXXXXXXXXX++++=-=-=-+++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                         ''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''
+                                         .............................        ..........................................
+                                           = --HHHHHHH---HHHHHHHHH-=               = =-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                               CCCBCCC   CCBBBBBBB                        CBCBBBBBBBBBBCBBBCBBBBCCCBCCCC
+                                                                                               V      V
  -- -    -      -   -- -------=++)+1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                     -+++++XXXXXXXXXXXXXXXXXXXXXXXX++++===-=+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                       ''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''
+                                        ...............................       .  .......................................
+                                         ==--HH-HHHHHH---HHHHHHHHH-==              ====---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                             CC CCCCCC   CCCBBCBBC                        CBBBBBBBBBBCCBCCCBCCBCCCCCCCCC
   -        -  -     --------=++-+)1XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                     =++++XXXXXXXXXXXXXXXXXXXXXXXXX+++++=++==+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                      '''''''''''''''''''''''''''''''' '     '''''''''''''''''''''''''''''''''''''''''''
+                                       ...............................        ..........................................
+                                        ==--HHH--HHHHH-HHHHHHHHHHH-=              ======-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                            CCC  CCBCC CCCCCBCBBBB                       C CBBBBBBBBBBBBBBBBBBBBCCCBCBBB
+                                                                                                 VVV VVVV
 ---    -- -  -     ---------=++11XXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                   -=++++XXXXXXXXXXXXXXXXXXXXXXXXXX++++==----++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                      ''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''
+                                      ................................        ..........................................
+                                       ==--HHHH-HHHHHHHHH--HHHHHHHH=            =  ====--H--HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                           CCCC CCCCCCCCC  CCBBBBBC                      C  BBBBBBBBBBBBBBBBBBBBCBCBCBCB
+                                                                                                       VV
  -   - -           - ---====))11MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                 --++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX++++==---=++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                    ''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''
+                                    .................................         ..........................................
+                                     = ---HH-H-HHHHHHHHH-HHHHHHHHH-=              =====-=HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                          CC C BCCCCCCCC CCCCBBBBB                       CC CBBBBBBBBBBBBBCBBBBBBBBCBBBB
+                                                               V                                VVVVV V             VV
 -      - --        ------+=)ZZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                               --+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++---- ==++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                  ''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''
+                                  ...................................          .........................................
+                                   ===---HHHHHHHHHHHHHHHHHHHHHHHHH- =            = == ====--HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                         CCCBCCCCCCCCCCCCCCBBBBBBC                          CCBBBBBBBBBBBBBBCBBBBBBCBBBB
+                                                                                                   VV
   --  -   -  -    - - --=+11XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                              -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++-=-  -=++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                ''''''''''''''''''''''''''''''''''''''         '''''''''''''''''''''''''''''''''''''''''
+                                .....................................          .........................................
+                                   =--HHH-H--H--HHHHHHHHHHHHHHHHHH==               ==  ===-=-HHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                      CCC C  C  CCCCCCCCCCCBCBBBBB                           CCBBBBBBBBBBBBBCBBBBBBBBBBB
+                                                               V                                 V VV                 V
  --    -            ---++)XAOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                            - ++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=    =+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                              '''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''
+                               ......................................          .........................................
+                                ==--HHHHHHHHH-HHHHHHHHHHHHHHHHHHHH-=           =  === ====---HHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                    CCCBBCCCB CCCCCCCBCBCBBBBBBBBB                           CBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                             VV                                  V V VVVVV VV  VV
      ---       - - -==+111MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -=++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=----==++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                             '''''''''''''''''''''''''''''''''''''''''       ' '''''''''''''''''''''''''''''''''''''''''
+                              ........................................         .........................................
+                              ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=              ==== ====--HHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                   CCCCBBBCCBBCCCCCCCCCCBBBBBBBBBC                           CBBBBBBBBBBBBBBBBCBBBBCBBBB
+                                                             V                                   VVVVVVV              V
   --  -    -   - --=+)1ZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++-----++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                           ''''''''''''''''''''''''''''''''''''''''''          '''''''''''''''''''''''''''''''''''''''''
+                           ..........................................          .........................................
+                             =---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==              =    ===--H-HHHHHHHHHHHHHHHHHHHHHHHHHH
+                                 CCBCBBBBBBBBBBBCCBBBBBBBBBBBBBBBC                          C BBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                        V V  V                                    V VV V      VV   VVVVV
    -        - ----==)1ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=-- --= -+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                          ''''''''''''''''''''''''''''''''''''''''''''          ''''''''''''''''''''''''''''''''''''''''
+                          ............................................           .......................................
+                          ===--HHHHHHHHHHHHH---HHHHHHHHHHHHHHHHHHH==               === ===----HHHHHHHHHHHHHHHHHHHHHHHHHH
+                               CCBCBBBBCBBCC   CBCCCCBBBBBBBBBBBBC                            BBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                         VV    V                                 VVVV  VVV  V  V
       -  --    ---=+1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      -=++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++==--=- -=++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                        '''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''
+                        .............................................             ......................................
+                           =--HHHHHHHHHHHHH--H-HHHH-HHHHHHHHHHHHH-==                   = ===--HHHHHHHHHHHHHHHHHHHHHHHHHH
+                              CCCBBCBBCCCCC  C CCCC CBCBBBBBBBBCC                             CCBBBBBCCBBBBBBCBBBBBBBBBB
+                                                           VV                                                         V
     -        - -=+)1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                     -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++  -=- =++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                       '''''''''''''''''''''''''''''''''''''''''''''''          ' ''''''''''''''''''''''''''''''''''''''
+                        .............................................           . ......................................
+                         ==--HHHHHHHHHHHHHHHHH-HHHH-HHHHHHHHHHHHH-===                  ==----HHHHHHHHHHHHHHHHHHHHHHHHHHH
+                             CCBCBBBBCCBCCCCCC CCCC CCCCBBBBBBBCC                            CBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                         V
 -- -     -  ----+)ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    -++++XXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXX++++==  =-==+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                     '''''''''''''''''''''''''''''''''''''''''''''''''         '''''''''''''''''''''''''''''''''''''''''
+                      ................................................         .........................................
+                        =--HHHHHHHHHHHHHH-HHH-H==H-HHHHHHHHHHHHHH-===                ====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                           CCCCBCBCCBCBCC CCC C  C BCCBBBBBCBBBBC                          CCBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                          V VV                                   V V V   V       V  VV
          - ---=+)1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                   =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++========+++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                    '''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''''''''''''''''
+                     .................................................          ........................................
+                     ===--HHHHHHHHHHHHHHHHHH-HH--HHHHHHHHHHHHHHHH--=                 ===-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                          CCCBBBBBBBCBCCCCBC CC  CCBBCBBCBBBBBBBC                          CCBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                               VV      V      VVVV   VVV
   -   --- ----=11MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                  =+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++-++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                   ''''''''''''''''''''''''''''''''''''''''''''''''''''' '    ''''''''''''''''''''''''''''''''''''''''''
+                   ...................................................         .........................................
+                    = --HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=              ==  = -=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                        CCBBBBBBBBBBBCCCCCCCCCCCCBCBBBBBBBBBBBBBC                         CCCBBBBBBBBBBBBBBCBBBBBBBBBBBB
+                                                         V V                                    VVV             VVV V VV
       -    -=+)ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                 ++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                  '''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''
+                   ......................................................      .........................................
+                    =--HHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHH--==  =          == ====---HHHHHHHHHHHHHHHHHH-H-HHHHHHH-
+                       CCCBBBBBBBCCCCCCCCC CCCBCCCCBCBBBBBBBBBBB                           CCCCCCCBCCCCCCCCBC C CCCCCCC
+                                                        V  V
  - -   -----+))XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                -+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''
+                 ......................................................   .    .........................................
+                    --HHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHH-= =              ====-=-HHHHHHHHHHHHHHHHHHH-HHHHHHHHH=
+                      CCCBCCCCBBCCCCCCBC CCCCCCCCCBBCCCBBBBBBBBBC                         CCCCBBBBBBBBBBBBCBC BBCBBBBBB
+                                                        V V  V                                                      V V
 -  - -   --=+ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ
+               =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''
+                 ..................................................... .. . ...........................................
+                  ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==            = =====---HHHHHHHHHHHHHH-------HHHHHHH-
+                     CCCCCBBCCCCCBCCCCCCCBBCCCCBCBBBBBBBBBBBBBBCC                         CCCBBBBBBCCCCC       CCCCCCB
+                                                        VVV
 --  -- ---=+1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=
+              =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''
+                ......................................................... . ...........................................
+                ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-==            =====---HHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                     BCBBBBBBBBCBBCBBCCCBCBCBCCBCCBBBBBBBBBBBBBC C                       CBCBBBBBBCBBBBCBCBBCBBBBBBBBB
+                                                      VVVV V                                  V    V            V VVV
     -- --=+1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-
+             =+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+              ........................................................... ............................................
+               ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-====     = ======----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                   BBBBBBBBCCBBBCCBCBBCCBBCCCCCBBBBBBBBBBBBBBBBBCB                      CCBBBBBBBBBBBBBBBBBCCBBBBBBBBC
+                                                   V   VV V VV                                     V            VVVVV
+                                                                                                                    A
 - -- - -==+ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-
+             +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-
+              '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+              .......................................................................................................
+              ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-====  ==   =====-----HHHHHHHHHHHHHHHHHH-HHHHHHHHHHH
+                 CCBCBCBBBBCBCCCBCCCCBCBCBBCBCCBBBBBBBBBBBBBBBBCC                      CCCBBBBBBBBBBBBCCB CCBBBBBBBBB
+                                                  VV V       V                               V                   VVV
   ------=+1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)=-
+            +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++XXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ........................................................................................................
+             ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----=====   =  ==----====--HHHHHHHHHHHHHH---HHHHHHHHH=
+                CCBBBBBBBBBBBCCBCBCCCCCCCBCBBBBBBBBBBBBBBBBBBCC                           CBCBCCCCCCBCCC   CCCBBBBBB
+                                               V VVV     VVV                                                    VVVV
 ---  -==+ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA===
+           =+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+            ........................................................................................................
+             ==-HHHHHHHHHHHHHHHHHH---H-HHHHHHHHHHHHHHHHHHHHHHHHH--=====  == ==========-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                CCBCBBBCBCBCCBBCCC   C CCCCBCBBBBBBBBBBBBBBBBBCC                       CCCBBBCCBBBBCCCBCCCCBCBBBBBBB
+                                                            V                                                   VVV
    - -==)XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+-=-
+           ++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++++++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=
+            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+            .......................................................................................................
+             -=-HHHHHHHHHHHHHHHHHHH-HH-HHHHHHHHHHHHHHHHHHHHHHHHH-=-====== = =====--=---HHHHHHHHHHHHHHH-HHH-HHHHHHHH
+                CBBCCCCCCCCCCCCCCCC CC CCCCBBBBBBBBBBBBBBBBBBBCC                       CCCCCBCCCCCCCCC CCC BCCBBBBB
+                                                     V  V                                                     VVVVV
  - -==))ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+--=-
+          ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           ........................................................................................................
+           =-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--======= = ===-=------HHHHHHHHHHHHH-H-HHHHHHHHHH-
+             C CCCBBBBCBCCBBCBBCCCCCCBCCCCBCBCCBBBBBBBBBBBBBCCC C                       CCBBCBCCCCCCC C CBCBCBBBBB
+                                                V     VVVV                                                      VV
 ----=+11AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+=-=+
+         =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++XX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ........................................................................................................
+           =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--=-= == ======--==---H-HHHHHHHHHHH--HHH-HHHHHHHHHH
+              CBBCCBBCCBBBCCBBBBBBCCCBBBCBBCCBBBCBBBBBBBBBBBB C                      C CBBCBCCBCCC  CCC BCCBBBBBBC
+                                                 V  V VVV                                                    V VV
 ----+1ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+====)
+        -+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=
+         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          .......................................................................................................
+          ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----=-==========-=-H--HHH-HHHHHHHHHHHHH--HHHHHHHHHHH
+             CBBBBCCCCCBCCCCCBBBBBCCBBCCBBCCCBBBBBBBBBBBBBBBC                   C  CCC CCBBCCCBCCCCC  CCCBBBBBBBB
+                                                                                                             VVVV
 --==+1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)---+-+
+        ++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+++++++++XXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX+
+         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         ........................................................................................................
+          ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=--=========---------=HHH-HHHHHHHHHH----HHHHHHHHH=
+            CCBBBCCBCCBCCBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBCCBC                       CCC CBCCCCCCCC    CCCBBBBBB
+                                        V                                                                   VVV
 --=+1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=--==+)
+       =+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+X+X+++++++X+X+++X++X++++++X++XXXXXXXXXXXXXXX
+        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         .......................................................................................................
+         ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H=--=-=-=======-=-===-==-======-==-----HHHHHHHHHH
+            CBBBBBBCCCBBBBBBCCBCBCBCBBBCBBBCCCCCBBBBBBBBBBBBCC C                                      CCCCBBBBBC
+                                                      V                                                   VVVVV
 -=+1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA---==-++
+      =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        .......................................................................................................
+        =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H-----==---=-----------HHHHHHHHH--------HHHHHHH
+           CBBBBBBCBBCBCBBBBBBBBCBBCBBBBBBBBCBBBBBBBBBBBBBBBCC  C                      CCCCBCCCC        CCBBBBC
+                                                 V  V                                                       VV
 =+)1MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-- --=))
+      ++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXX++X+X+XXXXXXXXXXXXXXXXXXX+X+++XXXXXXXXX-
+      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       .......................................................................................................
+        ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=--=---==-=-=--------HH-HHHHHHH-=-===---HHHHHH
+          CCBBBBBBCBBBCBBBBCBBCCCBBBBBCBBBCBBBBBBBBBBBBBBBBBBC                       CC CCCCCCC         CBBBBC
+                                  VV             VV V  V
 )1ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+----+=+)Z
+    -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XXX++X+XXXXXXXXXXXXXXXXXXXX+XXX+XXXXXXXX+
+      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      .......................................................................................................
+       ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--==-=---==-=-H-H-HHH--H-H-H-----=---=--HHHHHH
+          CBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCC              C C CCC  C C C            CBBBBB
+            V    V              V  V    V    V   V V                                                       V
 )1AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+-----==))1
+    +++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+
+     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      ......................................................................................................
+       ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H---H---------H-------H-HH-HHH--HH-H---=-HHHHHH
+          CBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBCBBBBBBBBCBCCCBCCC C   C         C       C CC CCC  CC C     CBBBBB
+              V  V       V              V                                                                VVV
 1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=--====))11Z
+  -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX=
+    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ......................................................................................................
+     ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HHH--H--H----HHHH-HHHH---HHHHH----=--HHHHH
+          CCBBBBBBBCCBBBBBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBCCC   CCC  C  C    CCCC CCCC   BCCCC       CBBBC
+                       VV               V       VVVV                                                    V
 XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=----=-=+)11X
+  -+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX+XXXXXXXXX+X+XXXXXX
+    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    ......................................................................................................
+      -----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH=------H-----H-----H=----H----=-=---HH-
+           CBBCBBBBBBBBBBBBBBBBBBCCBBCCBBBBBBBBBBBBBBBBBBBCCCCC CCC       C     C     C     C          CB
+                 V  V   V                       V    V
 AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA=--=-==+)))11A
+  =+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXXX++++X++X+X+X++++XXX+
+   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    .....................................................................................................
+      ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---------HH---H=--=----====-==-=-=-====-HH=
+         CCCBBBBBBCBBBBBBBBBBBCCBBBBBCBBBBBBBBBBBBBBBBBBBBCCCC         CC   C                         CC
+                    V                         V VVV  VV
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-=---=++++11XXA
+ -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX++X+X+XXXX+
+   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   .....................................................................................................
+     ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H=------------HHHHH-HH---H-H=----==-=-=---H=
+          CCCCCBBBCBBBBBBBBBBBCCCCCCCCCCBCCBCBBBBBBBBBCCCCC C             CCCCC CC   C C              C
+                                              V VVV
 AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)=-=---=-=+)1)ZXA
+ -+++++++++X+XX+XXXXXXXXXX+X+X++X+X+++XXXXXXXXXXXXXXXXXXX+XXXX++XXXXXX++++XXXX+XXXXXX+X++XXXXXX++++++++
+   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    ..................................................................................................
+      = ===-=--=--------H-=-=-==-=-===----H---HHHH-HHHH--=----==------====----=------=-==------=======
+                        C                 C   CCCC CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-=-===+=++)ZXZAMM
+=+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XXXXXXXX+XXX+=
+ ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ...................................................................................................
+    ====----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH---H--H----HHH--H-----==-=--------=--H=
+            CCCCCCCCBCCBCBBBCCCCCCCBCBCCCBBCBCBCBCBBCBCCCCC CC   C  C    CCC  C                    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+======++++++XAXAAO
+++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+++                   -
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ ...................................................................................................
+  ======-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH----H---H----HH--HH-H---------=-----==
+            CBBBBBBBBBBBBBBCCCBCCBCCBBCBBBBBBBBBBBBBBBCBCC CC    C   C    CC  CC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1==--==++1)ZZ)ZMMAMOO
+=+++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+XXXXXXXXXXXXXXXXXXXX+++X+XX+X++                   -+
+ ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  .................................................................................................
+   = = =-=--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-=-H--=-H-HHHH--H------H---===-=--=-=
+            C CCBBCCBCCCCBBBCCCCCBCBBBBBBBBBBBBBBBBBBCBBB C C   C    C CCCC  C      C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)==---===+1111ZZMMMOOO
++++++X+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX++-                   -=+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      '
+.................................................................................................
+  ===-===-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H---------H--H---H-H------H-=-------==
+             CBCBCCBBBBBCCBBBBBCBCCBCBBBBBCBBBBBCBBBBCBC C C         C  C   C C      C
+                                            V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+=-=---===))1ZXXAMOMOOO
+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++X+X+XXX+                   - -=+
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       '
+  ..............................................................................................
+    = ====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H------H----H----H------H--=-==-=-=---
+            CCCCBCBCCCBBBBCBBBCBCCBCBBCCBCCCBBBBCCBCCCCC C      C    C    C      C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1---===-=++)11Z1XMMMOOOOO
+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+++XX+                    +--++
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                        ''
+  ............................................................................................                        ..
+  == =====--H-HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-------H-------H-H---H--H-------==-===--                         =
+            C CCBCC CCBBBBBBCBBBBCBBCBCCBCBBCBCCBCCCCC       C       C C   C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-=--=-=+==))ZZZXMMOOOOOOO
+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+X+XX+XXXXXXXXXXXXXXXXXXXXXXXX+XX+-                   -=+++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      '''''
+  ...........................................................................................                         ..
+  = ==== =---HHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHH---HH-=-=-=-=--=---H-HH-H----H-H--------=-H=                         ==
+             CCCBCCCCBBBCCCBBBC CCCCBBBCCBBBBCCCC   CC              C CC C    C C          C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA=---=====++))11AAMOOOOOOOOO
+=++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++XXXXXXXXXXXXXXXX+XXXXXXXXXXXXXX++                   -=++++++X
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                     '''''''
+  ..........................................................................................                       .....
+      ===---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---=--==---H------H-H---=------H-------==                         ==-
+            CCCBCCBCCBCCCCBCBCBCCCCBCCCCBBCBCCCCCCC           C      C C          C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ====-====++)11ZAMMOOOOOOOOOO
++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                   -++++++XXX
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      ''''''''
+  ........................................................................................                      ........
+     ====---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-H-=--==-=-=H------H-HHHHH------H----HH--                          =--H
+            CBCCBCBCCBCCBCBCBCBBBBBBCBCCBBCCBC CC C          C      C CCCCC      C    CC                               C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+=-=-===-++++)1ZXAMOOOOOOOOOOO
++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXX+XXXXXXXXXXXXXX+XXXXXXXXXXXX+                    -=+++++XXXX
+  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      '''''''''
+  .......................................................................................                       ........
+       ==-=--HHHHH--HHHHHHHHHHHHHHHHHHHHHHHHH--HH-----==----=--H--HH-------=-H-H-------H=                        ===--HH
+             CCCCC  CCCCBCCCCBCBBBBBCCCCCBCCC  CC              C  CC         C C       C                              CB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ===---=-===++)1XAAAOOOOOOOOOOOO
+=+++++++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+XXXXXXXXXXXXXXXXXXXXXX+XXXXXXXX++X+                    -++++++XXXXX
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      ''''''''''
+  ......................................................................................                      ..........
+       =-==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H---==--=----------------H-----=-----H--==-=                       ====--HHH
+             CCCBCCCCBBCCBCCBCCBBCCCCCCCCCC C                        C           C                                   BBB
+                                                                                                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+- ---===++))+ZXXMOOOOOOOOOOOOOO
+-+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXX++X+X+++X+XXXXXXXXX+X+XX+XXXXXXXX+                   --+++++XXXXXXX
+  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      '''''''''''
+  .....................................................................................                      ...........
+  ========--HHHHHHH-HHHHHHHHHHHHHHHHHHHH------=H=----==-=-===-=---------=-=--=--------                        ===--HHHHH
+            CCBCBCC CCCCBCCCCCCCCBCCCBCC       C                                                                   CCBBB
+                                                                                                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1------====++11)XAMMOMOOOOOOOOOOOO
+-=++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX++XXX+XX+X+XXXXXXXXXXXX+XX+XXXXXXXXX++                    - ++++XXXXXXXX
+  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                        '''''''''''
+   ..................................................................................                        ...........
+    ======--H-H--HHH---HHHHHHHHHHHHHHH-----=-=--==---=--=-=------------=--=----H----=                         ==-HHHHHHH
+            C C  CCC   CCCCCCCCCBCCCCC                                         C                                 CCCBBBB
+                                                                                                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+-------==+=+)1ZZXOOOOOOOOOOOOOOOOO
+=+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++XXX+XXXXXXXXXXXXXX+XXXX+XXXX+XXXXXX+-                  ==+-+++XXXXXXXXXX
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                        ''''''''''''
+   .................................................................................                        ............
+      ====---HHHHH-HHHHHHHHHHHHHHHHHHH------=-==---=--------------=--H-=-H--=------=                         =--HHHHHHHH
+             CCCCC CCCBBCBBBCBCCCBCCCC                               C   C                                      CCBBBBBB
+                                                                                                                     V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ---- ----=-=+)1ZXAOOOOOOOOOOOOOOOOOO
++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XX++++++++++++++X++XXXX+X+X+++X+XXXXXXXX+                   -=+++++XXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      '''''''''''''''
+  .................................................................................                      ...............
+   = ==-=-H---HH---HHHHHHHHHHHHHHHH--=--H=--==============-==----=-=-===-=--------                          =--HHHHHHHHH
+          C   CC   CCCCCCCCCBCBCCCC     C                                                                      CCCBBBBBB
+                                                                                                                      VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+------ =====+))1ZXAOOOOOOOOOOOOOOOOOO
+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+X+X++++++++++++XX+XX+XXXXXXXXXXXX++X++XX+                    -=++++XXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      ''''''''''''''''
+ .................................................................................                      ................
+ =======--H-HHHHHHHHHHHHHHHHHHHHH-=-----=-=-=== ========--=--=------------==-==--                         ==--HHHHHHHHHH
+          C CCBCCCCCCCBCCCCCCBCCC                                                                             CBBBBBBBBB
+                                                                                                                 V VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-- -----==+++)1ZZMMOOOOOOOOOOOOOOOOOOO
++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+X++++++++++++++++++X+X+XXXXXXXX+XXXXXXXXX+=                    -+++++XXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       '''''''''''''''''
+ ...............................................................................                       .................
+   ====---H-HHHHHHHHHHHHHH-HH-HH--=--=-==================-=-=--------=---------=                        = =--HHHHHHHHHHH
+          C CCCCCCCCCCCCCC CC CC                                                                             CBBBBBBBBBB
+                                                                                                                VVVVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=-   ----=-=+1)1ZAMOOOOOOOOOOOOOOOOOOOOO
+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++++++X+X+XXX+XXXXXXXXXXXX+                    -=++++XXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      '''''''''''''''''''
+ ..............................................................................                       ..................
+  = ====--HH-HHHHHHHHH-H-H-HHHH------=-===================-=-=---=------------=                        ==---HHHHHHHHHHHH
+          CC CCCCCCCCC C C CCCC                                                                             BCBBBBBBBBBB
+                                                                                                               VVVVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX----- --=-===)))XXXMOOOOOOOOOOOOOOOOOOOOO
++++++++XXXXXXXXXXXXX+XXXXXXXXXXX+XX+++++++++++++++++++++++++++++++X++++XX+X+X+                     -=+++XXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''                       '''''''''''''''''''
+................................................ .  ..........................                       ...................
+  = ===--H--------H-=---H-H-----=--======  =           ===========-====--=-=-                          =--HHHHHHHHHHHHHH
+         C        C     C C                                                                               BBCBBBBBBBBBBB
+                                                                                                              VVVVVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA=---  ---==-++)1ZXMOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++XX+XXXX++XXXXXXX+                    -=++++XXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       ''''''''''''''''''''
+.............................................................................                       ....................
+   =------HHHHHHHHHHHHHHHHHHHHH----=========== =============--=----==-----H-=                        ==-HHHHHHHHHHHHHHHH
+          CCCCBCCCCCCCCCCCCCCCC                                           C                             CCBBBBBBBBBBBBBB
+                                                                                                            VVVVVVVVVVVV
+                                                                                                               AA  A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ---- --=--=-=))Z1XMOOOOOOOOOOOOOOOOOOOOOOOO
+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++X+XX++XXXXX+XX+XXX+                    -++++++XXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       '''''''''''''''''''''
+............................................................................                       .....................
+  = ==--H--HHHHHHHHHHHHHHHHHHH--H---========= ===========-=--==-----=--=---                         ===HHHHHHHHHHHHHHHHH
+        C  CCCBBBCBCCCCCCCCCCC  C                                                                      CCBBBBBBBBBBBBBBB
+                                                                                                           VV VVVVVVVVVV
+                                                                                                                   AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1---  =-----==++11ZAOOOOOOOOOOOOOOOOOOOOOOOOO
++++++X+XXXXXXXXXXXXXXXXXXXXXXXXX+X+XX++++++++++++++++++++++++XXXXXXXXXXXXX+                    -+++++XXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      '''''''''''''''''''''''
+..........................................................................                        ......................
+=====-=--HHHHHHHHH---HHHHHHHHH-H=-=--=== ==  === == =========-------------                         ==-HHHHHHHHHHHHHHHHHH
+         CCCCCCCCC   BCCCCCCCC C                                                                      CCBBBBBBBBBBBBBBBB
+                                                                                                           VVVVVVV VVVVV
+                                                                                                             AA       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)- - --  ---==++)1AMOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++XXXXXXXXXXXXXXXXXXXXXXX+XXX+X+++++++++++++++++++++++++++++++++X+XXX+                    -=+++++XXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       '''''''''''''''''''''''
+.........................................................................                        .......................
+  ====-H--H-HHHHH-------H--H-=---=-= == ==  =     ==  ======== =====-=---                        = ==--HHHHHHHHHHHHHHHHH
+       C  C CCCCC       C  C                                                                           CBBBBBBBBBBBBBBBB
+                                                                                                           VVVVVVVVVVVVV
+                                                                                                                      AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+- -   ------==)=)1AMOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXXXXXXXXXXXXXXXXXXXXXXXX++++X+++++++++++++++++++++++++++XX++++X+XX=                     =++++XXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                        ''''''''''''''''''''''''
+ .......................................................................                         .......................
+ ====--H----HHH-H-------------====-==  = ====  = ==== ========--====-=--                          =--HHHHHHHHHHHHHHHHHHH
+       C    CCC C                                                                                    CCCCCCBBBBBBBBBBBBB
+                                                                                                                    V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=  -----------=)1ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++XXXXXXXXXXXXXXXX+XXXXXX++X+++++++++++++++++++++++++++++++X+XX+X++-                    --+++++XXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       ''''''''''''''''''''''''''
+.......................................................................                       ..........................
+ =====----HHH-HHH-----=------==-====   =   =  === =============-=--=-==                         ===-HHHHHHHHHHHHHHHHHHHH
+          CCC CCC                                                                                   CBCBBBBBBBBBBBBBBBBB
+                                                                                                         VVVVVVVVVVVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-=--  --- ----=)1ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++X+XXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++X++++++++X+X+++                     =++++XXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       '''''''''''''''''''''''''''
+........................................ .............................                       ...........................
+ = ==-=-H-HHHHHHHHH-H--H--------====   = =       ======-========-=-==                          =---HHHHHHHHHHHHHHHHHHHHH
+        C CCCCCCCCC C  C                                                                           CBBBBBBBBBBBBBBBBBBBB
+                                                                                                        VVVVVVVVVVVVVVVV
+                                                                                                                  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1----   - ---===+)1XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++X+XXXXXXXXXXXXXXXXXXX++X+++++++++++++++++++++++++++XX++++X+++++                     -+++++XXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      '''''''''''''''''''''''''''''
+ ....................................................................                       ............................
+ =====-=-HHH-HHH-HHHH-HH-H-==-== = =               = ====--====-=====                         ==HHHHHHHHHHHHHHHHHHHHHHHH
+         CCC CCC CCCC CC C                                                                      CCCBBBBBBBBBBBBBBBBBBBBB
+                                                                                                   V VV   VVVVVVVVV VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=-----------=-+))ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++XXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++X+++++++++                     =++++XXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       '''''''''''''''''''''''''''''
+ .................................... .   .........................                        .............................
+    ==---HHHHHHH-H--HH--HH----===                =========-========                          =--HHHHHHHHHHHHHHHHHHHHHHHH
+         CCCCCCC C  CC  CC                                                                      CCBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                   VVVVVVVVVVVVVVVVVVVVV
+                                                                                                                    AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)--  ------====))1ZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++X+XXXXXXXXXXXXXXXXXXXXX+++++++++++=++++++++++++++++++++++X++=                    --++++XXXXXXXXXXXXXXXXXXXXXXXXXXX
+ '''''''''''''''''''''''''''''''''''''   '''''''''''''''''''''''''                        ''''''''''''''''''''''''''''''
+ ...................................      . ......................                        ..............................
+    ==-=----HHHHH------H-----====             =   =============-=                          ==-HHHHHHHHHHHHHHHHHHHHHHHHHH
+            CCCCC      C                                                                      CBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                   VVVVVVVVV VVVVVVVVVVV
+                                                                                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-- -- - ---===)+1ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++++++XXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++X++++-                    -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ '''''''''''''''''''''''''''''''''''   ' ''' ''''''''''''''''''''                        '''''''''''''''''''''''''''''''
+  ................................        .  ....................                         ..............................
+   =====----HHH------------======             =  ===========-====                         ==-HHHHHHHHHHHHHHHHHHHHHHHHHHH
+            CCC                                                                              CBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                  VVVVVVVVVVVVVVVVVVVVVV
+                                                                                                          A       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-  - -  - --=-==)1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-++++++++XXXXXXXX+XXX+XXX++X++++++++=-==+=++++++++++++++++++++++-                    -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ '''''''''''''''''''''''''''''''''      '   ''''''''''''''''''''                      ''''''''''''''''''''''''''''''''''
+  ..............................             ...................                        ................................
+   ======----H---=---=---==-=                          ===== ===                           =-HHHHHHHHHHHHHHHHHHHHHHHHHHH
+             C                                                                               CCCCCBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                       VVV V V V VVV VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-    - -------=))1ZZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++X+XXXXXXXXX+X+X+XXXXXXX+++++=+---=++++++++++++++++++++++++                      +++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ ''''''''''''''''''''''''''''''''       '  ''''''''''''''''''''                       ''''''''''''''''''''''''''''''''''
+ ..............................            ....................                       ..................................
+   ==-=-----H---=-=-=-HH----==                    ============                           =--HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+            C         CC                                                                    CBCBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                 VVVV VVVV VVV V VVV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-    - - ----==+)ZXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXX++XX++XXXXXX++++++=--=--===+++++++++++++++X+++++                      ++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ '''''''''''''''''''''''''''''           ' ''''''''''''''''''                        '''''''''''''''''''''''''''''''''''
+ .............................              .................                        ...................................
+  ==----------==--==--HH--===                  ======= =-====                        = =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                      CC                                                                  CCBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                 V VVVVVVVVVVVV VVVVVV V
+                                                                                                             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)--- - --- ---===)ZXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXXXXXXXXX+XXXXXXXXXX+++++=----=-=+=++++++++++++++++++++                      +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ '''''''''''''''''''''''''''''            '''''''''''''''''''                       ''''''''''''''''''''''''''''''''''''
+ ............................               ................                        ....................................
+   ==--H--H-H--=------HH-H==                =    = =========                        ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+       C  C C         CC C                                                               CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                            VV VVVVVVVVVVVV VVV VVVVVVVV
+                                                                                                    A   A A A     A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMOOOOOOOOOOOOOOOOOOOOOOOO=--    - - ---+)+)XZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXX+X+XXXXXX+++++=+  - -=-===+++++++++++++++++=                     -=++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ ''''''''''''''''''''''''''''             '''''''''''''''''                        '''''''''''''''''''''''''''''''''''''
+ ...........................                 ..............                        .....................................
+    ----HH-H----=-=----HH==                  == = == ==  ==                         =-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+        CC C           CC                                                              CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                               V VVVVVVVVVVVVVVVVVVVVVVV
+                                                                                                          A      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOO+-   - - -- --==1Z1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XX+XXXXXXX+++XXXXXXXX+++=--- - --==-++++++++++++++++++-                    -+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ ''''''''''''''''''''''''''             '' '''''''''''''''                        ''''''''''''''''''''''''''''''''''''''
+ ..........................              . ...............                        ......................................
+ ===--=--H----===----HHHH=               =   ===== ==== =                           ===HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+         C           CCCC                                                              CCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                               V  V V  VVVVVVV  VVVVV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMAOMMOOOOOOOOOOOOOOOOOOOOM=- -   - -- --=+)XAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXXXXXXXXXXXXXXXXXXX++--  -  -  =+++++++++++++++++++                     -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ '''''''''''''''''''''''''              '''''''''''''''''                      '''''''''''''''''''''''''''''''''''''''''
+ .........................               ................                       ........................................
+  ===---------------HHHH-                 =  == ====  ===                         ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                    CCBC                                                               CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                            VVVVVVVVVV VVV  V VVVVVVVV V
+                                                                                                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMMMOOMOOOOOOOOOOOOOOOOOOOOZ- ---  - ---==))1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXX+XXXX++XXXXXXXXX++       -- -+=+++++++++++++++++                    -=++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''              '''''''''''''''''                       '''''''''''''''''''''''''''''''''''''''''
+ ........................               ................                       .........................................
+ ====---=----==---HHHHHH=                 =  =  =====  =                        ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                  CCCBBC                                                             CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                        V VV VVVV  VVVVVVV V   VVVVVVVVV
+                                                                                                                   AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOAAAAXAMAAMMOOOOOOOOOOOOOOOOOOO)- --  - --=-+))1ZZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXX+XXXXXXXXX++           -=+++++++++++++++++                    --+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''              ''''''''''''''''                      '''''''''''''''''''''''''''''''''''''''''''
+........................                  .............                       ..........................................
+  ==---H-H---=---HHHHHH=                       == ===                          ===HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+       C C       CBBBBB                                                           CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                   V V                                                                  V VVV VVVVVVVVV VVVVVVVVVVVVVVVV
+                                                                                                  A   A            AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOMMAXAXAMMMMOOOOOOOOOOOOOOOOOOO1-   --- ---=-=1)ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXX+XX+XXXXXXXXX+           --=++++++++++++++++                     =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''               ''''''''''''''                       ''''''''''''''''''''''''''''''''''''''''''''
+........................                .............                       ............................................
+= ==---HH-=--=-HHHHHHH-=                  = ========                         = =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+       CC      CCBBBBB                                                           CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                 VVVVV                                                                   V  V V V VVVVVVVVVV V VVVVVVVVV
+                   A                                                                                            A  AA AA
 OOOOOOOOOOOOOOOOOOOOOOOOMXXZZXAXAMMMOOOOOOOOOOOOOOOOO1-     -- -=--=+1XZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXXXXXXXX+-            -=++++++++++++++=                     =+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''                '''''''''''''                       '''''''''''''''''''''''''''''''''''''''''''''
+.......................                .............                        ............................................
+ ===----H-----HHHHHHHH                  ===    == ==                        ====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+        C     CCBBBBBB                                                           BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                VVVVVV                                                               VV   VV VV VVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                                                 AA  AA
 OOOOOOOOOOOOOOOOOOOOOOOMZZZZXMMAXMOOOOOOOOOOOOOOOOOM+-    -- --===+)1ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXXXXXXXX+           --==+++++++++++++                      -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''                '''''''''''''                        '''''''''''''''''''''''''''''''''''''''''''''
+......................                 ............                        .............................................
+  ==-H--H--HH-HHHHHHH-                    == ======                         ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+     C  C  CC BBBBBBB                                                            CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+               VVVVVV                                                               VV V VVV  V V  VVVVVVVVVV VVVVVVVVVV
+                                                                                                                   AAAAA
 OOOOOOOOOOOOOOOOOOOOOOX11)ZXXZXMMOOOOOOOOOOOOOOOOOM--     -------=1)1MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXXXX++XXXXXXXXXX+           --=++++++++++++++                     -=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''               '''''''''''''                       '''''''''''''''''''''''''''''''''''''''''''''''
+......................                ............                       ...............................................
+===--H---==--HHHHHHHH=                  = ===    =                         ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+     C       CBBBBBBB                                                           CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                VVVV                                                               VVV VV VVV  VVV  VVVV VVVV VVVVVVVVVV
+                                                                                                                A    AAA
 OOOOOOOOOOOOOOOOOOOOOX)))))ZZXZXMMOOOOOOOOOOOOOOOZ------- ----+==+ZZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXX++XXXXXXXXX+             -=+++++++++++++                    -=++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''                 ''''''''''                       '''''''''''''''''''''''''''''''''''''''''''''''''
+.....................                  .........                       .................................................
+====-----==--HHHHHHH=                    =   =                           = ==--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+             CBBBBBB                                                           C BCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+               V VVV                                                                   V V V       VV  VV     V  VVVVVVV
 OOOOOOOOOOOOOOOOOOOOO1))))11ZXXAOOOOOOOOOOOOOOOO1---   - -==-++1)1ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XX+XXX+XXXXXXXXXXX-           --=++++++++++++=                     =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''                '''''''''''                       ''''''''''''''''''''''''''''''''''''''''''''''''''
+....................                 ..........                        .................................................
+==--=---=--HHHHHHHH-                  =     ===                          =---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+           CBBBBBBB                                                          CCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+             VVVVVV                                                                 V  VV   VVV V V        VV VVVVVVVVVV
+               A
 OOOOOOOOOOOOOOOOOOOM)))++)11ZAZMOOOOOOOOOOOOOOM=-  -   --=+=++1ZZXOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXX+XX+XXXXXXXXX             ---+++++++++++                    - -+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''                 ''''''''''                       '''''''''''''''''''''''''''''''''''''''''''''''''''
+...................                  .........                       ...................................................
+= ----=--=HHHHHHHHH                     =  ===                         =---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+          CBBBBBBBC                                                        CCBBCBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+             VVVVV                                                                    VV  V      V  VV  V VVVVVVVVVVVVVV
+               A                                                                                                  AAAAAA
 OOOOOOOOOOOOOOOOOOO+==+)=+)ZXXMOMMOOOOOOOOOOOZ-- - - - --=++=+1ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXX=            -  -++++++++++                      =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''                  '''''''''                        '''''''''''''''''''''''''''''''''''''''''''''''''''
+..................                   . ......                        ...................................................
+==--H------HHHHHHH                                                     =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    C      CBBBBBC                                                       CCCBBCBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+            V VVV                                                                          VV  VV VV    VV VVVVVVVVVVVVV
+                                                                                                           A       AAA
 OOOOOOOOOOOOOOOOOO)==+=++1Z1XAMMMOOOOOOOOOOO1= -- -----=-=+))1ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXX++XXXXXXXXX+               =+++++++++=                     -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''                   ''''''                        '''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................                    ......                        .....................................................
+==----==H-HHHHHHH                        =                           ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+        C BBBBBBC                                                        CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+           VVVVV                                                                       VV  V VVV   VV VV VVVV V VVVVVVVV
+            A  A                                                                                                      A
 OOOOOOOOOOOOOOOOO1=-=++)11ZXAMMOOOOOOOOOOOO=-  -- -----=++111ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXX+XXXXXXXXX=              --=++++++++-                     =+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''                  ''' ''''                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................                      ....                        ......................................................
+-=----=--HHHHHH-                       ==                            =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+         CBBBBB                                                         CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+           VVVV                                                            VV     V    V V  VVVVVVVV  VVVVVVVVV VVVVVVVV
+           A                                                                                                       A  AA
 OOOOOOOOOOOOOOOM)=-=++++1Z1AAMOOOOOOOOOOOZ= --------===+))1XZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+               --=++++++++                      =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''                     '''''                        '''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............                      ...                         .......................................................
+---------HHHHH                                                   = =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+         CBBBC                                                        CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+          VVV                                                             VV VV    VVV  VVVV VVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                                        A      A   AAAAA
 OOOOOOOOOOOOOOZ+--=-)+)1ZXAZOMOOOOOOOOOO1-     -----+)++1ZXAXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXX+X+XXXX+-              - --=++++++-                      -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''                     '''''                        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............                     .....                         ........................................................
+-=---=-=-HHH=                                                    ==--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+         CBC                                                         C BCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                             VV    VV VV   VV VV V VVVVVV VVVVVVV VVVVVV
 OOOOOOOOOOOOA)+=--=+=+11ZXAAOOOOOOOOOOM=- -    - -+++=+1ZZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXX++                -==+++++++                      -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''                    '''''                         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........                      ....                          .........................................................
+=-----HH--=                                                      ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+      CC                                                             CCCBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                               V    V      V  V VVVVVVVV VVVVVVVVVVVVVVV
+                                                                                                                    AAAA
 OOOOOOOOOOO1+==---=+)+1ZXMMMOOOOOOOOOX- - - - ---=-)))1ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+XXX++++-                 -=+++++++                     --+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''                      '''''                         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........                       ....                         ...........................................................
+--=---===                         ==                           ====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                                     CCBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                         V V  V  V V   V VVVVVVVVVVVVVVV
+                                                                                                                A   A A
 OOOOOOOOOA1)=++=+=++)))1XMMMOOOOOOOM1---     ---===+11ZXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++                   -++++++                       =+++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''                       ''''                        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........                        ..                          ............................................................
+===== =                                                       ==-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                                   CCCBBBBCBBCCBCCBBBBBBBCCBBBBBBBBBBBBBBCBCCBBBBBBBBBBB
+                                                                                           V           V       VVV
 OOOOOOOOM+==++++++++)11XXMMOOOOOOOX=-  -  - ---+++)1ZAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++                   -==++++                      -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''                       ''''                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......                         .                          .............................................................
+====  =                                                     ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                                 CBCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                             VV      VVVVVVVVVV V VVVVV VVV  VVVVVVVVVVV
+                                                                                                                      A
 OOOOOOOMZ+++)+1))+11ZZXMOOOOOOOOO1--- --- --==++1ZXAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++=                 ---+++++=                     -=++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''                      ''''                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....                        . .                         ...............................................................
+====                                                       ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                               CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                             VV  VV VVVV VVVVV VVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                                     A          A A
 OOOOOOOZZ11)))1111)1XAAMOOOOOOOM)-- ------==+)1)ZMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++=--                 -=+++++                      -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''                       ''''                        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....                         .                         .................................................................
+====                                                     ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                              CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                  V       V    VVV     V V  VVVVVVVV VVVVVVVVVVV   VVVVV
+                                                                                                                     A
 OOOOOMX1)1)1Z1ZX1XZAMMOOOOOOOOZ=- - - ----==))ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++-                 -==++++=                    =+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''                       '''                        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...                       ..                          ..................................................................
+===                                                    ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                           CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                    VVV V      VV VV V  VVV VVV VVVVVVV     V V VV VVVVV
+                                                                                                 A                     A
 OOOOMAX1111XZZZXZAXXXOMOOOOOO)- -  --- -=-=))ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++-                 - =+++++                   -++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''                      ''''                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..                         .                        ....................................................................
+                                                     = ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                           CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBB
+                                                                 V        VV VVV     V VVVVVVVVV VVV V         V V  VVVV
 OOOMMAXZZZZZXZXAMMMMMOOOOOOX+-      - --==+)ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++                  =+=+++                    -+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'                       '''                      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.                                                .......................................................................
+                                                     ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                          CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBB
+                                                                 V    VVVV VVVV V V VVV VVVVVVV VVVVVVVV V   V VV V VVV
 OOOMAXZZXXXZAAMAMOOOOOOOOO1- --   -- -==)))ZZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++=              ----=+++-                    +++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'                      '                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                ........................................................................
+                                                 == =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                       CCCCBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                V     VV V      V VVV VVV  V VVVVVV VV  VV V        VV
 OOOMAXZAAXXMAMOMMOOOOOOOA+--    - ----)+ZXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++=           -  -===++=                    -=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                     ''                       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                              ..........................................................................
+                                               ====---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                      CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                            V      V VVVV     V VV   VVVV  V  VVV VVVVVVV V     V VVV
 OOOMAMMMMMXMMAOOOOOOOOO1-- -   -----+)+1ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++--           ----++++-                    -+++++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                  ' ''                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                             ...........................................................................
+                                              ===--=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                      CCBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                             V V V       VVV VVVV VVV VVVVVVVVVVVVVVVVVVVV        VVV VV
+                                                                                                   A
 OMMMAAAMOMMOMOOOOOOOOA+---  -  - -=+)ZZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=       -  - -+==+++=                    -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                  ''                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                   .                        ............................................................................
+                                            ====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                  CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                         V   VVVVV   VV VVV V  VVVVV VVVVVVVVV VVVV VVVVV  V      VV VVV
+                                                                                     A
 OMMMAMAAOMMOOOOOOOOO1  -     ----=)1ZZAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-       -  ----++++-                     ++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                 '                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .                        ..............................................................................
+                                           = ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                 CCBCCBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                       V   V V  V   VV VVVVVV V VVVVVVVVVVV  V V VVVVVV
+                                                                                                   A
 OOMMOAMOMOOOOOOOOOA+-  -------+=+)1ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--  -  - -=--=+++-                    -=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                         ...............................................................................
+                                           ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                               CCBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                       V    VV         V    VV  VVVVVVVV VVVVVVV VVVVVVVVV V      V VVVV
+                                                                                 A A      AA  A
 OMOAMMOOOOOOOOOOO)-  -- -- -=-+))1MMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+= -   ----+=+=++-                    =+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              ''                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+               .                       .................................................................................
+                                         ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                              CCCBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                        VV VV    V   V V VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  V V  VV VVV
+                                                                                  A   A           A
 OOOOOOOOOOOOOOOZ=  -    ---=+)ZZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+----------=+++=                   --+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+            ''                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                     ...................................................................................
+                                      =====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                             CBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                V   V  VVV  V  VVVVVVV VVVVVVV V VVVVVVVV V VV V V  VVVV
+                                                                                   A     A                            A
 OMOOOMOOOOOOOM)-- - -- --===)1XMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+- --- --==++=                    =+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                   .....................................................................................
+                                     ====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                          CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                VVV V          VVV VVVVVV VVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                A         A      A A                  A
 OOOOOOOMOOOM)----- - ---==)1ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+------- +++                    =+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                 .......................................................................................
+                                  = ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                         CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                           V  V VV V  VVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVV VV VVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                    A A        A A     A       A    A AA    AA  AAAAAAA
 OOOOOOOOOOM=-     - =-==+11XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+---=-=-+++                   =+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+        '                     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                               .........................................................................................
+                                =====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                      CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                            VVV  VV V VV VVVV VVVVV  VVVVVVVVVVVVVVVV V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                       A   A  A            A  AAAA  A  A      AAAAAAAA
 OMOOOOOOO1--   -- ---+=)ZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+- -=-+++-                 -=++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                             ...........................................................................................
+                              == =-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                   C CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                              VVVVV VVVVVV   V VV  VVVVVVVVV  VVVVVVV V  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                    AAA                   A    AAA AAAA         AA   AAA
 OOOOOOOA+-    -  -==)1)ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=-=+++-                  -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            ............................................................................................
+                             ===---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                   CCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                          VVVVVV VVVVVVVVV  V  VVV VVVVV VVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                                   A AA A  AAAA AAA A
 OOOOOM)-       --=))11XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-=++=                   =++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+   '                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                          ..............................................................................................
+                           ====--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                 C CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                             VV VVVVVVVV VVVV  VVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                   A              AA AAAAA  A   A   AAAA
 OOOO1-     ---=+++ZZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+=-                  =++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ................................................................................................
+                         ====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                               CCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                        VVVVVV VVVVVV VV VV  V VVVVVVVVVVVVVV  V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                 A    AA  A         A  A A    A   A AAAAA A    AAAAAAAA
 OOM)-  - ----++)1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++=                 -=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'                    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                      ..................................................................................................
+                        ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                           CCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                  V VV V V V VV VVVVVVV VVVVV  VVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                  A  A  A A        A              A       A        A     A    AAAAAAAA
 M)- - - ---=+1ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                 -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                    ....................................................................................................
+                      ==----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                            CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                               V  V V V V  V   VVVVVVVVVVVVVVV VVVVVVVVVVVVVV VVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                           A                        A           A AA  AA  AAAAAAA A   A
 =--- -  -==11XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+               -=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .......................................................................................................
+                   ===-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                       C BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                VVVVV VVVVVVVVV VVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                      A A  AA               AA   AA        A          A      A A A A AA
 -    ---+1ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                ........................................................................................................
+                 ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                      CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                         VVVV          VVVVVVVVV VVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                          A                             A  A  A  AA  A   AA    AAAA A  A
     -==)1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+           -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ...........................................................................................................
+              ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                   CCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                         V VVVVVVVVVV VVV VV  V     VVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                A                     A   A              A   A   A AA   A AAA A A AAA AA  A  AA A AAAA A
  - --+1ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+         -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+            ............................................................................................................
+             ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                  CCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                        V VVVVVVVVVVVVVVVVVVV V  VV VVVVVVVVVV V  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                               A                        A          AA AA  AA A A A    A A A  AAAAAAA AAA  A A   A AA   A
 ---=)1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       -=+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         ...............................................................................................................
+          = ---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+               CCBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                      VV  VVVVVVVVVVVVVVV  VV V VVVVVVVVVVVVV V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                     A              A             A A A     A    A AA A AAAA A  AAAA AAA A    A A  AAA
  =+)1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        ................................................................................................................
+          =----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+               CBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                      VVVVVVVV     VVV V  VV VV VVV V VVVVVVVVVV VV V  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                     AAA         A AAAAAAA A    A AA  A
 =)1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       .................................................................................................................
+       ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+            CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                     VVVVVVVVVV VVVV VVVVVVVVVVVVVVVVVVV VVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                           AA                         A                A    AA AAA     A  A AA  AAAAAAA AAAA A  AAAAAA
 ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ...................................................................................................................
+     = ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+           CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                    V VV VVVVVVVVVVV VVVVVVVVVVVVVVVVVVV VVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                           A A  A     A        A                     A     AA        AAAAAAAAAAA AA AA AAAA  A A A AA A
 MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  +++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   .....................................................................................................................
+     ==----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+           CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                    V VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                          A A           A A A AAA AA        A    A    A  AA  A    A  A  AAAAAA AAAAAA A   AA  A AA AA A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   .....................................................................................................................
+    =---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+        CCCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                 V V VVVVVVVVVVVV VVVVVVVVVVVVVVVVVVV  VVV    V VVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                             A A       AA       A                       A                AAA A       A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ .......................................................................................................................
+   ===---HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+         CC BCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+              V VVVV  VVVVVVVVVVVVVVVVVVVVVV VV        VV V     VV VVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                         A                              A      A   AA    A AAAAA AA   A         AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+ ===----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+        CCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+             V V V    VV VVVVVVVVVVVVVVVVVVVVVV        V VV V VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                              A A     A                                         AA  A  AAAAAAAA              A    AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+===--=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+        CCCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                 V  V VV VVVVVVVVVVVVVVVVVVVV             VV  VVVVVVVVVVV VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                              A   A                                A    A     A  A       AAAAAAAAAA   AAAA A   AAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=--==----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+         CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC  C  CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                    V VVVVVVVVVVVVVVVVVVVVV              V  V  VVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                           A        A A                                              A  AA A A AAA    A         AAA AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+==---H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=-H----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+     C CBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC    C    CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                V    VVVVVVVVVVVVVVVVVVVV                 V VVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                         A  A      AAAA                            A   A  A AA   A AAAA   AAA            AA     AAAAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+----HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==--===----H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    CC CBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC           C CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                   VVVV VV VVVVVVVVVVVV                    V VVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                  A A                               A A     A    A   A   A  A       AAA  A  A  AAA AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=-======---=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+ CCCCCCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC              CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+               VVVV V   VVVVVVVVVVVVV                    V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                              A AAA                             AA  A AA  AAA   AA       A  A AAAAAA   AAA   A AAAA   AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--======= =====--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBCBCBCBCBBBBBBBBBBBBBBBBBBBBBBBBBB                 C CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+              V VVVVVVVV VVVVVVVVVV                           VVVVV VVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                           A A   A                                   AA       A A  AA A   AA AAAA AAAA  A      A   A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-= = = == =======--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC                   CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+  VV         V VVVVVVVVVVVVVVVVVV                        V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                       A    AA                               A   AA  A AA  A A AAAA AAAAAAAAAAAAAAAAA   AAA    AA A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==  =     == =======-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC                     CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVV   V  V VVVVVVVVVVVVVVVV                           VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ A                  AA A                                         A  AA  AAA AAAA AA AAAAAA  AAAAAAAA A  AAA      AAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................... .   .............................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-- = = =        ====---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB                       CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V V V    VVVV VVVVVVVVVVVVVVV                           VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                    A   A  A                                   AA    AAAAAA AAA AAA AAAAAAAAAAAAAAAAA  A     AA  AAA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++=++=-=+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................            ..........................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==              ====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBC                       CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVV VVVV   VVVVVVVVVVVVVVV                              V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                 AA                                              AAA    A A AAAA   AAAAAA  AAAAAAA A  A        AA AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++= - ----=++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................            ............................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHH-=                ====---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBC                         CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVV V VVV VVVVVVVVVVVV                               VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ A A          A    AAAA                                              A      A AAAA  AA AA AAAAA  AA    AA  A          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXX++++++=-- -      -=++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................                ...........................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHH===                   ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBC                          CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVV V VVVVVVVVVVVV                                 VVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAA               AA A                                      A  A       A A AA     AAAA  AAAAAAA AA AAA A      A AA A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMMMMMAMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXX++++=+--         - =+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........................                  ............................................................................
+HHHHHHHHHHHHHHHHHHHHHH-===                    ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBB                             CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVV VVVVVVVVVVVVVV                                VVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+               A                                           AAAAA    AAAA A  AA A  A A AAAA AAAAAAAAAA A A  A AAAA A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOMMAAX1Z1XZZZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXX++++=-               +++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''                  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................                    . ...........................................................................
+HHHHHHHHHHHHHHHHHHHHH=                       ====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBC                              CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVV                                  V VV VVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVV
+AA        AA AAA AA                                                AA         A   A      AAAA  AA AA  A         A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOMOMXXX1ZZZZZZXAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX+++++ -               =+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................                     .............................................................................
+HHHHHHHHHHHHHHHHHHH=                         ====H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBC                              C CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVV                                    VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAAA     AAAA A                                         A   AA    A    AA A   AA A AA AAAAAAAAAAA AAA AA AA AAAA A  AA
 OOOOOOOOOOOOOOOOOOOOOOOMXZ11))1))1ZZZZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX++++--                -=+++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''                     ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................                     . .............................................................................
+HHHHHHHHHHHHHHHHH===                        ==-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBB                                CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVV                                      VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+   AAAAAAAAAAA                                          AA AAAAAAA A  AAAAA AAAAA AA AA AAAAAAAAAAAAA  A AAAA    A AA AA
 OOOOOOOOOOOOOOOOOOOOOAXZ1))++=+=+)ZZXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX+++=-                  -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''                      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................                        ..............................................................................
+HHHHHHHHHHHHHHH-=                         =  =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBC                                 CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVV                                      VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A A  A A AAAA                                         A  AAAAA  AAAAAAAAAAA AAA  A AA AA AAAAA AAAAAAA A  AA A AA      A
 OOOOOOOOOOOOOOOOOOOMAZ1)1)+==+=))1ZXXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+++--                    -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''                       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................                         ...............................................................................
+HHHHHHHHHHHHH-=                            ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBB                                  CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVV                                    V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V
+AA AAAAAAAA                                           A  A  AA   AA  AA  A A A  AAAAAA AAAAAAAAAA AAAA            AA
 OOOOOOOOOOOOOOOOOOMA1111++==+++11ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX++=--                  --++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''                        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............                         ................................................................................
+HHHHHHHHHHHH-==                          ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBB                                  CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVV                                      VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAA                                            AAA A  A   AAAAA A AAAAA  AA AAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAA
 OOOOOOOOOOOOOOOOOAZZ)++++=++))11XAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+++--                   -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''                         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............                         ..................................................................................
+HHHHHHHHHHH-=                           =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBB                                CCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVV                                      V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAA                                        A A   AA  AAAAAA AAAA AAAA  AA   AA A  AAAAAAAAAAAAAAAAAAAAA    A A A
 OOOOOOOOOOOOOOOAX11)))+++++)1Z1ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX++--                   --+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''                         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............                         ...................................................................................
+HHHHHHHHHHH                            ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBC                               CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVV                                   V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAAAAAA                                          A  AAAA A AAA  AAAAAAAA A AAA   AA AAAAAAAAAAAAAAAAAAAAAAAA A  AA A A
 OOOOOOOOOOOOMMA1)))+))+11)))+ZXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX++                     -=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''                        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........                         ....................................................................................
+HHHHHHHHHH                           ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBB                                CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVV                                    VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AA AA AA                                        A    A  AAA AAAAA  A AAAA A AAAAA AAAA AAAAAAAAAAAAAA   AA  AA AA  A
 OOOOOOOOOOOOMA1Z)++))+)))111ZXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+=-                    -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........                        ......................................................................................
+HHHHHHHHH=                           ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBB                                CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVV                                   VVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A  AAAA                                       AA    AA   AAAAA AAA    A A AA A AAAA AA A AAAAAAAAAAAAAAA   AAAA   AAAA
 OOOOOOOOOOMMAZZ1+=++1)))+111XMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+                     -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........                       .......................................................................................
+HHHHHHHHH                         ====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBB                              CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVV                                  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAA                                         A   A AAAAAA  AAAAAA AAAAAAA AA AAAA AAAAAAAAAAAAAAAAAAAAA AA AA  A   A
 OOOOOOOOOOOXXX111)111)1Z1ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+-                 --++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........                     .........................................................................................
+HHHHHHHH-                        =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBB                           CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVV                                V VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAAA                                         AA  A AA   A  AA   AAAAAAAA AAA  AAAAAAAAA AAAAAAAAAAAAAAA AAAAA AAAAAAAA
 OOOOOOOOOOOMMAX1Z1ZZZZ)XMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX++=                -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''                    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........                    ...........................................................................................
+HHHHHHHH                       =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBB                         CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVV                                VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AA A                                     A     A    AA  A AAAA A  A     AAAAAA A AAAAAAAAAAAA AAAAAAAA A  AAAAAAA A AAA
 OOOOOOOOOOOOMOMAMAMAAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX++- -          ==+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........                .............................................................................................
+HHHHHHHH-=                 ====HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBB                       CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVV                            VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+  AAAA                                     A A A  AAA  A  AAAAAAAAAAAAA AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAA AA AAAAAAAAA
 OOOOOOOOOOOOOOMAAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+++=-      -==++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............           . ...............................................................................................
+HHHHHHHH-==               ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBB                      CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVV                           VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAA AA                                  AAA  AAA AA  A  A   AAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA  A AAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+++++--=+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''     ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............        ...................................................................................................
+HHHHHHHHH-==           ====---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBCC                     BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVV                          VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A AAA                                    A     A   AAA   AA   AA A A       AAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA  AA AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHH---== = =====------HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBB                   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVV                        VVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAA A                              A     AAA  A A  A A AA  AAAAAA AAAAAAAAAAA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA  AA  AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHH--=====-=--HH--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBC           CC  C BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVV                       VVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAA A                                 A     AA A AA   AAA AA  A  AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA  A AAAAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHH-----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBCBC     CCCCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVV V V                VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A A A A                             A         A AAA   AA AAAA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVV V              VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAA A   AA                   A AAAA     A       AAA  AAA   A AAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVV  V  V       VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+  AA AAA  A                  AA A A AA   AAAAA AAAAAA      AAAAAAAA A AAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAA      A        A A     A  AA     AAAAAAAAAAAAA  AAAAAAAA AAAA AA AAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAA   A  AAAA    A   A A AAA A AAAA AA  AAAA A AAAAAAAAAAAAAA AAAAA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAA AA AAAAAAAAA  AAAAA A AAAAA      AA     A  A  A   AAAAAA AAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
1
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCCCCCCCCCCCBBBBCCCCCCCBBBBBBBBBBBBBCBBBBBBBCCC BCCBBCBBBCBCBBCBCBBBBBBBBBBBBBBBCCBCBBCC
+                                                                     V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCBCCBBBBBBBBBBBBCBBBBBBBBBBBBBBBCBBBBBBCBBCCCCBCBBCBBCBBBBCBBBCBCBBBBBBBBBBCCBBCBBBCBB
+                V          V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC CCBBBBBBBBCBBBBBBBCCCBBBBBBCCCBBBBBCBBBBBB
+                              V        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCCBBB
+         V   V      V      VV VVV     V    V        V   V VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCCCBBBCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBCBCBBCBCBBB
+                  V       V    VVV  V V V          V   V V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCBCCCCCCCCCCCBBBCBCCBBBBBBBBBBBBBBBBBBBCBBCBBBBBBBBBBBBBBBBBBBBCBBBCBBBBBBBBCBBBBCCBBB
+                        V        V V  V              V      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHH--HH--HH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCC  CC  CC  CCCCCCCCCCBCBBBBBBBBBBBCCBCCBBBBBBBBBBBBBBBBCBBBBBBBBBCBBBBBBBBBCBCCCCBCCB
+                              VVVV                 V V V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCBCCCCCCCBBCCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCBBBBBBBCCB
+                        V V  VV VVV   V               VV    VV          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+-HHHH----HHHH----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH--HHHHHHHHH
+ CCCC    CCCC    CCCCBBBBBBBBBBBBBBBBBBBBBBBBBCCBCBBBBBBCBBBCBCC BCBCCCCCCCCCC  CCCCCCCCC
+                        V  V         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCBBCCCBBBBCCBBCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBBBBBBCCCCCBCBCBC
+                             VV  VV V V            VV     VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCCCCCCCCCCCCCCCBCCCBBBBBBBBBBBBBBBBBBBBBCCCBBBBBBBBBBBBBBBBBBBBCCCCBBBCCBBCCCCCCCBCBB
+                           V VV                  V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HH-HH-HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CC CC CCCCC CCCCCCCCBCCBBBBBBBBBBBBBBBCCBBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCBBCCCCC
+                           V V                   V         V          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCBBCCBBBCCCCCBBBCCCBBBBBBBBBBBBBBBBBBBCBCBBCCCBBBBBBBBBBBCCCCBBBBBBCBBCCBCCCBBCBCCCCCCC
+                          VVVV V  V               V      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H
+BCCCCCBCCCBCCBBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBCBBBCCBCBCBBCCCCCBBC C
+                            VV           V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCCCCBCCBCCCCCBBBCBBBBBBCBBBBBBBCBBBBCBBBBCBCBBBBBBBBBBBBBBBBBBCCCBCCCCCCBCCCBCBCCCCBC
+                            V   V                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBBCBCCCBCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBCBBBCBCCBBBBBBBCB
+                             V   V V       V       V V      VV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCCBCBBBCBCBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCBBCCCCCBBCCBBCCCBCCBCBCCCCCC
+                        V   V  V        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCBBCBBBBCCBCBCBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBCCCCCBCCCBCCCCCBBBBBCBCBBCB
+                        VV V VV     VV  V   V  V   V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCBBBBBBCCCCBBCBBBCBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBCCBCCBCBBBCCCCBCBBCCCCCBB
+                              VV   V                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBCCCCCBBCCCBCCCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBCCCBCBCCCBBCCCCBCCCBBBBBBB
+                        V     VV V      V               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHH
+BBCCCCCCBCCBCBBCBCBBCCBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBCCBCBCCCCCBBBC  CBCCBCCCBBBC
+                                V    V     V         VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHH
+CBBBBBBBBBCBCBBCBBBBBCBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCBBC  CCBC
+                       V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH
+BBBBCCCCCBBCBCCBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBCBBBCCBCBCBCCBCBCCBCCCCCCCCC CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHH-HH
+BBCBBCCBCCCCBCCCCBCCCCCCCCBBCBBBBBBBBBBBBBCCCCCBBCBCCBBCBBC CBCCCCCCCCBBBCCCBBCCCCCBCC CC
+                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH
+CBBBCBBBBBCBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBCBBCCCCCCCBBBBCCCCCCBCCC CCCBC
+                               V V       V          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-HHH
+CBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCBCBCCBBC CCCCC CCC
+                  V         V VV  V   V V  V     VV     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBCBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBCCBBBBBBBCBBCCBCCCCBC
+               V               V VV   VV             V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCBBBBCCBBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBCCBCBCCBCCCCCBCCCBBBBBBCCCCBCBCCCCCCC
+               VV      V V V   VVV  VV V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-H
+CBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBCCCCCBBCCCCCBCCCC CCC C
+             V         V VV V V  V     V VVV           VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH
+BBCBCBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBB CCCBCCCCCCCBBBBBBCCCCCCBCBCCCCBBCCCCCC CCCCCC
+                        VV V      V  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH
+BCCBCBBBCBBBBBBBBBBBBCBBBBBBBBBBBBCCBBBBBBBCBCBCCBBCBBBCBBBBBBCCCCCBCCBBBCCBCCCCC CCCCBCC
+                               VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHH
+BCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBBBCCCCCBCBBCCCCCC  CCCCCC
+              V         V  V  V  V        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-H-
+BBBCBCCBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCCBBBBCBBBCBCCBBCBCBBCCCBCCCCCC C C C
+                  V             VV V     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-
+BBBBBBBBCBCBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBCCCCCBBBBBBBCCCBBCCCCCCC C
+                 V   VVV     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH-HHHHHHHH
+BBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCCBBBBBBBBBBBBBCCCCCBBBBBBCBC  CC CCCCCCCC
+                 VVV  VV V V VV         V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--HHHHHHHHH
+BBBBBBBCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBCBCBCBCCBCCBBCCC C  CCCCCCCCB
+               V V       V   VV        V              V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHH-HHHH
+BBBCCCBBCBCBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCCCCCCCC CCCCCCCBBCCCCCCCCC CCBC
+                    V        V        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----HHHHHH
+CCCCCCCCCCCCCCCCBCBCBCBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCBCCBBCCCBCCBCCCC    CCCCCB
+                                  V              V    V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-H--H-HHHHH
+CCCBCBCCCBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBCCBCCCCCBCCBCCC CC C  C CCCCC
+                    V        V VV   V                    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBBCBCBBCBCBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCBCCCBBBBBBCCCCCCCCCCCBCCBB
+                   V V  VVV   V  VV V V  VV            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCC CCCCBCCCCBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBCBBBBBCCBBBBCBCCCCCCCCBCBBCCBCC
+                    V    VVVV VV             V V   V  V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHH
+BBCCBBBCBBCCBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCBCBCBBCCBBCBCCCCCCC C CCCC
+                   V  VVV V  VV   V V  VVV   VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H-HHHHH
+BBCBCBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCBBCCCBCCCBCCCCCC  C CCCCC
+                   VV V   V V VVV    V  V V        V     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH
+BCCCCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBCCCCCBBCBCCBBCCCC CCCCCCC
+                 V V    VVVV    VV     VVV V     V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCBCBCCBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCBCBCBBBBBBBBBCBBBCCCCCCB
+                             V     V       V   VV   VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCCCCBCCCBCCCBCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCBBCBBBCCBCBBCCCBBBCCBCCBBC
+                              V     V             V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBCCCCCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBBBBBBBBBBBBBBBBBBBBBBBBB
+                  V   VV V      V  V  V V   V       V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCCBBBBBBBBBBCCCBBBBBBBBCBBBBBBBBBBBBBBBCBB
+                  V   VVVVV          V              VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+-HHHH-HHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+ CCCC CCCCCCCC  CCCBBBBBBBBBBBBBBBBBBBBBBBCBBCBBBBBBBBBBBBBCCBCBCCCCBBCBCCBBBBBCCCBCBBBBB
+                        V            V V V    V  V      VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCBBBBBCCBBCCBCBBCBCBB
+                V V VV  V  VV VV  VV     V VV V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCCBBBBBCBBBCCBBBBBCCBCCB
+                       VV      V  V  V  V V  V        V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBCCBCCBCBBCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBBBCBBBBBCC CCBCCCCCCCBBCBCCBBCCCCCBCBBB
+                   V   VV             V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCBBBBBCBCBCCCBBBCCBBCCCCCCCBB
+V                               VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCBBBBCCCCBCBCCBCCCBCBBC
+ VV                   V      VVV  V       V V   VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBCCCBBCBBBBBBBBBBB
+VV  VV          V     V     VVV   V  VV   V   VV  VV     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBCCBCBBBBBBCBCBBB
+     V V         V VV  V V  V  V      V          VVVVV                V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCBBBBBBCBBBCCBBCCBBB
+              VV  V    VV VV VV  V  V V               VV     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCBB
+ V      VV     V  VV     V VV V V   V    V          VVV V   V              V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBCBBBBBBBBBBB
+    VV   V         V      V  V V V     V V   V  VV  V V    V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCBBCBBCCCCCBC
+         V      V          VVV   V V V    V VVV V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBCCBBCBBBBCBBBBBBBCCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                            VV VV V VVVVVV  V V  VV  V   V         V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBCCCCCBBBBBBBBCBBBBCBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                  V             V   V V V        V  V  V             V   V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCCCCBBCBBBBBBBBBBCBCCBCBBBBBBBBBBBBBBBBBBBBBCCBBBBBCCCCCBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBB
+              V               V     V VVV                                 V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBB
+        V          VV          V  V VVVV V  V       V           V  V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+   V    V   VV  V V    V V   V VV  VV     V V  VV    V   V  V   VVV  V V       V    V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+          VVVVVVV VV        V V   V VVVVVV  VV    V  V  V         VVVVV  V           VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+       V VV V   V            VVV     VV V  V V   VV VV         VV  V          V        VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBCBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+ V        V V V V  V       V   VV  V V VV V      VVV            V      VV     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBCBBCBBB
+             VV V      V  V   VV V  V V VVV    VV  VV       VV  VVVV   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCBB
+VV                       V V V  VVVV VVVV     V          V      VV  VVV  VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBB
+VVVVV  V    VV      V       VV VVV VVV  VVVVVV  V   V  V VV VV VVV VVVV VVV     V       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V V  VVVVVVVVV V VVVV  V   VV V   VVV   V VV V VV                V  V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCBCCCCBBCCBBBBBCCCBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBCCCBCB
+                           V VVVVV   V   V VVVV  VV                V   V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBCCBBCCCCCC
+ V  V VV   VVVVVVVV VV   V VVVVVVV VV V VV VVVV VV V         V    VV    V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBCBCBBCCBBCC
+  V VVV  VVVVVV V V V V  VVVV VVVVV VVVVV VVV    V  V V         V  V   V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC
+V  V VV  VVVV  VVVV V     V VV VVVVVVVV V VV   VVVV             V V  VV              V
+                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBBBBBBBBBBBBBBBBBBBBBCBBBB
+     V VVVVVVVV  VV   V V  VV   V VVVVVVV  VVV   V V            V           V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V  V VVVVVVV V  V    V       VVVVVVVV VVV VVVVVV  V                       V   V  V  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+    V    V  VV VV  V    VVVV  VV   V V VV  VVVVVVVV  VV     VV               V     V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+  V V  V     VVVV VV VV VV VVV V   V VVVVVVVV VVVVVVVV     VV   V VV   V  VV  VVVV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCCCCBBCBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBB
+    VVVVVV VVVVVVVVV V    V  VVV  VVVVV VV V                   VV       V  V         VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBB
+ V V  VVV   VV VVVVVVVVVVVVVVV VV V VVVVVVVV VV  VV    V  V    V   V     V            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBB
+      VVVVVVVV V VVVV   VVV VVV  VVVVVVVVV  VVVVVVVV     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBB
+      VVVVVVV   V        VV  VV  VV VVVVV  VV  VV    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBCBCCCCBBCBCBCCBCBCC
+         V             V        VVVV VVV  V  V  V             V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBCBCBBBBBCBBBBBBBBBB
+ V VVVVVVVVV  V                 VVVV V V  VVVVVVV V                         V     V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCBBCBBBCBBCBBCBBBBBBBBCB
+VVV VVV  V              V         VVVVVVVVVV V  V                              V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBCCCBBBCCCCCBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBB
+                              V  V   V V    V VVV          V    V  V           V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBCBBBBB
+       VVVV                    VVVVV V      V         V               V         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBB
+VV   V  VVV  VVV V V           VV VV  VVV VVVV   V        V   V          V        V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBCBCBBBCBCBBBBBBB
+   V  VVVV V  V  VV VV            V        V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBCBCCBCCCCBBBBBBBBBBBBBBBBBCBCCBBCBBCCCBBBBBBBBBBBBBBBCBBCBBBBBBCCBC
+VV V                                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBCBBBBBBBBBBBBBCBBCC
+VVVVVVV  V V   VV VVVV  V V   VV    VVVV VVVVVVV    V V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBCBBBBBBCBBBCBBCCCBBB
+V VV V VVVV   V V          V   V  V  VVV  V         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBCBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBCBBB
+V  VV    V    V                VVV VVVVVVVVVVV         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBCBBBBBCBBCBBBBBBBBBBBBBBBCBCBBBBBBBCBBBCCBBBCBCBBBBBB
+     V                   V         V  V     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBCCBCCBBBBCBCBBBBCCBCCCBCCCB
+ V VV          V                 V     VV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBC
+V V                     V   VVV V V VV   VVV    V  V                 V V    V       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V          V     V V  VV     V VVVV VVV V VV V         VV        V     V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCBBBBCB
+VVV        V      VVVVVV   VVVVV V VVV VVVV V   V      V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCBBBBBBBBBBBBCBBCBBB
+V VV      VV VVV    V   V  VVV VV VVVVVVV V  VV       V      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBCBBBBBBCBBBCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBCCBBBBBBBBBBBCBBCCCCBBBBBB
+ VV                              V V  VV  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBCBBBCBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBCBBBBBBBBBBBBCBBCBBBBBBBBBBB
+V V            V  V           V   V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V     VV VVV      VVVV        V VVVV   V  V                VV      V     V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBB
+V        V VV VV        V  VV VVVVVVV VVVV  V      V     VV   V          V         VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBB
+VV  V VVV V   V V V  VVVV  VV VVVV V V VVVVVV V          VV   V         V    V       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVV  VVVVV  VV  V   VVVVV V VVVVVVVVVVVVVVVV                  V  VV V   V          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBBBB
+  VV    VV VV VVVVVVVV VV     V VVV VVVVVVVV V        V       VV   V                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCBBBBCBBBBBBBCBBBBCBBBBBBBBBBCBBCBBBBBBBBBBBBCBCBBBCBBBBCBBBBBCBCBBBBBBBBBBBBCBBBBBBB
+                          V               VV         V        V V             V         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCCBBCBBBCBCBBBBBBBBBCBBBBCBCBBBBBBBBBB
+   VVVV  VV V     V      VV  V VVVV  VVVV VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBCBCBBBBBBBBBBCBBBCBBCBBBBBBBBBCBCBBBB
+        VV V   V  V   V   V VVVVVVVVVVV VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCBBBBBCCBBCC
+        VV V V V VV     V VVV VVV VVVVVVVVVV      VV            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBB
+   V   V  VVV V VVV     VV VVVVVV VVV  V V                          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCCCCBCBBBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBCBBBBBBBBBBCBBCBBBCBBBBBBBBBB
+                       V   VV  V    V  VV             V   V                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCBBBBCBBBBBB
+        V     V   V   V   VV  VVV  V VVVVV               V    VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCC CCBCCCCBBBBBCBBCCCBBBBBBBBBBBBBBBBBBBBCBCBCCBBBCBBCBBCBBBBBCCCCCCCCCBCCCBCCCCCCCCCCBB
+                            V          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCBBBCBBBBCBBBBBBBBBCCCCBCCCCBBBBBBBCBBB
+                   V V  V  V VVVVVV VV  V                V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCBCCCBBCBBCBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBCBBBBCCCBBBBBBCBBCBBBCBCBB
+                          VVV V VVVVVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBCBCCCBBBBCBCCBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC CCCCCCCCBBBBBBBBBCCCBBCCCCCBCCCCC
+                          VV  V   V  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................     ..............................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--= =        ===-HHHHHHHHHHHHHHHHHHHHHHHH
+BBCCCCCCBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC                 CBBBBBBBBCBBBBCBBBBBCBBB
+                           VV VVV V VVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZZZAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++--        +++++XXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''            ''''''''''''''''''''''''''''
+................................................              ...........................
+-H-HH--------H----H-H--HHHHHHHHHHHHHHHHHH---== =                =-HHHHHHHHHHHHHHHHHHHHHHH
+ C CC        C    C C  CCCBBCCBBBCBBCBBCC                         CCBBBBBCCCCBBBBBCBBCCBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXXZZZZZ11XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++=-             -=+++XXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''                    '''''''''''''''''''''''''''
+..........................................                    ...........................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---=                      = ---HHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBCBBBBCCBBBBBBBBBBBBBBBBCCCCCC                               CCCBBBBBBBBBBCBBBCBBBB
+VV                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOAAXXZ11Z1)+)ZZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++= - -                -=++++XXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''                       ''''''''''''''''''''''''''''
+.....................................                        ............................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHH-=-===                            ===--HHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBCCBBBBBCBBBCBCCCC                                       CBCBBCBBBBBBBBCBBBBBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZZZZ1Z111))+1)1ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++X++++X+++XXXXX+++++++++++++----                    +++++XXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''                           '''''''''''''''''''''''''''''
+................................                             ............................
+= ======-= ==-===-----==== == =                               ==--HHHHHHHHHHHHHHHHHHHHHHH
+                                                                  CCCCCBBCBBBBBBBBCBBBBBB
+                                                                                 V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAAAZZ1Z)11Z11++++=+1ZZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++==-=                           ++++++XXXXXXXXXXXXXXXXXXXXXXXX
+ ''''''''''''''''''''''''''                                 '''''''''''''''''''''''''''''
+ .. .......................                                 .............................
+    = ================= =                                     ===--HHHHHHHHHHHHHHHHHHHHHH
+                                                                   CCCCCBCCCBBBBBBBBCCCCB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOMOAAZ1ZZZZZZ1Z1)11)))))++)1ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++XXXXXXX+XX++X+++++++-- -                           -=+++++XXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''                                  ''''''''''''''''''''''''''''''
+.........................                                   .............................
+  ====-------=--==-=  =                                      ===----HHHHHHHHHHHHHHHHHHHHH
+                                                                    CBBBCBCCBBBBBBBBBBBBB
+                                                                               V  V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOMAAXZZ)1ZZZXZ1)1Z11))))++++111ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXXXXXXXXXXXXXXX++=--                                -=++++++XXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''                                     ''''''''''''''''''''''''''''''
+......................                                     ..............................
+ ==-----H-HH--HHH---=                                        ====HH-HHHHHHHHHHHHHHHHHHHHH
+        C CC  CCC                                                CC CBCBCCCCCBBBBBBBBCBBB
+                                                                                V      VV
 OOOOOOOOOOOOOOOOOOOOOOMMXAXZ11Z1111MZ1ZZ11)1111+++))1Z1MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXXXXXXXXXXXXXX++-                                   =++++XXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''                                     '''''''''''''''''''''''''''''''
+.....................                                      ..............................
+ ==---HHHHHHHHHHHH-=                                        ==---HH-HHHHHHHHHHHHHHHHHHHHH
+      CBCCCCCCCCCC                                               CC CCCCCBCBBBBBBBBBBBBBB
+                                                                               VVV VV  V
 OOOOOOOOOOOOOOOOOOOOOXZZZX11)++11ZAZ11))1))111)+))+)+1XMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXXXXXXXXXXXXX++-                                    +++++XXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''                                      '''''''''''''''''''''''''''''''
+....................                                      ...............................
+===----HH-HHHHHH--=                                         ==--HHHHHHHHHH-HHHHHHHHHHHHHH
+       CC CCCCCC                                                CCCCCCCBBC CCBCBBBBBBBBBB
+                                                                                 VV   V
 OOOOOOOOOOOOOOOOOOOOXZXZZ)))+)11ZZXZZ1)1))11))1)+++)ZZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXXXXXXXXXX+++=                                   ==++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''                                      ''''''''''''''''''''''''''''''''
+...................                                       ...............................
+=====---HHHHHH--==                                        = =---H---H-HHHHHHHHHHHHHHHHHHH
+        CCCCCC                                                  C   C CCCCCBBBBCBBBBBBBBB
+                                                                                   V
 OOOOOOOOOOOOOOOOOOOMZ111Z11))1ZZZZZXXAZ1111Z111)+))1XAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++X+++XXXXXXXX+++-                                   =++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''                                      '''''''''''''''''''''''''''''''''
+..................                                       ................................
+===-===----HH--==                                          ==--H-HH-HH--HHHHHHHHHHHHHHHHH
+           CC                                                  C CC CC  CCBBBCCBCBBBBBBBB
 OOOOOOOOOOOOOOOOOOAAXZ)1ZZ11ZZ1ZAAAAXAXZ1ZZ1)Z1)111XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++X+++X+++=                                   -++++++X+XXXXXXXX+XXXXXXXXXXXXXXXXXX
+'''''''''''''''''                                       '''''''''''''''''''''''''''''''''
+................                                        .................................
+=========-===-=                                          ===-=-------H=-HHHHHHHHHHHHHHHHH
+                                                                     C  CCCCCBBBCCBBBBBBB
+                                                                                      V
 OOOOOOOOOOOOOOOOOOMMMXXZZXXXZXXMOXMAOAAZZ)1))))))ZZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++X+++++=              -   -                =++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''                                     '''''''''''''''''''''''''''''''''''
+.................                                      ..................................
+== ==  ====-= =                                          ===---HHHHHHH--HHHHHHHHHHHHHHHHH
+                                                               CCCCCCC  CCCCCBBBBBBBBBBBB
+                                                                                  VV   V
 OOOOOOOOOOOOOOOOOOOOMMAZZAMXAAAMOMOOOMAZ11XXX)Z1ZXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++=-            - ---               =+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''                                     '''''''''''''''''''''''''''''''''''
+.................                                     ...................................
+====== ====== =                                       ====----HHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                              CCCBCCCCCCCCCCBCBBBBBBBBBBB
+                                                                                   VV  VV
 OOOOOOOOOOOOOOOOOOOOOOOMMMOOMMMMOOOOOOMAZXZAZZ1ZXMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++--   --    ==----             -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''                                  ''''''''''''''''''''''''''''''''''''
+................                                     ....................................
+======== =====                                          ==--H-HHHH-HH-H-H-HHHHHHHHHHHHHHH
+                                                            C CCCC CC C C CCCCBCCBBBBBBBB
+                                                                                     VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMXAA1ZZZXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX++++++++++++++++++++=+=++=-+=+=++-             -=+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''                              '''''''''''''''''''''''''''''''''''''
+....................                                 ....................................
+=--========== == =                                   = ====-H-HHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                            C CCCCCCCCCCCCCCBCBBBBBBBBBBB
+                                                                                  V  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMZXXX1XXAOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++X++++++++++++++++++++-+++++++ -          - =++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''   '' ''                '''''''''''''''''''''''''''''''''''''
+..................... ......                        .....................................
+-===== =-===  = = =       =                          =  ==---HHH-HHHH-H-HHHHHHHHHHHHHHHHH
+                                                             CCC CCCC C CCCBCCCCCBCBBCBCB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOAMXMXAMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+++++++++++X+++++++++++++++++++++++= -        --=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''               ''''''''''''''''''''''''''''''''''''''
+............................... .. .                .....................................
+--======= ===-== == =  ====                          ===---HH-H-H-HHHHH-HHHHHHHHHHHHHHHHH
+                                                           CC C C CCCCC CCBCBBBBCCCBBBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+X++XX++++++++++++++XXX++++++++++---      ---++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''              '''''''''''''''''''''''''''''''''''''''
+...................................                ......................................
+----=-==--======= = ====-H-      =                   == =---H--H-HHHHHH--HHHHHHHHHHHHHHHH
+                         C                                  C  C CBCCCC  CCCCCCBCCBBCCBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXX++XXXXX++++X++++++XXXXX+++++++++=== - -   -==+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''              ''''''''''''''''''''''''''''''''''''''''
+...................................               .......................................
+=---==-----====-=  ===--HH-=====                    = ==--H--H-H----HH---H-HH-HHHHHHHHHHH
+                        CC                                C  C C    CC   C CC CCCCCCBCBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++XXXXX+XXXX+X+++++XXXXXXX++++++++=+= -- -  +++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''             ''''''''''''''''''''''''''''''''''''''''''
+..................................              .........................................
+--==-----=----=-= ===--HHHH-= = ==                = ===-=-----------HHHHHHHHHHHHHHHHHHHHH
+                       CCCC                                         CCBBCCCBCCBCCBCBBCBBB
+                                                                                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+XXXX++X+XXXXXXXX++X+X++++++- - +=++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''             ''''''''''''''''''''''''''''''''''''''''''
+..................................             ..........................................
+--H-----HH-=H---==-=--HHHHHH==-=-                === ==---HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  C     CC  C         CCCBBC                              CC CCCCCCCBBCCCCBBCCBBBBBBBBBBB
+                                                                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++++=++=-=+=++++++++XX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''
+..................................            ...........................................
+-H-HH-HHHH-HHH--HH----HHHHHHH=---                = ==--==HHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHH
+ C CC CCCC CCC  CC    CCCBBBC                            CCCCCCC BCBCCCBCBCCBBBBBBBBBBBBB
+                          V                                                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++===+++++++++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''     '  ''''''''''''''''''''''''''''''''''''''''''''
+................................. ..          ...........................................
+HHHHHHHHHH-HHHHHHHH-HHHHHHHHH--H=                ==--=---HH-HHHH-HHHH-HHHHHHHHHHHHHHHHHHH
+BCCCCCCCCC CCCCCCCC BCCBBBBBC  C                         CC CCCC CCCC CBCCBCBCCCBBBBBBBBB
+                       V                                                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++=+=++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''' ''''' ' '' ''''''''''''''''''''''''''''''''''''''''''''
+................................     ..        ..........................................
+-HHHH-HHHHHHHHHHHHHHHHHHHHHHH-HH                 ===-----H-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+ CCCC CCBBCCBCCBCCCCBBBBBBBBC CB                         C C CCCCCCCCCCCCCCBCBCBBCBBBBBBB
+                       V                                                          V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................. ....    ..............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-             = =====---H---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCCCCBBBBBBBCBCCCBCBCBCBBBBBBCB                        C   CCCBCCBBCCCCCBCBCBCBBCBBBBBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................  ................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==  ==        =  ---=-----H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCBBCBCCBBBBBCBCBBBBCCCBBBBBBB                          C CCCCCCBCBBCCCCCCCCCBBCCCCCBBBB
+           VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-= =      = = = ====-=-----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCBBBBBBBBBBBBBBCBBBBBBBBCBBB                           CCCCCCCCCCBCBCCCCCBCBBCCCCCBCBB
+           V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++X+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=             = ==-=--=HH--HHHH-HHHHHHHHHH--H-H-H--HHHHHHH
+BCBBCBCBBCBBBBBBBBCBBBBBBCCBBBB                       CC  CCBC CCCCCCCCCC  C C C  CCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++X++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH====== = = ===-==-==--HHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHH
+CCCCBCBBBBBBBBBBBBBBCBBBBBBBBBB                      CCCCCCCCCCCCBCCCCCC CCCCCBBCCBCBBBBB
+          V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++X++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-= =     =-==-=-=--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBCBBBBBBBBCBBBBBBBBBBBBBBBBBC                   C CCCCCCBBBCCCCBCCCCBBCCBCCBCBCBBBBBBB
+         V             V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=-==========------H--HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHH
+ CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBC                  C  CCCBCCCCC CCCBCBBBCCCCCCBBCCCBCBBCBB
+           V   V V  V VVVVVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++X++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=========-====-=-----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCCCBCCBBBBBBBBCCBBBBBBBBBBBC                      CCCBCCCCCCCCCBCCCCCCCBCBBBCBCCCBBBB
+                          V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=========------HHH-H-HHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBC                CCC C CCBBBBC CCCCCCCCCBBCCBBBBBBBBBBBBBB
+              VV  V     VVVVV V                                                  V      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH------=----------HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBCBBBBBBCBBBBBBBBBBBBBBBBBBBBBB                 CC CCCCCCCBBCCCBCCCCBBCBCBCBBBBCBBCBBBBB
+                       VVVVV VV                                                     VVV V
+                           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH=----HH-HH-HHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHH
+CBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBCC CC     CC CC CCCCBBCCCCBCCBCBBCBCCBCC CCBBBCBBBBBBBBBBB
+                     VVV V VVVV                                                V V   V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H----------HHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHH
+CCCBCBBCBBCBCCBBBBBBBBBBBBBBBBBBBCCC   C          CBCCCCBCBBBCCCCC BCCCCCCCCCCBCBBBCCCBBB
+                     VVVVVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H------H----HHHHHH-HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHH
+BCBBCCBBBBCCBCBBBBBCBBBBBBBBBBBCCC C      C    CCCBCC CCCCBCCCC CCCCCCCCCCCCCCCBBBBBBBBBB
+                         VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---==-=-H----HHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHH
+CCCCBBCBBCCCBCCBBBBBBBBBBBBBBBBBCCCC        C    CCCCCCCCCBCCCCCCCCC  CCCCCBCCBBBBBBBBBBB
+                      V VV   V                                                     VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH--HHH-HHHHHHHHHHHHHH-HHHH--H-HHHHHHHHHHHHHHHHHHH
+CCCCCBBBBBBCBBBBBBBBBBBBBBBBBBBBBBCCC CCC  CCC CCCCCCCCCCBCBC CCBC  C CCCBCCBCBBCBBBBBBBB
+                      VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHH-H-HHHHHHHHHHHHH-HH---------HHHHHHHHHHHHHHHH
+CBBBCCCBBBBBBCBBBBBBCBBBBBBBBBBBBBCC CC CCCCC C CCCCCBCCBCBCC CC         CCCCCBBBBBBBBBBB
+                      VV VVVV                                                          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHH
+BCCBCBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCC CCCBCCBBCCCBCCCCCC CCCCCCCCBBBBBCBBBBBBBBB
+                       VVVVVVV VV                                                  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHH
+BCCCBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB CCCCBBCCCBCBBCCBCCBBCCCCC CCBBCBCCBBBCBBBBBBBBBBB
+              V         V VVVV VVV                                                VVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCBBBBCBBBBBBBBBBBBBBBBBBBBBCBBBBBBBCCCCCCCCCCCBBCBCBCBCCBCCC CCCBCBBBCBBBBBBBBBBBBBBBB
+           V V           VVV V VV                                                 VVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCC   BCCBCCBCCBCBCBBBBBBBBBBBBBBBCBBCCBCCCC  CCC  CCCCCBCBBCCCCCBCCCCCBCBBCBBBCBBBBBBB
+                        VVV  VVV V                                                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCBCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBCBBBBBBBBBBBCCCCCCCCCCCCBCBCCBBCCCBBBBBBB
+                         VVV VVVVVVV                                                    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCCBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBCBBBBBBBBBCBCCCCCCCCBCCCCCBCCBCBBBBBBB
+                        VVVVV VVVVV  V                                             VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCBCBCBBBBBBBBB
+            V   V V  V VVVVVV VV VVVVV    V                                      V VVV V
+                          AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-HHHHHHHHHHHHHHHHHHHH
+BBBBCCCCBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBCBBBBBBBBC BBC CCCCCCBCCCBBBBBBBBBB
+                   V    V  VV      VV V                                           VV VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBCCCCCCBBCCCCCCBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBCBBBCCCBBBBBBBBCBCBBCBCBBCCCBBBBBBBBBBBBBB
+                                      V                                          V VV VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHH
+BBBBCCCCBBBBBBBBCBBCBBBBBBBBBBBBBBBBBCBBBBCBBBBBBCCBCBBBBBCCCCBCCC  CCCCBBBCBBBBCBBBBBBBB
+V                    V                                                               VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBCCCBCBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBCCCBCBCCBBCCCBCCCCCBBBBBBBBBBBBBB
+                     VVVV  VVVVVV     V                                        V   V V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBCBBBCBBBBBCBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBCCCBBBCCCBBBBBBBBBBBBBBBBBBBBBBBB
+    V            V  VVVV VVVVVV V V   VV V V    V                         V        VVVVVV
+                           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBCCCCCBBBBBBBBBBBBBBBBBBBBBBBB
+VVV             V    V VVVVVVVVVV VVV VV VVVVVVV  V                     V    V    V VVVV
+                              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBCBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+              V V     VV  VV V  VVVV V  VVV   V  VV                  V           V  V  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCBBCCCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBB
+                   VVV VVVVV VVVV    V  VV   VV                  V      V V         VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBC CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCBCCBBCBBBBBBBBBBCBBCBBBBBBBB
+V                   VVV VVVVVVV       VV     V                       V              VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBCBBBCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                    V     VVVVVVVVVV   V  VVV   V                  V V    VV      V VV VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCC CCCCCCBCBBBBBBBBBBBBBBBBBBCBBBBBBBCBBBBBBBBBBBBCCBBBBCBBBBBBBBBBBBBBBBBBCBBBBBBBBB
+                         V VVV V                V                     V      V     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBCCCBCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VV                   V  VV VV VV          VV V     V                 V       VVV V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBBBCCBBBBCCBCCCBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                       VV VVVVVV     V  V  VV  V                    V         V  VVV   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBCBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBB
+V  V   V      V       V VVVVVVV           V  V    V V                       V  VVV V  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBCBBCCBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBBBBBBBBCBCCBBCCCCBBBBBBBBBBBBBBCCBCBBBBBBBBBBB
+V VV   V      V VV   V V VVVVVVV   V        V  V                   V V           V V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBCBBBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBCBBBBCCBBBBBBBBBBBBBBBBBBBCBBBBBCBBBBBB
+                VV  V VV VVVVVVV VV                                             V     VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBCCBBBCBBBBCBBBBBBBBBBBBBBBBCBBCCBBCCBBBCCCCCCCCC CCCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V  V                  V   V   V                                                  V   VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCCCCCBBCCBBCBBCBBBBBBBBCBCBBBBBBBBBB
+ VV           VVVVVVVVVVVVV VVV    V V    V                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCCCCCCBBCCCBBCBBBBCBBBBBBBBBBBBBBBBBBBB
+          V  V V  V VVV VVVV  VV  V    V                                      V   VV VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBCBCCBBCCCCBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCBCBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBB
+                 V  V  VVVV  VV   V  VVV   V VV                              V       VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCBCBCBBCBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBCCBCCCCCCCCCCCBBBBCBBBBBBBBBBBBBBBBBBBBBBBBB
+               V    V  VV VV              VV                      V V VVVV          V  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC CCBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+         V     V VVVVVVVV VVV      VVV VV VV V                    VV VV  VVVV  V   V VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCCCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+            V VV VVVV VVVVV  VVVV   V     VVV               V   V  V         VVV VVV VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBBBBBC   CCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+        VV   V  VV  VVVV V  VVV V                             VVV    VV VV    V VVVVV V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCCBBBBCBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+             V       V VVV         V        VV                   VV    VVV   V VV VVVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCBBBBCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCBCBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBB
+                V  V VVV V V V   V V      VV V                 VV  VVV    VVV V V VV   VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+         V      VV VVVVVV V V    VV V   VV                  V  VVV VVV VVV    V   V    VV
+                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBCCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+       V   V       VVVVVVVVVV VVVV V  VVV VV            VVV    VVVVV VV  VV V VVVV    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCBCCBCBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBB
+  V     V    VV   VV VVVVVVV VVV VV   VVVVVV                VV  V     V  V VV V     V
+                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+              V   VVVVVVVV V V V   V VV  V              V V VVVVVVV VVVVVVVVV     V  V
+                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+            V     VVVVVVVVVVVVVV V VVV                  V      VV    VVVV  VV   V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBB
+           V  VV VVVVVVVVVVVVVVVV      V                         V  V  V VVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+            VV V V VVVVV VVVVVV  V  VV                            V  VVVV V  VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+             VVVVVVVVVV   V V VV V V                                V  V     V     V  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+           VV  VVVVVVVVV VV VVV  VV                VVV      V       VVV  V     V  VVVVVVV
+                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V   V      VVVVVVVVVVVV VVV VVVVV   VVV V   VV   V                  VV     VV   VV VV V
+               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBB
+    VV     VV VV VVVVVV  VV VVV VVVV V  V                          VVV  VV   V  VV VV  V
+               A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBB
+        VV VVVVVVVVVVVVVVVVVV V VV  V  V           V                      VV VVV VVV VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBB
+           VVVVVVVVV VVV VV VVVV  VVV  V    VV  V       V         V   V     VV V  VV VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+            V    VVVVVV V   VVVVVVV  VV V                            V     V VVVVVVVVVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBB
+           V  VVVV VV VVVVVV VV VVVV VV             V     V                  V VVVVVVVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCCCBCCCCBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+          V  VV    V VV   V VVV  V  V                      V   VV          VV VVVVVV  V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCBBCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+            V VVVVV    V VV VVVVV                            VV     V      VV VVVV V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+           VVV  V  VV   V V    VV                       VV VV          V  VV VV VV VVVVVV
+                                                                                   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCBBBBBBCBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+          VV  V   V   V  V                               V    VVV                 V VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+    V VVV VV V VVV VVVVV VVVV VV   V  VV           V    V     V V  V VVVVV V VVVVVVVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+     V  VV V V VVVVVV  V VV V   V  VVVV          VV VV VV      V     V V   V V  V V VV VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCCCCCBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBB
+                  V  VV  V   V                     V       V           V V  V V V  V V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCBCBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+        VV     V V            VV                 V  VVVVVVV VV  V   V    VVV       VVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBCBBBBBBBBBBCBCCC  CBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+        V       V                VV V               V VVVVVVVVV VV        VV VV      V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHH---------HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBCBBBBBBBBCCC         CBCCBBBBBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+    V                                               V VV    VV  V       VV  V V      V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX++X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHH-==-===--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCBBBBBBBBBBBCCC         C CBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+    V                           V  V           V    VVV V   V  V  VV V  VVV V V     VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHH==  =  ====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBCBBCCCCC             CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCBBBBBBBBBBBBB
+V V                                 VVV               V VV    VV  V   V   V VV  V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHH--=  =   =====----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBC                  CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                   V  VV     V             VV V VV   V         V    VV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+++++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............      .......................................................................
+HHHHHHHHH-==          ===-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBC                  CCBBBBBBBBBBBBBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBB
+V                               V      VVV          V     VV VV V   V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX++++----==+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........         ......................................................................
+HHHHHHHH=             ===---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCBCC                    CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+ V                                VVVV VV   V        V   V                 V  V V V  V VV
 OOOOOOOOOOMMAMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX++-      -=++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........           ......................................................................
+HHHHHH-               ====HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBB                    CCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBB
+VV VV                          VVV VVVV            VV  V       V                 V V VV
 OOOOOOOMMX11ZXAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX++          -+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......              .....................................................................
+HHHHH               = ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBC                      CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBBBBBBBBBBBBBB
+                                 V   V VV       V V    VV VV    V              V      V
 OOOOOMX11))11ZZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+            --+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....               .....................................................................
+HHHH=                  ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCCC                        BCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBCBBCBBCCBCCBCBBBBBBBBBBBB
+                              VV VVV VVV      VVV V   V VV                     VV     VV
 OOOOMZ11))1111ZXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+              -++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....                .....................................................................
+HHH                  == =H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBC                      C CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                 V   VVVV VV   VV V    VV V        VV        VV V       V
 OOOM))))+))Z1ZXMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+             - =+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...                 .....................................................................
+HH=                  ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BC                       CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                              VV V V  VVV  V     V VVV V VV   V    VVVVVV V   V  V VV VVV
 OOM)+====+)11ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX              --++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..                  .....................................................................
+H-                  ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+B                        CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V                            VV VVVVV VVVV VV VVVVVVVV  VVV V V   VV VVVV VVVV VVVV V VV
 OM)==-=+=))ZX1XMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X                =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.                  ......................................................................
+H                   ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+C                       CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                             VVV V VVVVVV   VV    V    V V VV      VV   VVV VVV   VVVVV V
+                                                                            A
 M=------===))ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                -=+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                  .......................................................................
+                   ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                       CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                            VV V VVVVVVV  VVV  VVVVV V VV VV VVVVVV VV V VVVVV VVVVVVVVVV
 +=-==--+=))ZZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+               --+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                  .......................................................................
+                   = =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                          V V VVVVVVVV VV VV  VVVVV VVVVV  VVVVV  VV VVV   V   VV   V VVV
 -=-==--===111AOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              - -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                  .......................................................................
+                   ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                             V  VV VVV V V V VVVV    VVV       VV   VVV V  V       VV VVV
 ---====++1XZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              --+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 ........................................................................
+                  =-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                     CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                           VVVVVVVV V  VVVVVVVVV VVVV VV VV VV VVV   V VV   VVVV  VV  V V
 ---==-+1)ZXXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+             -=+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                .........................................................................
+                  --HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                    CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                        V VVVVVVVVVVVV V  VVVVVVVVVVVVVVV V   VVVVVV VV VVVV V   V VVVVVV
+                                           A   A
 =--==++)1ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+             =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+               ..........................................................................
+                ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                   CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                       VVVVVVVVVVVVVVVVVVV VVVVV  VVVVV VV  VVVVVVVVVVV   VVVVV  V V V
 --====)1ZMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            =+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+              ...........................................................................
+                ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                   BCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBB
+                        VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVV
+                                 A     A     A  A
 =-=++)ZZAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+           =+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+              ...........................................................................
+              ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                  CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                      VVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  V  VVVV VVVVVVVV
+                                  A   A     AA      A  A   A
 =-=+)1ZZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          -=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ............................................................................
+               ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                  CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                     VVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVV VVVVVVV V VVVVVV VVV
+                              A   AA    A  A   A  A  A A    A
 ===)))ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          -=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ............................................................................
+              ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBB
+                     VVVV VVVVVVVVVV V  VVVVVVV VVVVVV VVV  VV  VV V V   V VVV VV VV V VV
+                                A A  A  A A          A
 ==+)ZXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        -=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           ..............................................................................
+              =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                   VVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV   VVVV VVV  V      VVV
+                              A                  AA     A
 ++)ZZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       --+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ...............................................................................
+            ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+               CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                    VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVVVVVVVV VVVVVVV  V  VVV V
+                           A      A            A  AA
 ++)1AXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       -=+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ...............................................................................
+          = --HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+              CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                   VVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVVVVVVVVV VVVVVVVVVVVVVVVVVVV
+                          AA     AAAA   A A A   A A A
 11ZXZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       =+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         ................................................................................
+           ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+              CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                 V VV   VV VVVVVVVVVVVVVVVVVVVVVV VVV VV  VV    VVVVV V VVVVV    VVV  V V
+                            AAAA      A        A
 )1)XAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         ................................................................................
+           =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+              CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                       VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVV VVVVVVV  VVVVVVV VV VVVVV
+                                A  AA   A    A
 11ZXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     --++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        .................................................................................
+          =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+             CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                   VVVVVVVVVVVVVVVVVVVVVVV VVVV VVV V VVVVVVV VVV  VV  VVVV VV  VV    V
+                                   A  A
 1ZZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -=++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       ..................................................................................
+        ==-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+           C CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVV    VV VVV VV VVV VVVVVVV   V
+                        A       A  A     A              A
 ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    =++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      ...................................................................................
+      ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+          CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+              V  V   VVVVVVVV VVVVVVVVVVVVVVVVVVV VVV VVVVVVVVVVVVVVVVV VVVVVVVVVVV V
+                           A   AAA  A    A
 ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ....................................................................................
+     =  =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+          BBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+              V VVV  VVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVV VVVVVVVVVV VVV VVV  V V
+                        A  A A   A  A A A AA           A      A    A
 XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  --++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ....................................................................................
+        --HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+          CBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+             V V VVV VVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVV VVVV
+                        AAAA           AA               A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    .....................................................................................
+     ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+         CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+               V VVVVVV VVVVVVVVVVVVVVVVVV   V V  VVV VVVV V V VVVVVVVVV VVVVVVVVVVVVVV V
+                               A                                                  AAA
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ =++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    .....................................................................................
+     ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+         CBBBBCBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                       V  VVV  VVVVVVVVVVVVV  VV VVVVVVVVVVV V V  V VVVVVVVVVVVVVV VVVVV
+                                  A  A  AA                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   ......................................................................................
+    ===---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+          CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+            VVV V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVVVV VVVVVVVVVVVVVV VVVVV
+                                A   A AAAAAAAA A     A                A      AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  .......................................................................................
+    ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+        CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+            VVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVV    V   VV VVVVVVVVVVVVVV
+                     AA A      A A  AAA AA        A                              AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ ........................................................................................
+  ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+      CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+           VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVV  VV V  VVVVVVVVVVV
+                            A A  AA A A AA        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ ........................................................................................
+  ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+     CCBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+            V  V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V V V VVVVVVVV V  V VVV VVV VVVVVVVVV VVV
+                                   A     A                                     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+ ===H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    C CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                V   VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V VVVV VVVVVVVVV  V V VVV VVVV VVVV
+                           A        AAAAAA A              A                     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+ =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+        VVVVVVVV  VVV   VVVVVVVVVVVVVVVVVVVVVV     VVVVVVVVVVVV V  VVV VVVVVVVVVVVVVVVVVV
+                                    A      A                                     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+===HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+      VV VVVVVV  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVV
+                           A     A A AAAAAAA     A    A A      AA       A           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+    VVVVVVVVV VVVVVVVV  VVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV V V VVVVVVVVVVVVVVVV V VV VVVVV
+         AAA             A  AA  A AAAAAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+   VVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVV
+        A                    AAAA   AAAAAAAAAAAA  A A   A  AA  AA       A  AA  AA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+  VVVVVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVV VVVVVVVVVVVVVVVVVV VVVVVVVVV
+        A                     A A   A AAA AAAA A A A       A AA A     A   A         A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+    VV VV V V  V V  V  V  VVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVV VV VVV VV  V VVVVVV VVV
+          A                A  AA AAAAAAA  AA                  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVV VVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVV
+       A                A   AA AAAAAAAAA AAAA  A A   A      A               A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+  A          A            AAA  AAAAAAAAA A A  A A AA   A A A               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V VVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVV VV VVVVVVVVVVVVVV
+                             AAA AAAAAAAAAA A      A A     A      A A                  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V VVVVVVVVVV   V VVVVV V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VV V VVVVVVVVVVV
+     A                    A A AA AAAAAAAAAAA A A                   AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V VVVVV VVV V    VV V V  VVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVV  VVVVVVVVVV
+                             AA AAA A   AAA  AAA    A  AA  A      A    A            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVV VVVV VVVV VVV  V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+  A                      A A  AAAAAAAAAAAAAAAA AA  AAA  AA A    AA A A A      A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ A         A               AA AAAAAAAAAAAA A AA A   A   A      A  A   AAA          AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVV VVV   VVVVV V VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVV
+                          AAAA AA A AAAAAA A A      A    AA A AAA     AA             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V VVVVVV VV  VV   V V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVV VVVVV VVV VVVV  VVVVVVV
+                           AAAAAAAAAAA AA  AA A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVV VVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                          A AA AAAAAAAAAAAAAAA     A           A  A            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VV  VVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                           AA AAAA AA AAAAAAAAA    A    AA     A      A       A    AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AA      A                AAAAAAAAAA  A  AA  A    A         AAA   A                   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVV VVVVVVVV VVVV    VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVV   VVV    VVVVVVVVVVVVV VVV VVVVVV V
+     A                     A AA    A AA A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+ VVVVVV VVVV VVVVV V VVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VV V
+                           AAAAA   A A AAAAAAAAA            A A  A  A           A  A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVVVVVVVVVVVVVV VVVVVV  V
+        A      A            AAAAAA AAAAAAAAAAAA A A  A A                A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ A               A    A    AAAAAAAAAA A AAAAAA A  A A  A A A      A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVV VVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVV VVVVVVVVVV
+  A           AAA      A   AAAAAAAAAAAAA AA A AAAA          A AA     A           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVV
+ A       A AA AAAA  A   A AAAAAAAAAAAAAAAAAAAAAAA AAA  AA         A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VV VV VV VV
+     A   AAAAAAA  A     AAA AAAAAAAAAAA A AAAA      A  A A A A       AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVV V  V
+   A        A A  A AA     A A  AAAAAAA AAAA  A  A       A   A       AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVV V
+              A   A         AAAAA A AA A AA   AAA        AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+   V       VV VVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  V
+                  AAA    AAAAA AAA AA AAAAA  AA AAA  A   A  A          A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+ VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVVV VVVVVV
+     A  A   AAAAAAA A  A  AAA AAAAAAAAAAAAAAA AAAAA A      A             A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVV VVVVVVVVVVVVVVVVV
+A A A AA AAAAAA   A AA    AAAAAAAAAA AAAAAAAAAAAAAA  AAA  A                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVV V VVV V
+   AA   A A  A AA   AA     AAAAAA AAA AAAAAAAAAAA AA                 AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V V V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVV  V V  V V
+            A A AAA A        AA  AAA AA A AA AAAAA      AAAA AA      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVV VVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV VVVVVV VVVV VVVVVVVVVVV
+A         A A AA AA         A AAAAAAAAA AAA A AAAA    A  A    A A      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVV  VVVV
+ AAA AAAA AAAAAAAAAAAA      A AAAAAAAAAAAAAAAAAAAA    A        A  AA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVV VVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVV V
+ AA A  A  A A A  A A A       AAA AA  AAAA  A AA AA    A A  A     A  A   A      A A      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAAAAA    A   A A    A     AAAAAAA AAAAAAAAAAAAAAAAA AAA AA AAAA     AAA         AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAA A A AAA AAA  AA   AA  A AAA AAAAAAA AAAAAAAAAAAA  AAA  A AAAAA A AA    AAA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAA   A AAA  AA  AAAAAAA AAAAAAAAAAAAAAAAA  A AAA AA AAAAAA A A  A  AAA     A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AA   A  AA AAA AAAAAAA AAAAA    A AA  AAAA   AAA  AAA A   AAA   A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVV VVVVVVVVVVVVVV VV   VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV VVVVVVVVVVV
+          A AAAAA               AA      A AA  A  A AAA A A  A A     A     A A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVV
+  AA         AA A AAA A      A AAA    AA A AA A AA  AA A    A    A A         AA    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAA  AAA A AAA AAA  A AAAAAA AAAAAAAA  AAAAAAAAAAAAAAAAAA   AA AA A     AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V VVVVVV V VVV
+ A   A   A  A         AA     AA A       AA AA   AAAAA  A     A                 A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V VVVVVVVVV
+ AA  AAA  AAAAA   AA  A AA  AAAAAAAAAA AAAA A   AA AAAAA         A     A            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV VVVVVV
+  AAAAAAA AAA  AA AAA     A AA AAA AAAA  AA A AAAAAAAAA  A  A   AA   A             AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV V VVVVV
+AA A  A AA A AA AA  AAAAAAAA AAAAA   AAAAAAAA AAAA AA AAA AAA AAAAAA A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBB
+VVVVVVV VVVVVVV  VV V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV   VV          V
+A         A                A A   AA A AA  A  A  AA A A    A     AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAA   A   A AA  A     A    A AA  A    AA A  A  AAAAA    AAA AAA  AAA   A  A  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVV VVV
+AA AA    AA AA AAA  AAAAA A AAA AAAAA AA AAAAAAAAAAAA AAAAA  A AAAA AAAAAAA A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVV
+     A AA A  AA  A   A AA  A A  AAAAAAA  AAAAAAAAAAAA AAAAA A   A AAAA  AAAA    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VV
+A     AA A AA   AA  A  AA    AAAAAAA  AAAAAAAAAAAAAAAA   AAAAA AAAAAAAA AAAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V V
+A A AAA  A    A      AA AAA  AA  A AAAAAAAAAAA AAAAAA   AA A  A A  AAA   AA     A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVV
+AAA AAA AAAAAA     A   AAAAAA AAAAAAA AAAAAAAAAAAAAAAA  AA A     AAA A       A     A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V VVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAA AA   AAAA AAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA              AAA        A     A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVV
+   AAAA  AAA  AAAA A AAAAA   AAAAAAAA A AAAAAAAAAAAA     A          A A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+  AAAA AAAAAAAA    AAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAA       A      A A AAA            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+ VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+       A  AAAA  A AAAA AAAAAA AAAAAAAA AAAAAA AA AAAAA        A      AA                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV
+  A A   AAAAAAAAAAAA A A  AAAA  AAAAAAAAAAAAAAAAAAAAAAAA             A  A A   A  A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVV VVVVVV  V
+         AA A   A A        AA  AAAAAA A AAAAAAAAAAAA A         AAA    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+    A  AAAAAAAA AAAA AA AAA AAAAAAAAAAAAAAAAAAAAAAA AAAAA    A AAAA A A A              AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+   A   AA  AA A  A AAA AAAAAAAA AAAAAAAA AAAAAA AAA AA A          A   A AA        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV   V VVVVVVVVVVVVVV VVVVVVVVVVVV
+   AA  AAAAAAAAAAA AAAA    A AAA A AA A   AAAAA  AA AAAA               A   A       AA  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAA  AA    AAA AAAAA AAAAAAAA AAAAAA AAAAAAAA AA A AAA A            AA A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVVVVVV VVVVVVVV
+A   A AAAAA A AA A  AA AA A    A     AAAAAAAAA AA A AAAA           A    A A  A        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V VVVVVVVVVVVVVVVVVVVVVVVVVVVV
+  A  AA AAAA  AA A  AAA AA A AA AAAA  AA AAAAAAAAAAAAA                 AA A A A        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAA A AAA  A AAA AA AAAAA  AAAAAAAAAAAA AAAAAA AAAA AAA A   AA     AAA      AAAA A    AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A AAAAAAAAAAA  AAA AAAA   AAAAAAA A AAAAAAAAAAAAAAA AAA     A      A       AA A       AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+  A AA AA A A AAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA A              A    A  A      A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+   A   AAA AAAAAAAAAA AAAAAAA AAA AAA AAAAAAAAAAAAAA A AA    A   A         AAA A A    AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVV VVV VVVVVVVVVVVVVV
+  A   A  AA  AAAAAAAAA AAA AAAAAAAAAAAAAAAAA AAAAAAA AAA A    A A       A   AAAA A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAA   AAAA AAAAAAAA AAAA A     A   A       A AAAA AA  AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAA AAAAAAAAA   A  AAAAAAAAAAAAA AA AAAAAAAAAA AAAA AA   A  A    A AA AAA AAA AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAA A AAAAAA AAAAA  AAAA AAAAAA   AAAAAAAAAAAAAAAAAA                 A        A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV VVVVVVVVVVVVVVVVVVV
+ AAAAA   AAAAAAAA A AAAAAAAA AAAA AAAAAAAAAAAAAAAAA  AAAAAA     A     A A AAAA A     AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ A A A  AAAAAAAAA AAAA AAA  AAAAAAAAA AAAAAAAAAA  AAAAAAAA A         AA  A AA A  A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAA  A  A   A   A A AA AAAA AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVV
+AA AAA AAAA AAAAAAAAAAA AAAAAAAAAA AAAAAAAAAAAAAAAAAAAAA A         AAAAAAA A  A     AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AA AA A   A A A  AA    AAA AAAAAAAAAA AA AAAAAAAAAAAAA AAA       AA AA   AA A A AA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVVVVVVV
+AA  AA AAAA AAAA    AAAAAAA AAAA AA AAAAAAAAAAAAAAAA  A A  A         A AA AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVV VVVVVVVVVVVVVVVVVVVVVVV
+AA A    AA  A A  A   A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AA         AAAA AA  A A AA     AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+   AA      A A AAAA AAAAA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA A   A        AAAAA     A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ A A   A    AA AA A AA AAAAAAA AAAAAAAAAAAAAAAAAAAAAA AAA A   AA   A  AA AAAAA AA    A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVV VVVVVVVVVVVVVVVVVV
+         A  A  A A AAA AA AA  AA  AAAAAA AA A AAAA AAAAAA A        AA   AAAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+       A   A A   AAAA  AAAAAAAA  AAAAA AAAAAA AAA AA  AAAAAA   A    AA A A A AAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A          AA AAA A AAAAAAAAAAAAAAAAA AAAAAAA AAA  A  AAA AA A       AAA AAAAAA AAA AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+       A   A      A AAAA AAA  AAAAAAAAAAAAAAAAAAA AAA AAAAAAA  A A AAAAAA AAAAAAAAAA A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+    AA    A  A AA   AAAAA  AAAAAAAAAAAAAAAAA AAA AAAAAAAAAAAA  A   A AAAAA AAAA A AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+         AA   AAAA  AAA AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAA AA  A  A  AAA AAAAAAAAA AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+  AA AA A  A  AAAAAAA   AAAAAAAAAAAAAAAAAAAAAAAAAAA AAA AA  AA  A  A AA AAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVV
+AAA  AA A AAAAA A   AAAAAAAAAAAAAAAAAAAAAAA AAAAA AAAAAAAAAA      AAAAAAAAAAAAAAAAAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+      AA   A AA       A  AA AAAAAA AA AAAAAAAAAAAAA AAA AAAA     AA  AAA AA AAAAAAAAA  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A A   A AAA A     AAAAAAAAAAAAAAAAAA AA AAAAAA AAAAAA AAAAAAAAA AAAAA AAAA AAAAAAA AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAA  AA A AAAA   AAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAA    AA A     A AA A AAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A A     A  AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAA     AAAA     A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+      A  A  AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA     AAA    A  A A  A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VV VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+        AAAA  A AAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAA  A   A AAAAAAAAA AAAA AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+   A  AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAA AA  A AAAA A AA       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAA   AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA  A AA A   A AAAAAA AA AAAA A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+   A  A A AAA  AA AAA AAAAAAAAAAAAAAAAAA AAAAAAA AAA  AAA AAA AA A A AA AAAA AAAAA  A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A  AAAAAA AAAA AA  AA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAA AAAAAA AAAAA AA A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAAA AA AAAAAAAAAA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA A  AAAAAAAAAAAAA  A AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A AAAAAAAAA AAAAAAAA A  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA AA AA AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+   A  A  A AA AAAAAA   A  AAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   AAAAAAAAAA AAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AA   AAAAAAAAAAAAAAA AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   AAAAAAAAAAA AAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAA AAAAAAAAAAAAAAAAAAAAAAA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AA  AAAAAAAAAAAAAAAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAA AAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   AAAAAAAAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAAAAAAAAAAAAAAAAAAAAAA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA A AAAAAAAAAAAA AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAA  AAA AAAAAA AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+  AAA A AAAAAA  AAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAA AAAAAAAA  AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAA AAAAAA   AAAAAA    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAA AAAAAA A A  AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A  AAAAAAAAAAAAAAAAAAA      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAA AAAAAAA A  AAA        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AA AA AAAAAAAAAA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVV
+AAAAA AA AAAA   AAAA    A A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA    A  AA AAAAAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V VVVVVVVVVVVVVVV
+AAAAA AAAAAAA  AAAAAA AAA A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAA            AA  A  AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAAAAAAAAAAAA  AA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA A AAA AA A AA A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAAAAAAAAAA  A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA A A A A   AAAAAAA A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAA AAAAAAAAAA  AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   AAA AA AAA  AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAAAA A    AAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAA A A   A AA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAA AAAAA A AAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA  AAAAAA AAAAA A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA A A A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAA  AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAA


























