1
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZAOOOOOOO
+XXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXX+XXXXXXXX++++X+X++++=++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+  +++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''  '''''''
+..........................................................   ..........................................   ......
+HHHHHHHHHHHHHH-   =-HHH-H---HHH-H-HHHHH=----H-H-====-=- ==   =-=-HHHHHH--HH-H-HHHH-H-H-HHH----HHHHHHHH=   ======
+CBBBBCBCBBBBBC      CCC C   CCC C CCCCC     C C                  CBBBCB  CC B BCCC C C CCC    CCBCBBBC
+        V V V
 OOOOOOOOOOOOOO+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOM1)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZOOOOOOO
+XXXXXXXXXXXXX+  +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++++- -   ++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+  -++++X+
+'''''''''''''   ''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''   ''''''
+.............   .........................................        ......................................   ......
+--HHHHHHHHHH-    ---HHHHHHHHHHH-HHHH--H---HH-HHHHH-=--===        =-==-HHH-HHH-HHHHHHHHH-HH-HH-HHHHHHHH=    ===-=
+  CCBBBBBBBB        BCBBBCBCBCC CCCC  C   CC CBCCC                    CCB CCB BCCCCCBCC CC CC BCBCBCBC
+      V V
 OOOOOOOOOOOOA -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA=      --ZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)MOOOOO
+XXXXXXXXXXX+    +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++            =+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+   +++X+
+''''''''''''    ''''''''''''''''''''''''''''''''''''''''             '''''''''''''''''''''''''''''''''''    ''''
+............    ........................................             ...................................    ....
+-HHHHHHHHHH     =-----HHHHHHHHHHHHH-H-H-------HHHH--===               --HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=     =-=
+ CCBBBBBBCC           CCBBBBBBBCBCB C C       CCCC                      BCCCCCBBCCBBBCCCCCCCBCCCBBBBBCC
+      V                   V V
 OOOOOOOOOOM= -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=          - )MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+=OOOO
+XXXXXXXXX+     +XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXX+                ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+   -+++
+''''''''''     '''''''''''''''''''''''''''''''''''''''                '''''''''''''''''''''''''''''''''''     ''
+..........     ......................................                  ..................................     ..
+HHHHHHHHH=      -HH-H-HHHHHHHHHHH-H---H--=H---HHHHH--                  =HHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHH      =
+CBBBBBBBB        CC C BCBBBBBBBBB C   C   C   CCCCC                     CCBBBCBBBCCCBCCCB BCCCBCBBBBCCBC
+                          VVV V
 OOOOOOOOO1- 1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+       ---   -- 1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=+=1M
+XXXXXXXX+    =+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+=                  +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=
+''''''''      ''''''''''''''''''''''''''''''''''''''                    ''''''''''''''''''''''''''''''''''
+........      ......................................                    ..................................
+HHHHHHH-      =-HHHHHHHHHHHHHHHHHHHHH------------=-=                    --HHH-H-HHH-HHHHHHH-H-HHHHHHHHH-H-
+BBBBBBB         CCBCBCBBBBBBBBBBBCBCC                                     CCC C CCC CCCCCCB C CCBCBBCCC C
+   VV             V       V
 OOOOOOOZ=-1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-     )ZXXMAX)+++=-=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-)
+XXXXXX+    -++XXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXX++-                    =+X+++XXXXXXXXXXXXX+++XXXXXXXXXXXX++
+'''''''     '''''''''''''''''''''''''''''''''''''''                      ''''''''''''''''''''''''''''''''''
+......      .......................................                      ..................................
+HHHHH-      ==HHHHHHHHHHHHHHHHHHHHHHHH----====---==                      =-===--H-HHH-HHHHH===-HHHHHH-H---=
+BBBBB         CCBBBBBBBBBBBBBBBCBCCBCC                                          C CCB CCBCC    CBBBCC C
+                V     V V   V
 OOOOO1=+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-  --1MOOOOOOOMMMMZ)-1MOA1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+   +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XXX+        +++++=+         +   +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+==
+''''     ''''''''''''''''''''''''''''''''''''''''         '''                 ''''''''''''''''''''''''''''''''
+....     ........................................         ...                 ................................
+HHHH      =-HHHHHHHHHHHHHHHHHHHHHHHHHHH---==-=---                             =-HHHHHHHHHHHH--H-HHHHHHH------=
+BBBB        BBBBBBBBBBBBBBBCBCBBBCCCCCC                                         CCBCCCCCBCCC  C CBBBCCC
+                  V V VV
 OOOM=)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=  -+OOOOOOOOOOOOMMMXX)+)=+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+   -+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++=     --+++++++=+=          ++XXXXXXXXXXXXX+++++XXXXXXXXXXXXXXX+
+'''    '''''''''''''''''''''''''''''''''''''''''        '''''''              '''''''''''''''''''''''''''''''''''
+...     ........................................         .....               ...................................
+HH=     ==H-HHHHHHHHHHHHHHH-HHHHHHHHH----=-=-===          ===                 --H-HHHHH-H-H=====--HHHHHHH-H----=
+BB        C BBBBBBBBBBBCBCC CCBCBCBBC                                           C CCCCC B C       BCBCCCC C
+              V   V
 OOZ)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- -=MOOOOOOOOOOOOOOMMZZ)=-+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++   +++XXXXXXXXXXXXXXXXXXX+XXXXXXXXXX+++XX+++++     =++++++++=----        =XXXXXXXXXXXXXXX+X+++XXXXXXXXXXXXXXXX
+'    '''''''''''''''''''''''''''''''''''''''''''      ''''''''              ''''''''''''''''''''''''''''''''''''
+.     .........................................        .. ...               ....................................
+=     ==---HHHHHHHHHHHH----=-H-H--HHH-===--====           = =               ---HHHHHHHHHH--=-===-HHHHHHHH-----H-
+           CCCCCCCCCCCC      C C  CCC                                          CCCBCBCCCB        CBCBBBCC     B
 --1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+  )XOOOOOOOOOOOOOMOAA11)===1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   +++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXX+++     ++++++++++=-- -         ++XXXXXXXXXXXXXXX+XXXXXXXXXXXXX+XXXX
+    '''''''''''''''''''''''''''''''''''''''''''     ''''' ''''              ''''''''''''''''''''''''''''''''''''
+    ..........................................        ...   .               ....................................
+    ==-=-=--HHHHHHHHHHH-H-----H---H--====---==              =                =HHHHHHHHHHH----=--HHHHHHHHH-H=--H-
+            CCBBBBCCCCC C     C   C                                           CCCCBBBBBBC       CCBBBCBCC C   C
  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA   ZMOOOOOOOOOOOOMXMAAZX1+=++MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  =+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+X+++      ++++++=++++-             +XXXXXXXXXXXX++++X+XXXXXXXXXXXXXXXX
+   '''''''''''''''''''''''''''''''''''''''''''        '''     '              '''''''''''''''''''''''''''''''''''
+   ...........................................        ...                    ...................................
+   =-=-=----HHHHHHHHH-HHH---H-H-H-HHH===-=-==           =                     HHHHHHHHHHH-====-=--HHHHHHH-H-H---
+            CCBBBCBCC CCC   C C C CCC                                         CCCBBCBCBBC         CCBBBCC C C
+                                                                                  V
   AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-  =AMOOOOOOOOOOOOAXZXZ1X1)=+=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   ++++XX++XXXXXXXXXXXX+++XXXXXXXXXXXX++++++++      =--=+++=--+-             =XXXXXXXXXXXX++++++XXXXXXXXXXXXXXX+
+    '''''''''''''''''''''''''''''''''''''''''           '     '               ''''''''''''''''''''''''''''''''''
+    .........................................                                 ..................................
+    ===--==---HHHH-HH--===------HHH-H-===== =                                 --HHHHHHHHH-======--HHHHH-----H--=
+              CCBC CC           CCC C                                           CCBCBCCCC         BBCBB     C
     1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- -1OMOAXXOOOMOXOOX1111)1Z1=---ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     +++X+X+XXXXXXXXXXXX++XXX+X+XXX+++++X+XX++    - -   =+- - -=              +XXXXXXXXXX+X+++++X+XXXXXXXX+XX+X+
+      ''''''''''''''''''''''''''''''''''''''''           '                    ''''''''''''''''''''''''''''''''''
+      .......................................                                 ..................................
+      ==-=-=HHH--HH-H---==---=-=---=====-=--=                                 =-H-HHH-H--=-=====-=H-HHH---=--=H=
+            CCC  CC C                                                           C BCC C           C CCB       C
      -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- +MOOMMAXMOOMMAXMM11)1111X)--==OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       =+++XXXXXXXXXXXXXX+XXXXXXXXXX++XXX+X+X+    +=     -+                   ++XXXXXXXXX+++++++++XXXXXXXXX+X+++
+        ''''''''''''''''''''''''''''''''''''''    '                           ''''''''''''''''''''''''''''''''''
+        ......................................                                 .................................
+         ==---HH--H-H----=H-----H---==---=-=-=                                 =----H-H--=== =====HHHHH----=-===
+              CC  C C     C     C                                                   C C           CCCCC
         -=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- )MOOOMOAXXOMMZZ1MM))))))11=---XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          =+++X+X+XXXXXXX+XXXXXXXXX+++X+XXXXX+    ==+ -   -                    +++XXXXXXX+X+++XX++XXXXXXXXXXXXX+
+           '''''''''''''''''''''''''''''''''''                                 '''''''''''''''''''''''''''''''''
+           ...................................                                 .................................
+            ==-=-=--H-H-H=HHH-H-H--===-=-----=                                  ==--HHH--=-===--==-HHHHHHH--H--=
+                    C C C CCC C C                                                   CCC            CCCCCCC  C
           -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-AOOOOOOOMAXMMZZ)ZMX)))1)Z1)+=-=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            =+++XXXXXXXXXXXXXXXXXXX+X+XXXXXXX+   -=-==--                       =++++XXXXX+X+X+XXXXXXXXXXXXXXX+X+
+             '''''''''''''''''''''''''''''''''                                  ''''''''''''''''''''''''''''''''
+             .................................                                  ................................
+              ==----H-H-H---H---H-H=-=----H--                                     ==HH---=-=-=----H-H-H-HH---=-=
+                    C C C   C   C C       C                                         CC            C C C BC
              1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-=XMOAMOOOMAMAMX1))ZO11)11XXZ)=- +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+    +  -=-          -             ++XXXXX+++++X+X+X+XXXXXXXXX+XXXX
+              ''''''''''''''''''''''''''''''''                                  ''''''''''''''''''''''''''''''''
+              ................................                                  ................................
+                --HHHHHH----H---H-H----------=                                   =-----=====-=-=-=--H-H-HH-=----
+                  CCCCBC    C   C C                                                                 C C CC
             1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA-=ZOOXOOOOOMOAMOA1=)OZ1+))ZMZ1)- -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+             +XXXXXXXXXXXXXXXXX+XXX+X+X+XXX++    -= --+== -  -    -             ++XXXXXX+++++++++XXXXXXXXXXXXXXX
+             ''''''''''''''''''''''''''''''''                                   ''''''''''''''''''''''''''''''''
+              ...............................                                    ...............................
+              ---HH-HHHHH---H--=---=-=-=---==                                    =--H---=========---H-H-HHH-----
+                 CC CCCCC   C                                                       C               C C CCC
            -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- )XOOAMOOOOOOOMOMZ))1X1)+)1ZAZZ=  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            +++XXXXXXXXXXXXXXXXXXXX+XXXXX+XX=    +=  -+++++- -                  =+++X++++++++++++XXX+XXXXXX+X+XX
+             '''''''''''''''''''''''''''''''          '''''                      '''''''''''''''''''''''''''''''
+             ...............................          ....                       ...............................
+             ==--HH-HH--------H----=-----=--            =                        ===-==== =======---=--HHHH=-=--
+                 CC BC        C                                                                        CCCC
           ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  +OOOAOOOOOOOOOOOMZZ)))))+++AXX)- )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+           =+++XXXXXXXXXX+++X+XXXX++X+XXX+++-   -++ =+X+XX++++=                  ++XX+X+++++++++XXXXXXXXXXXXX+X+
+            ''''''''''''''''''''''''''''''''     '   ''''''''                     ''''''''''''''''''''''''''''''
+            ................................     .   .......                      ..............................
+            ===-H-H---H--===-=----==-=--H===         =-=--==                      =--=-=========--HH----HHH--=-=
+                C C   C                 C                                                         CC    CCC
         -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO= -)OOOOOOOOOOOOOOOOOZ1)====)+XAAX- -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          ++++XXXXXX+++XX+++++X+++++++XXXXX+    +++-++XXXXXX++++-                -XXXXX+X++++++++XXXXXX+XXXXXXX+
+          ''''''''''''''''''''''''''''''''''     '  '''''''''''                   ''''''''''''''''''''''''''''''
+          ..................................     .  ...........                   ..............................
+           ===--H---===--=====-=======-----          =H-H---                      ---H-=-========-H-H-H=--HHH--=
+                C                                     B C                            C            C C C   CCC
       -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM  -1OOOOOOOOOOOOOOOOOMZ1X1====1ZMX+  =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        ++++++XXX+XXXXXXX+XXXXXXX++XX++++++     ++=++++++++++=+++                 ++++XX++++++X+++XXXXXXXXXXXXX+
+         ''''''''''''''''''''''''''''''''''      '  ''''' ''' '''                 ''''''''''''''''''''''''''''''
+         ..................................      .  ..... ..  ..                   .............................
+          ====---=--H-H--=-------==--======         == == ==                        ==--======-===HHHHHH----H--=
+                    C C                                                                           CCCCBC    C
      +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)  -)OOOMOOOOOOOOOOOOOOA1ZZ11))XAAMZ- -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      ++++XXX+XXXXXXXXXXXXXXX+XXXXXX++X+XX+     ++- -++===+++-++++                -+++X+++++++++XXXXXXXXXXXXXXXX
+      '''''''''''''''''''''''''''''''''''''     ''        ''  ''''                  ''''''''''''''''''''''''''''
+       ....................................      .         .   ..                   ............................
+       ===H--=---------------=--H-H-==-=--=                     =                     -=========--H-HHHHH-H-HHH-
+          C                     C C                                                               C CCCCC C CCB
      )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=  -ZOOOMOAAAAAOOOZMOOOOM+=+)+=)XMAX=  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      ++XXX+XXX+XXXXXXX+++X+++X+XX++X++++++     ++- -     -+-  +++-               -+++++++++++++XXXXXXXXXXXXXXXX
+      '''''''''''''''''''''''''''''''''''''     ''              ''                 '''''''''''''''''''''''''''''
+      .....................................     .               .                  .............................
+      ==--H=---=----H--===-===-=--==-=====                                         ======== ====----H-H-HHHHHHHH
+          C         C                                                                               C C CCCCCCCC
 M-   +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX   =XOOOMMXZ1XAOO1)ZOOOOAA)--===+AZZ=  AOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      ++++X+X+XXXXX+XXXXX+++++++++++X++XX+      ++-       --   -++-                +++++++++++++XXXXXXXXXXXXXXXX
+      ''''''''''''''''''''''''''''''''''''      ''              ''                 '''''''''''''''''''''''''''''
+       ...................................      .                .                 .............................
+        ==-=-=--H--=--H--==== ======-==--=                                          ===== ==  ==--H-H-H-H--HHHHH
+                C     C                                                                           C C C C  CCCCC
 OO-  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO   =AOOOOOOAZZAOO)==ZOOOMAM1=+++=XAZ)  1OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++=    -+++X+X+XXXXXXXXXXXXXXXXXXX++X++++++-     ++=---    =-    =+=                =++++++++++++++XXXXXXXXXXXXXX
+'      '''''''''''''''''''''''''''''''''''      ''                                  ''''''''''''''''''''''''''''
+.      ...................................      ..                                  ............................
+        ==-=-=---------H---------==-======                                          ==== ==   = ==--H-HHHHHH-HH-
+                       C                                                                            C CCCCCC CC
 OOOAXZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM   =ZOOOOMMA11MOOOZMAOOOOZAOZ)=+=+XM+  -)OOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++-    +++X++XXXX+XXXXXXXXXXXX+X++X+X+++X+      ++=-      ++-   --+=  -             ++++++++++++++XXXXXXXXXXXXXX
+''     '''''''''''''''''''''''''''''''''''       '                                   '''''''''''''''''''''''''''
+..     ...................................       .                                   .. ........................
+=       ==-==----=--H--HHH----=-==-=-===-=                                              =     ====--H-----H-H-HH
+                    C  CCC                                                                          C     C C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX   -)MOOOMOAZ+1OOOZAMMMOOMZOMZ)+==)O)    -1+-OOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++++X++++XXXXXXXXXXX+XX+X+++XXX+++XX       -+- -    =+-     ==  -       -         -+++==++++XXXXX+X+XXXXXX
+''''''''''''''''''''''''''''''''''''''''''                                                ''  ''''''''''''''''''
+..........................................                                                ..  ..................
+-----=====-====---H-HH--H-=--=-===---===H-                                                ==   ===-----=-=---HH-
+                  C CC  C               C                                                                    CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO    )AMOOOOM1))ZZ)==+1ZOOOOAAMXZ)=-1)         ZOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+X+XX++XXXXXXXXXXXXXXX+XXXXXXXXXXXX-       +---            --=-                    +++-+++++XXXX+XXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''                                                 '  ''''''''''''''''''
+..........................................                                                    ..................
+--H-H--=-=--==----------H-H-H=------H---HH                                                    = ===----=----H-H-
+  C C                   C C C       C   CC                                                                  C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO   -)XAOOOOMZZXMMZ)+==+XMOOOMXXX)+-=-          +)+)OOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+X+X+X+XXXXX+X+XXX+++XXX+XXXXXX=       =---              +++                       ++++++XXX+X+XXXXXX
+''''''''''''''''''''''''''''''''''''''''''                            '                       ''''''''''''''''''
+..........................................                                                     .................
+-HHHH-H----=-=-=-=HH---=-=---===--H=----H-                                                     =====---=-=------
+ CCCC C           CC              C     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO    =+)OMMMMZOOOOOOOOM1ZAOOOOO11)+=-               MOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+++XXXXXX++XXXXXXX+XXXXX+XX+       =     -=+++---    ++++-                      +++++++XXX+X++XX+
+''''''''''''''''''''''''''''''''''''''''''                '''       ''''                       '''''''''''''''''
+..........................................                ..          ..                        ................
+--HHHHH--HH----===HHH---==-------=-----=H-                 =                                     =====---=-==-H=
+  CCCCC  CC       CCC                   C                                                                     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO    ---MZMOMZAOOOMXOOMXAMOOOOOOZ1Z)=-              )OOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+XXXXXXXXX+XXXXXXXXXXX+XXXX+          -   =+=  --    +++++-                     =+++++XXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''                           ''''                       ''''''''''''''''
+..........................................                           ....                       ................
+HHHHHHHHH-HH---=--HHHHHH-=--H-------H=-H--                            = =                         ===---H-----H-
+CCBCBCCCB CC      CCBCCC    C       C  C                                                                C     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO   --  ZX)MMOMOOOM111)=ZXOOOOOOOAX)+==              1OOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+            - -=-        ++++++-                     ++X+++X+XXX++XX+
+''''''''''''''''''''''''''''''''''''''''''                           '''''                      ''''''''''''''''
+..........................................                           .....                      ................
+-HHHHHHHH-H-------HHH-H-----H---HHHHH-H-H-                            ====                        -===-=--H==--=
+ CCCCCCCC C       CCC C     C   CCCCC C C                                                                 C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO   --  +)11OOOMOAX1)=+)XOOOOOOOOOAZZ+--              OOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX+           --- -        -++XXX++-                    =+++++++++X+++++
+'''''''''''''''''''''''''''''''''''''''''''                         ''''''                       '''''''''''''''
+..........................................                          ......                       ...............
+HHHHHHHHHHHH---=--HHHHH-H---H-H-HHHHHHH---                            ---=                        ========-=====
+CCBCBCBBBCCC      CCCCC C   C C CCCCCCC
+      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX        =1ZAMOM1==---=)MOOOOOOOOOAAX)=-              OOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+XXXXXXXXXXXXX+XXXXXXXXXXXXX+              -          +++XXX++-                    -+++++++++++X+++
+''''''''''''''''''''''''''''''''''''''''''                          '''''''                      '''''''''''''''
+..........................................                          .......                      ...............
+H-HHHHHHHHHH-=--H-H-HHH----=HH--H-H-HHH-H=                          ==---=                        ==========-===
+C CCBCBBBCCC    C C CCC     CC  C C CCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO    -    )MOMOOA1)=-=1AOOOOOOOOOOXZ1)1=              )OOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+-           - --        +++++X+++=                     =++++X+X+++++++
+''''''''''''''''''''''''''''''''''''''''''                        '''''''''                       ''''''''''''''
+..........................................                        .........                       ..............
+HHHHHHHHHHHHH----HH-H-H---H-H-H-HHHHH-H--=                         ====-==                        ====-=-=======
+CCBCCCBCBCBCC    CB C C   C C C CCCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-        +OOOOOOOOOOMOOOOOOOOOOOOM1)+Z+              )OOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+          -+=--+-=-- ++++X+X+++++                     +++++++++X+++++
+'''''''''''''''''''''''''''''''''''''''''''           '          ''''''''''                       ''''''''''''''
+...........................................                       ........                        ..............
+--H-HHHHHHH---H-HHHHHHHHHHH---H-H-HHH-----                        = -=-==                           ======-=====
+  C BCBCBCB   C CCCCCCCCCCC   C C CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO     -   -MOOOOOOOOOOOOOOOOOOOOOOMX1)+-              XOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+           ===++==+++++++XX++++--                     +++++++X+++++++
+''''''''''''''''''''''''''''''''''''''''''                    ' '''''''''                         ''''''''''''''
+..........................................                        .......                         ..............
+H--HHHHHHHHH----HHH-HHH-HHHHHHH---H----=--                         =--===                         = = ==-=======
+C  CCCBCBCCC    CCC CCC CCCCCCC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM     -    ZOOOOOMOOOOOOOOOOOOOOOMM1+++-              1OOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+XXXXXXXXXXX+XXXXX+XXXXX+X+X+            --=-- --=-==++X++++--                      -++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''                        '''''''                         ''''''''''''''
+..........................................                        .......                          .............
+--H--HH-HHH--=-----------=H-H--=-----=-=-=                          -==                             ============
+  C  CB CCC               C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM      -  -1MAOOOOOOOOOOOOOOOOOMAAA))+=               +OOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XXXXX              -----==--+++++X++                        -++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''                        ''''''                          ''''''''''''''
+..........................................                        ......                           .............
+HHH-H---HHH---HHH-HH----H--------==-=-----                        ====-=                            ======= ====
+CCC C   CCC   CCC CC    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-     -  =ZAAOOMOOOOMOOOOOOOOO1)Z11Z)--              1OOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X++X+++             -- -==- =+++XXX+-                        ==+++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''                      '''''''                           '''''''''''''
+..........................................                        ......                            . ..........
+--HHH-HH--HHH---HHH-----HHH--HH--=-=-==-==                        ==---                                =====  =
+  CCC CC  CCC   BCC     CCC  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1      - 1ZAXOMMOOOOOOOOOOOOOO)+ZMXA1)=              MO=+MOOOOOOOOOOO
+XXXXXXXXXXX+++XXXXXXXXXXXXXXXXX+XXXXXX+++++             -  -+=--++++X+X+-                        -   =++++++++++
+'''''''''''''''''''''''''''''''''''''''''''                      '''''''                              ''''''''''
+...........................................                       ......                              ..........
+--H-HHH-H--===H---H--H---HH-H--=------====                          -=-=                              = = ======
+  C CCC C     C   C  C   CC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO      -+XZX1AMOOOOMOOOOOOOOOA+1AAAX1Z1)--           --  )OOOOOOOOOOO
++XXXXXXXXXX+XX+XX+XXXXXXXXXXX+X+++X++X+++++-              =-=- -++++++++                             =++++++++++
+'''''''''''''''''''''''''''''''''''''''''''                       ''''''                              ''''''''''
+...........................................                        .....                              ..........
+=-HHH-H-H--=--=--=H-HH--H-H--=-===-==-====                          ===                                 = ===
+  CCC C C         C CC  C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)       -1XAAMOOOOMMOOOOOOOOOA+1XZ+)1AX1+--   -      +O1=MOOOOOOOOOOO
+XXXXXXXXXXX+X+XXX+XXXXXXXXX+XX++++++++++++-              -==-  ----=++++                         -   +++++++++++
+'''''''''''''''''''''''''''''''''''''''''                           ''''                             '''''''''''
+.........................................                           ....                             ...........
+--H---HHH-H=-=---=--H-HH---=--=======  =                              =                                ====== ==
+  C   CCC C         C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAX    -  --)MMOOOOOOOOOMOOOOOOX=Z1=-=+Z1+----- -      -+1XOOOOOOOOOOOO
+++XXXXXXX+++++++++X+X+XXX+X+XX++++++++==-               ++++++--- -=++++                            ++++++++++++
+''''''''''''''''''''''''''''''''''''''                    '''       ''''                            ''''''''''''
+......................................                    . .        ...                              ..........
+==----H--=========-=-=H--=-=--=== ===                                =                                =    ==
+      C               C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZZAZ-      --+XAOOOOOOOOOOOMOOOOM11=  =+)1Z1=-= --=     =AOOOOOOOOOOOOOO
+++++X+X+++XX+++++XXX+XXXX+X+XXX+++++++-                 -=+++==---- =+++                          ++++++++++++++
+'''''''''''''''''''''''''''''''''''''                     '          ''                           ''''''''''''''
+.....................................                                                              .............
+====-=H===--=====---=----=-=---== =                                                                       =  =
+      C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAAXZZA1--- - ---=ZAMMOOOOOMOAAXOOOOMZ1+-=1+++)+)==-----     1OOOOOOOOOOOOOO
+++X+XXXXXXXXX+++X+XXXXXXX+X++XX+++++                      --=-- -   --+-                          ++++++++++++++
+''''''''''''''''''''''''''''''''''''                                                              ''''''''''''''
+....................................                                                               .............
+==-=---------===-=------H=-==--===                                                                  =  ==   ===
+                        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1Z1ZZ1X1-  -  --+)1ZXXAAMMAAAXZXAMOOMZ1++=))===+)+--- -      -OOOOOOOOOOOOOO
+++X+XXX+XXXXX+++++X+XXXXXXX+XX++X++                                   --                          -+++++++++++++
+'''''''''''''''''''''''''''''''''''                                                                '''''''''''''
+...................................                                                                .............
+==-=---=-----=====-=----H--=--==-=                                                                   ===    = =
+                        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=)++=)1A)-   - --11XAOXXMAAAXZ1ZZMOOMOMZ+--+))====-------  -   1MOOOOOOOOOOOO
+X+X+XXXXXXXXXX++XXXXXXX+X+XXX+X++++                     -            -= -                           ++++++++++++
+''''''''''''''''''''''''''''''''''                                                                  ''''''''''''
+..................................                                                                  ............
+-=H=----------==---H--H=-=---=- ==                                                                    =    ==
+  C                C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM----=1Z1-       -11XXMAZZXZXZZ)1)AMOMMXA)--=)Z)=-- - =-- =---  -ZOOOOOOOOOOOO
+++X+X+XXX+++++++++++++++++++++++++                                    -                             ++++++++++++
+''''''''''''''''''''''''''''''''''                                                                  ''''''''''''
+..................................                                                                   ...........
+==-=-=--- === = ====== == ========                                                                    ==  =   =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-- +)AM1= -= - -+Z1XAMMAZAAX1Z)))1AOMMZA1===+11+==-----------   1OOOOOOOOOOOO
+XXXXXXXXX+++X+++X+X+++X+++++++++++-                                   -                             ++++++++++++
+''''''''''''''''''''''''''''''''''                                                                  ''''''''''''
+..................................                                                                  ............
+----H-H--===-== -=-===-======== ==                                                                     ===  = =
+    C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- -1XMM) --=   -)ZZXZAAAZXZZ))==-)1MAZ)1Z=-=+1+===---- --- ---  )OOOOOOOOOOOO
+++XXX+X+X+XXX+XX+XX+XX+++++++++++++                                                                 ++++++++++++
+''''''''''''''''''''''''''''''''''                                                                  ''''''''''''
+..................................                                                                   ...........
+==---=-=-=---=--=-H=--===========                                                                     =  =
+                  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--=1XAX+  -)-  -)X1XZAAAXZ1Z))=--+)XAX))Z)=--=)1)=-=---=-- -- ---OOOOOOOOOOOO
+X+XXX+X+X+X+X++XX+X+++++X++++++++++                                                                 -+++++++++++
+''''''''''''''''''''''''''''''''''                                                                   '''''''''''
+..................................                                                                   ...........
+-=---=-=-=-=-==--=-=====-=  ======                                                                    = =  = ===
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO==)XAX)= --)-- =1XZAZAXAXZZX1)+==++ZAA++==-=-++1)++)++----  --   MOOOOOOOOOOO
+++X+++XXXXX+X+XXXXX++++++++++++++++                                                                  +++++++++++
+'''''''''''''''''''''''''''''''''''                                                                  '''''''''''
+..................................                                                                    ..........
+==-===-----=-=-----====== ========                                                                      ==== =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-+1ZZ+ ---+-  +1ZZX)Z1Z11)+===-+==)Z1+=-=-=--===))1)+---=--- ----MOOOOOOOOOO
+++++++X+X+++++++++X++++++++++++++++                                                                   ++++++++++
+'''''''''''''''''''''''''''''''''''                                                                   ''''''''''
+..................................                                                                    ..........
+== ===-=-=========-====  ==  ==  =                                                                        =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--)Z1Z=  --=- -))ZZ111111)+= ------=+1)- - ------)11++==------- - =OOOOOOOOOO
+X++++XXXX+++X+X+++X+++++++++++++++-                                                                   -+++++++++
+''''''''''''''''''''''''''''''''''                                                                     '''''''''
+..................................                                                                      ...
+-====----===-=-===-=== ===  =   ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+)ZAXZ)---===-=XXAAMMMX1)1+=- --  --+Z)+ ---=--- 1AZ))+=---==--- - +OOOOOOOOO
+XXXXXXXXXXXXX+XXX+X+X+++++++++++++-                                                                    =++++++++
+''''''''''''''''''''''''''''''''''                                                                      '''''''
+..................................                                                                      ..... .
+--------H----=---=-=-============                                                                       =
+        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+1)111+  +=+=-)XAMMAMX11)+=----    --)11- ----   ZAAAZ))-=-==---   -+OOOOOOOO
+++++++X++++XX+++++++++X+++++++++++                                                                      ++++++++
+''''''''''''''''''''''''''''''''''                                                                       '''''''
+..................................                                                                        .....
+======-====--=========- === = = =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO))111)+=--=-++=)AMMOOAXZZ1+--- -- -   =)1+--- -  -XOMXXZ1++--==------ 1OOOOOOO
++X+X+XXXX+XXXXXXXX+++++++++++++++-                   --                              -                   =++++++
+'''''''''''''''''''''''''''''''''                                                                         ''''''
+.................................                                                                         ......
+=-=-=----=--H-----=========== ==                                                                              =
+            C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA++))11+===-=-==+)AAMMMXZ11)+===+=---    =)=- ---- -+1)=)1Z))=====-------+OOOOOO
+++++++XXX+X+XXX+XX++X+++++++++++                                                                          ++++++
+''''''''''''''''''''''''''''''''                                                                          ''''''
+................................                                                                          ......
+======---=-=---=--==-==========                                                                             =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1))+))1)=-=-++)+)1AMOMOAAXZ1)=)1XX1)-   --++------   -   -))1))==-=----  -OOOOOO
+X+++++X+XXXXXXXX++++X++++++++++=                    - -                                                   -+++++
+'''''''''''''''''''''''''''''''                                                                            '''''
+...............................                                                                             ....
+-=====-=--------====-======= =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1))1)1)1+=-====)+ZZMMOOOAMAZ1)=)1MA)=-    -=+=----         =+Z1)))==-==----=MOOOO
++X++++++X++++++++XX+++++++++++=                     ---                                                     ++++
+''''''''''''''''''''''''''''''                                                                              ''''
+..............................                                                                              . ..
+=-=== ==-========--======= =                                                                                =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1111))))==-==)+)1ZAAAOOOMMMZ)++)))++--   - --==--- -        -11Z))+=--==----+OOOO
+++++++++++++++++X+X+++++++++++-                     ---                                                     ++++
+'''''''''''''''''''''''''''''                                                                                '''
+.............................                                                                                 ..
+================-=-===  =====                                                                                  =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZZZZ))++====+1)+1ZMOMOOOOOMX111)==-- -     -=)===--          =)XZZ))=+=----- XOOO
+XXXXX+X+XXXXX+++X+XXX+X++++++-                    - ==+--                                                    +++
+'''''''''''''''''''''''''''''                                                                                 ''
+.............................                                                                                 ..
+-----=-=-----===-=---=-====                                                                                    =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOXAZZ1Z11++=++))Z)))AMOOOOOOOOMZZ)===- -  --  ==)+=--          -==ZZZ1)-==--- - -ZOO
+++X+XXX+XXXXX+X+++X+X++++++++                     ---=--=-                                                    ++
+'''''''''''''''''''''''''''''                                                                                 ''
+.............................                                                                                  .
+==-=---=-----=- ==-=-======
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XXMXX1111+)1ZAMZXAAMOOOOOOOMMAX)+==--- -    -==+)=-           ) -+ZZ)+===------=OO
+++XXXXX+XXX+X+X+X+XXX+XX++++=                     --+==-=                                                     =+
+''''''''''''''''''''''''''''                                                                                   '
+............................                                                                                   .
+==-----=---=-=-=-=---=--====
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOO=1ZOMMXZ1))1ZMMMXXMMMOOOOOMOMOOMZ))=---- - ----+==--             --)ZZ)+=+=------ZO
+++X+XXXXXXXX++XX++++X+XX++X++   -                 --==- - --                                                   +
+'''''''''''''''''''''''''''''
+............................
+==-=--------==--====-=--==-=
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOO=+ZMMMAAZZZZAMMMXXMMAOOOOOOOOOOOMA1)==---- --=))=- -            -++++11)+===-=--- 1
++XX+XXXXXXX++X+++++++++++++++                     ------=-=--
+'''''''''''''''''''''''''''''
+.............................
+=--=-------==-==============
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+ZOOMMMMAMMMOOOAMOOMOOOOOOOOOOOMOX1++-=---==)+)==               1A  111))+--=----
+XXXXXXXXX+++++X+++++++++X++++   --        ---  -- --==+++++=- -
+'''''''''''''''''''''''''''''                           '
+.............................
+----H-H--=====-=========-====
+    C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1OOOMOAAAOOOOOMMAMOOOOOOOOOOOOOOMAZZ1)+++)+==))=-              =---=)Z1))=------=
++X+XX+X+XXX+X+++X+++X+++X+++++  --- -   -----    -----==+++++=-
+''''''''''''''''''''''''''''''                            '
+..............................
+=-=--=-=--H=-===-===-===-====
+          C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZMOOOOMMMOOOOMMOMOOOOOOOOOOOOOOOOOMMXZZ)+-----=--                ZM)+))11+---   -
+X+XXXXXXXXXXX+++X+X+X+++++++++-  ----   --=-  - --===---==+=+=+--
+''''''''''''''''''''''''''''''
+..............................
+-=-----------===-=-=-=========
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOMMMOOOOOOOOMOOOMOOMAXZ1+=--- -+=--               )OOOZ))Z1)==----=
+++X+XXXXXXXXXX+++++++++++++++++=  ===---===---   -=+=---- --- --                                =+=
+'''''''''''''''''''''''''''''''                                                                  '
+...............................
+==-=----H-----============== ==
+        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMOOOOOOMMAZMZ1)+=+-=-- --- --=-                )AOO)+Z1Z1+=-  -
++XXXXXXXXX++X+X+++++X+X+X+X++++++-==++++++=--     =++=--                                          ++
+'''''''''''''''''''''''''''''''''   ' '''                                                         ''
+.................................                                                                 .
+=-H-H-----==-=-=  = -=-=-=-=====
+  C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOMOMOOOOOOMMAZ11+-===-=---- ---==-         -        =)+-)1XZ1+--=-
++XX+XXXXXXXXX+X+X+X+X+X++X+XX++++++++=+++=- - - - +=+=--
+'''''''''''''''''''''''''''''''''''   '             '
+...................................
+=--=--H-H----=-=-=- - -==-=--=====
+      C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1MMOOOOOMMMOMOOOOOOMAAZ1+----------- -----                       -+X11+=-=-
+-+++XXX+X+X+++++++++++++++++++++++++    +=---   - =+++=-
+ '''''''''''''''''''''''''''''''''''                '
+ ..................................
+  ==---=-=-========== ===== =   ===
 MZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO= +ZOMOMMMMAMMOOOOOOMMA1+-=-------- ---  -                        1===+-=---
+  ++X+X+X+++++++++++++++++++++++++++    - -       --+==-
+  ''''''''''''''''''''''''''''''''''
+   ................................
+   =-=-=-=========  = === =====   =
 OX1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO= +ZOOOMMMOAMAOOOOOOOOMX1+-------- -------                   1OOM+OO-=+=---=
++  =++++X+++++++++++++++++++++++++++    ---   -   --++=---                                        ++  ++
+'   ''''''''''''''''''''''''''''''''                                                              ''  '
+.   ................................                                                               .
+     ===-=== ====== === = ===  ====
 OOA)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)--1MOOOOOOOMMOOOOOOOOOMM1)=-----------------   - -         -XOOMZOO-=+===-=
+X+  ++XXXXXXX+X+++++++++++X+++++++X+     ---=---  --+++++==                                       ++  ++
+''  ''''''''''''''''''''''''''''''''                '                                             ''  '
+..  ................................                                                               .  .
+-    =--H----=-===== === =-==== ==-
+        C
 OOO)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX--1OOOMOOOOOMMMOOOOOOOMMX1+=--  ------ ---  -MOOOOMZ=  )XOOMOX)=1OM-===---=
+XX+  ++XXXX+X+XXX++++++++++X++++++++    --- -----   =+++++=                        =+=-       -- -    +
+''    ''''''''''''''''''''''''''''''                                                                  '
+..    .............................
+--    =----=-=---==========-== ====
 OOOO=AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1)-)MMOOMOOMMAAMOOOOOOOOOOA)=-- -    ----    =OOOOOOOOOOOOOOO+  -MO---=----=
++++-  ++++++++X++++++++++++++++++++=      -- --     --====----                    ++++++++++++++-     -
+'''   '''''''''''''''''''''''''''''                                                ''''''   ''''
+...   .............................                                                ..       . ..
+===     ======-======= = ===== = ==                                                           =
 OOOOXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZX)ZMOOOOMOOMMMAOOOOOOOOOOOOZ+=-- ----=  -   -OOOOOOOOOOOOOOOMOOOOA-=++=----
++XX+  ++XXX+X+XXXXX+X++++X++X+X++++      ---- --    -=+++++++==-                  +++++++++++++++ ++++
+''''  '''''''''''''''''''''''''''''                                               ''''''''''''''' ''''
+....  .............................                                                .............   ...
+=-H=  ==H--=-=-----=-====-==-=-====                                                  ==   = ===     ==
+  B     C
 OOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)AOX)XMOOOOOOMOMMOOOOOOOOOOOOM1)=--- -  --   - 1OOOOOOOOOOOOOOOOOOO)-=+===-==
+XXXX+ ++XX+X++XXX+++++++++++++++++=  -    ----=- -  --+==-=---=-                   =++++++++++++++++++
+''''  ''''''''''''''''''''''''''''                                                  ''''''''''''''''''
+....  ............................                                                  ..................
+--H-   =--=-==---===== ====== ====                                                     ==  = =====  ==
+  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOO)ZOOOOOOOOMOMMMOOOOOOOOOOOMAZ+---- -----    +OOOOOOOOOOOOOOOOOO=-====---+
+X+XX+-++XXX++XXX++X+XXXXX+X++++++-  ++=  -++++++= -   =+=--------                   -+++++++++++++++++
+''''' '''''''''''''''''''''''''''                                                    '''''''''''''''''
+..... ...........................                                                     ...............
+H=HH=  =H--==---==-=-----=-=====                                                             = == ===
+C CC    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZOOOOOX1MOOOOOOOOMMMAOMOMMOMAAMOMMAZ+=------   - - -+OOOOOOOOOOOOOOOO===-=---=+
+XXXXX+++X+X+++++++++++++++++++++  --=+=   =-+==---    - -  -    -                     -++++++++++++++-
+''''' '''''''''''''''''''''''''                                                        ''''''''''''''
+.....  ........................                                                         .............
+-----  =-=-===== ===========                                                              = === === =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)XOOOOOMAXOOOOOOOOOOMAZMMMMOMMAAAMAMAZ1)=-   - -   --   -MOOOOOOOOOOOOA==+--- -=+
+++XXX+++++X+++++++++++++++++++   ---=-   -=-==+=+--       -                              ++++++++++++
+'''''' '''''''''''''''''''''''                                                            '''''''''''
+...... .......................                                                            ...........
+==---  ===-=== ==== =========                                                               =   = ===
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZXOOOOOOMZ1ZOOOOOOOOOMMMOOOMOMOMAZMMMAMXX11==--- ----  -  -=OOOOOOOOOOO)===-----)1
+X+XXX+++++XXXXX+X++XX+X+X++++   --=-=-    -++=++++=   --- - -                             -+++++++X++
+'''''''''''''''''''''''''''''                 ' ''                                         ''''''''''
+...... ......................                                                               ........
+H=-HH= ===-----=-==--=-=-====                                                               = === -=
+C  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOA1MOOOOMOAX)1)AOOOOOOOOOMAAAOMMOMAX1Z1XZAZXZX1)==- - -        -)OOOOOOOOM-===---==++
+X++XX+++X+XXXXXX++++++++X+++   ---- -      -+++++++=    -  -                                ++++++++
+'''''''''''''''''''''''''''                   ' ''                                           '''''''
+...........................                                                                  .......
+-==--= =-=------= ======-=                                                                    ======
 OOOOOOOOOOOOOOOOOOOOOOOOOOOZMMOOOMOMOMX111MOOOOOOOOOOMAXMMOMOMA11))1Z1XZX111+=----- -- -    -XOOOOOO+-=---=-==)=
+X+XXX+++XXXXX+X+++++++X+++-   =-- - -      -+=+++++=-     - -                                 ++++++
+''''''''''''''''''''''''''                    ''' '                                           '''''
+..........................                                                                    .....
+-=---= =--H--=-==== = -==                                                                       ===
+          C
 OOOOOOOOOOOOOOOOOOOOOOOOOMZMOOOOOMOMMMZ111XMOOOOOOOOOOAXAAOOMMMX1))+)+))11Z1)++--- --  --     1OOOOM===-----+)ZM
++-+XX+++XXXX+X++XX+XX++++   ====- -         =+++++++=-    --                                   =+++
+' '''''''''''''''''''''''                     ''''''                                            '''
+. .......................                       .                                               ...
+= =--===--H-=-==--=--===                                                                        =
+          C
 )OOOOOOOOOOOOOOOOOOOOOOOOAOOOOOMOOOMAXXXMXMMOOOOOOOOOOAZZXOOOOOAXZ))++)+)1Z1))+==---- - ---    -OOO1+==-===+1ZOO
+ -++++++XXXXX++X++X+X+++- --=+= ---         =++++++++-    -----                                 =++           ++
+  '''''''''''''''''''''                       ''' ''                                             '             '
+  . ...................                       .                                                  .             .
+  =  ===H-H--==-==-=-==
+        C C
 OOOOOOOOOOOOOOOOOOOOOOMZAOOOOOOOOMMAMXAXMMOOOOOOOOOOOOMXZ1AOOOOMA1)=+===))111))++==---- -       +O1==---=-+)1MOO
++++-=++XXXXXX+X+X+++++   ---=----         ++--+++++++=     --=-                                  -            ++
+'''  ''''''''''''''''                          ''''''                                                         ''
+...  ................                                                                                         ..
+  =   =--HHH-=-=-====                                                                                         =
+         CCC
 OOM1XOOOOOOOOOOOOOOOAZXMMOOMOOMMOOMAMXMAOOOOOMOOOOOOOOOMZ11ZOOOOMX1))=+=+)111))+))+-----  -      -=----===)1OOOO
+++   =++XXXXXX+XX++=     -- --  --      =+++- ==++++++-     +=--                                            -+XX
+ '    '''''''''''''                      '''    '''''                                                        '''
+      .............                      ...                                                                 ...
+       =--H-H-=--=                        ==                                                                  --
+          C C
 MX=-)XOOOOOOOOOOOO1)MOMMMOMOOOOMMMMMMOOOOOOOOMMMOOOOOOOM1+==OOOMM11))==-==+))))++))==-----     -- =---=-==)XOOOO
+      ++XXXXX++X+-   -   - -=--      -++++XX+   ++++++-     ++=                                             ++XX
+      '''''''''''                     '''''''       '        '                                              ''''
+       .........                       .....                 .                                              ....
+        --HH-==-                        ==--                                                                ==--
+          CC
 OOM+   MOOOOOOOOMZMMMAMAMMMAMMMOOMMOOOOOOOOOOMAOOOOOOOOMA1=-AOOOMZZ))==-=-=+1))))1)++==----   =+)=----=-+)AOOOOO
+--      +XXX+++-               --  -++X++++X+  -==++==+      ++=                                           +++XX
+        ''''''                      '''''''''     '          ''                                            '''''
+        ......                       ........                                                               ....
+        =-H-==                        -====-                                                                ==H-
+          C                                                                                                   C
 MOOX-  -OOOOOMAZAZXXX1ZZXXAAOMMOOOOOOOOOOOOOOMZMOOOOOOOMM1=-+AOOOAX1)===-===)+)=))))))===- --=Z1)== ----)ZOOOOOO
+ --     +++++               -  --=+++++++++++   --+==-=       ++-                                         ++XXX+
+        ''''                       ''''''''''                 '                                           ''''''
+         ...                        .........                                                             ......
+         ==                         =======                                                                =---=
 AMOOO)- )XX1Z1XZ111ZX1ZXZZAMOOOOOOOOOOOOOOOOOOXAOOOOOOOOOA1)==MOOOX1)=+=++)=++)+))))11)+=-- +1MZ)==-= --XOOOOOOO
+  ==-                       ---=++XX+++++XX+++  --++++++-      ==-                                       ++XXXXX
+                                '''''''''''''      '  '                                                   ''''''
+                                .............                                                             ......
+                                  --=====--==                                                             =---H-
+                                                                                                              C
 Z1OOOO=   +=++))11ZZXXAAAAOOOOOOOOOOOOOOOOOOOOXZMOOOOOOOOMZ1+=)MOMM1Z+++==+=+=1)+)))111==- =1XX)+=-  - =OOOOOOOO
+  -++-                    --++++X+XX+++++++X++   -++++++-       -                                       +++XXXX+
+   ''                       ''''''''''''''''''      ' '                                                 ''''''''
+   ..                       ..................                                                           .......
+   ==                         ==-=--=======-=                                                             =-H--=
+                                                                                                            C
 Z1OOOO1=-++=)=))1ZXZZZMMOOOOOOOOOOOOOOOOOOOOOOMZMOOOOOOOOMA1)+))MMAZX)+===+=+=++))))111)=--+111+-------)OOOOOOOO
+  +++=                  =+++++XXX+X+X+++++++++   -=+++++=                                               ++++XXXX
+   ''                     ''''''''''''''''''''      '                                                   ''''''''
+   ..                     ....................                                                          ........
+                           ===---=-=-========                                                            ===--H-
+                                                                                                              C
 )MOOOO1)++=-))1Z11X1MOOOOOOOOOOOOOOOOOOOOOOOOOOXMMOOOOOOOOM11+))XXXXZ))+++=++=++)+))11Z1+=1)===------ -ZOOOOOOOO
+  +++-               =++++++++X+++++++++++++++-   -=+====-                                              ++++XXXX
+  '''                 ''''''''''''''''''''''''                                                           '''''''
+  ..                  ........................                                                           .......
+                        = ====-===========  =                                                             ==----
 OOOOOOM1)+++11XXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXMOOOOOOOOOMAX1)1ZZAAX11)1+)+)=++))1)1)ZXXAX)=---------1MOOOOOOOO
+=+++++            ++++++++X+++X+++X+++XX++XXX+-  -==++===-                                              -++XXXXX
+ ''''              '''''''''''''''''''''''''''                                                            ''''''
+ ....              ...........................                                                            ......
+  = =                =====-===- ==-===--= ---=                                                            =---H-
+                                                                                                              C
 OOOOOOOMXZMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOMMAXZZZAMAXX11))+)+)+))))1)1ZOO1=+==----- -OOOOOOOOOO
+++++++=      -++++++XX++++++++++X+++++++++++X+= ----+++++==                             --            -==-++XXXX
+ '''''         '''''''''''''''''''''''''''''''      ' '                                                   ''''''
+ .. ..         ...............................                                                            ......
+    =           ====-- ======== -===========-=                                                              --H-
+                                                                                                              C
 AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOMMAXZZAMMAZ11Z1++++=++1)111AOA+----------=OOOOOOOOOO
+ ++++++++++++XX++++XX+++++++++++++++++++XXX++++ -----=+++++-                            -             -=++++--++
+  ''''' ' '''''''''''''''''''''''''''''''''''''       ' '                                                '''  ''
+  ..  .   ....................................                                                            ..  ..
+           ==--====--====== ===== ======---===                                                            =
 OOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOMAXZAAMXAZ111))+)=++)1ZZOOOX=-- ------1AOOOOOO1OOO
+--- - ---=+++++++++++++++++++++++++++++++++X++= - ----++++++--                        -==             +=-=+- -++
+          ''''''''''''''''''''''''''''''''''''        '''                                                     ''
+          ....................................
+            = ============= ============= =-==
 AXMZXXMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOMMOOOOOOOOOMAAXAAAZZZ111)))))1)ZZAOOOOA+=--- --)ZOMOOOOOOZAOO
+        - -===++=-+++++++++++++X++++++++++XX++-  --  -=++++==-                       -=++           = =+=---  ++
+                   '''''''''''''''''''''''''''          ' '
+                    ..........................
+                    ===========-==========--==
 XZXZX1XXAAXXAMMAMA)-=ZOOOOOOOOOOOOOOOOOOOOOOOOOMOMOMMOOOOOOOOOOOMAAXX1XX11Z11)11XXMMMOOOOA)+)=--+XOOOOOOOM=1- AO
+                      ++++++X+++++X+XX+XX+XXX++ - -  ---+++++=--                     -++=         =--==++      +
+                      ''''''''''''''''''''''''          ''''                          ''               ''      '
+                      ........................                                         .
+                        ====-=====-=--=--=---=
 XZAZZZAAZZXZAZX1ZZXX)--=MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZZ1)ZZZ1ZZ111)ZXMOOOOOO1-)OOOOOOOMMOOOOOMX)--Z
+                         +++++X+++X+++X+XXXXX+X++++++++--=+++==-                   -=++++   =-==-=+  =+=+=
+                          '''''''''''''''''''''''''''                                 ''
+                          ......................  ..                                  ..
+                             =-===-===-=-----=-=
 MMMMMMMMOOMOMMMMX1Z1)+= --)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAZ1ZZ111Z1ZZZ1AMOOOOOOO1-ZOOOOXXOOOOOOOOMA)-
+        -- -                +++X++X+XXX+XXX+++++-+++++++++++++==                  -=+++++   ++++  ==+++---
+                            ''''''''''''''''''''  '''''''''                         ''''    ''''      '
+                            ....................  ......                            ....    ....
+                             ==-==-=---=---====    =                                  ==      =
 OOOOOOOOOOOOOOOOA1)=+=--    )OOOOOOOOOOOOOOOOOOO)AOOZMOOOOOOOOOOOOOOAZ11Z1ZZAZAZMOOOOOOOOM=1OOOOOMOOOOOO1MM1=
+-=----+++++++++-             -+++++++++++++++++-  +=  ++++++++++++=-             -++++XX+   --++= +++++=
+        '''' '                '''''''''''''''''   '   '' '''''''''                '''''''     ''    '''
+                              .................       .   .......                  ......     ..
+                               ======== =======                                     ==--
 OOOOOOOOOOOOOOOOOM1))+=--     OOOOOOX+=-XOOOOOOOMOOOOOOO)AOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOO1OOOOOOOZOOOOOZZX=--
+++++++++++++++++=             -++++-     +++++X- =++-+++  ++-=+++++++++++- -====++++++XX+- -=-+++= -+=--
+''    ''''''''''               ''''       '''''   '   '   '   '''''''''         '''''''''     '''
+..    .........                 ...       .....   .   .       .......           .........     ..
+        =====                   =         ====-               = == =             =====H-=
+                                                                                      C
 OOOOOOOOOOOOOOOOOOOOZ1)== - - -11=       -AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMOOXZAZ)-
+++++++++++X++++++++-                       =+++==++++++++=++=++++-++++++X++++++++++++++X++-++++=++  ==
+''''''''''''''''''                          '''   ''''''' '' '''  ''''''''''''''' '''''''' ''''
+..................                          ...     .....     ..  ............... ... ...  ...
+    = ====-====                             ===       ==       =      ==-==    =      =-=   ==
 OOOOOOOOOOOOOOOOOOOOOMMXZ))=1ZZZ            )MOMOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOAXOOOMMMO1=--
++++XXXXXXXXX++++++++=                         + -+=  =+=--++++++=-++=-+++++=++++= ++++++++++++  ===   -
+''''''''''''''''''''                          '       '   ''''''  ''  ''''' ''''   '' '''' '''
+...................                                       ......  ..  ....  ....   .. .... ..
+= =-H-H-HHH-=====                                          = ==       ===   =         ===
+    B C CCB
 OOOOOOOOOOOOOOOOOOOOOOOOOOMAZ1Z=              +)OOOOOOM)XOOOOOOOZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1ZA+
++XXXXXXXXXXX++XXX++++++++-                      -++=+=   =+++++-  ++++++++=++++++=++++++X+--+++-++--
+'''''''''''''''''''''''                                   '        '''''''  ''''' ''''''''  ''
+..................... .                                   .        .. ....  ...    .......  ..
+=-HHHHHHHHHH==HH-===                                                  ====          === -=
+  BBBBBBBBBB  CC
+   VVVV  VVV
+    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM=               -1ZMZ1++1MOOZ=------=ZOOOOOOOOOOOOOOOOOOMOOOOOOOOOOMOMX1-  --   -
+XXXXXXXXXXXXXXXXXXXX++++++++=                            -=          -+++++=++++=+++++= +++++++++- -
+''''''''''''''''''''''''''''                                           '''' ''''  ''''  '''''''
+...........................                                             ..  ...   . ..  .. .
+HHHHHHHHHHHHH---HHH-=== ===                                             =            =   =
+CBBBBBBBBBBBB   CBB
+  VVVVV   VV      V
+     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=               -- =---------- ---- -==))OOOOOOOOZOOAOOOOOOOOOOOOM1MOMZ  -----
+XXXXXXXXXXXXXXXXXXXX++++++X+++-                                         +++-+++= -= ++++++++++++   -
+''''''''''''''''''''''''''''''                                          '''  ''      '''''''' '
+..............................                                           ..   .      ..   ..
+HHHHHHHHHHHHHHHHHH--  ====-=                                             =
+CBBBBBBBBBBBBCCCCC
+  VVV   V   V
+   AA
 OOOOOOOOOOOOOOOOOOOOMOOOOOOOOOM-             -=---- --= --- - ---------=OOOOOOOOOOOOOOOOOOOOAAOOOMMM1-- -----
+XXXXXXXXXXXXXX+XX+++ =+++XXX++                                          --+-++++=++-++++-=++  +==
+''''''''''''''''''''  ''''''''                                               '''  '  '''  ''
+....................  ........                                                .      ..   .
+-HHHHHHHHHHHH-=-H==    ==-H-=
+ CBBBBBBBCBBC   C         C
+  VV
 OOOOOOOOOOOOOOOOOOOOOZMOOOOOOOOX=--        -=---- - -==-- --   -- ----  ++))OOOOOOOOOOOOAOOOOOOOOOMZ------- -  -
++XXXXXXXXXXXX+X+XXX++  ++XXXX++                                             -=++==++++++ -++=-=---
+'''''''''''''''''''''  ''''''''                                                   ' ''''  ''
+....................    ......                                                    . ...   ..
+=HHHHHHHHHHHH=-=---=    =-HH-=                                                        =
+ CBBBBBBBBBCC             CC
+  VV    V
 OOOOOOOOOOOOOOOOOOOOOOX-MOOOOOOOOO=-=-     ---- - -  ------       - --- ==)+AOOA1MOOOOOOOOOOOOOOOOZ+- =-----  --
++XXXXXXXXXXXXXXXXXXXX+   ++XXXX++-                                           -=   ++-=+++++++++++-
+''''''''''''''''''''''   ''''''''                                                 ''  ''''''''''
+......................   ........                                                     .........
+ -HHHHHHHHHHHHH----HH=    =-H--=                                                      =
+  BCBBBBBCCCCCC    CB       C
 OOOOOOOOOOOOOOOOOOOOOOOO11OOOOOOOOAAOZ        ----- ==--=-   - -- -  ----=+=1AOOOOOOOOOOOAAXA1Z1+- -+==-
+=+X+XXXXXXXXXXXXX+XXXXX+  =+XXXX+-  +                                         +-==++--++-
+ '''''''''''''''''''''''   ''''''                                                 ''  '
+ .......................   ......                                                 ..
+ =-=HHHHHHHHHHH--=-HHHH     -HHH=
+    BBBCBBCBBCC    CBBC      CCC
+                    V
 )MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-   -    =+)=- - ---   --   -  -- --===+1OOOMOOOOZ)- - - -----=+--- --   --
+  -+XXXXXXXXXXXXXXXXXXXX++-=++XXXX++                                          -=- +++-
+   '''''''''''''''''''''''  ''''''''                                              '''
+   ......................   ........                                              ...
+   =-HHHHHHHHHH-H-HHHHHH=    =HHH-==
+     CBCBCBCCCB C CCBBBB      CCC
+                    VVV
 =)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+ - -- -=+)++--  ----    --  ---=-- ----+)AOOMOOA=-      ------==-- - -- ---
+   +XXXXXXXXXXXXXX+XXXXXXXX+++++XXX+                                           +- ++
+   '''''''''''''''''''''''''' ''''''
+   .......................... ......
+    -HHHHHHHHHH-H-=HHHHHHHH=   =HHH
+     BBCBCBCCCC C  CBBBCCCC     CCB
+                     VV
 -+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX------  -==---=--     -   - -- -       --=)MOA1+     ------ - ----      --==
+   +XXXXXXXXXXX+X+XXXXXXXXXXX++++X+                                             -
+   '''''''''''''''''''''''''''  '''
+    ..........................  ...
+    -HHHHHH-HHH=-=--HHHHH-HHH=  =H=
+     CBCBCB CCC     BBBCC CCC    C
 1XXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO---==)-   =+- -1+-      -    -- -    --==+1ZX+1X=-   ---- -- -  -=-- - -- --=
+   +XXXXXXXXXXXXX++XXXXXXXXXXXX+++=
+    ''''''''''''''''''''''''''''''
+    ..............................
+    -HHHHHHHH----==HHHHH--HHHHH= =
+     CCBBBCCC      CBBBC  BBBBB
+                     VV    VVV
 )Z1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+=-=++- -==+-ZXZ+---   -----   ---  - -=+ZZZ))Z)---  -      -    =-   --  --+
+    +XXXXXXXXXXXX+XXXXXXXXXXXXXXXX=
+    ''''''''''''''''''''''''''''''
+    ..............................
+    =-HHHHH--H---=-HHHHH--HHHHHHH-
+      CCCCC  C     CBBBC  CCBBBBC
+                     V       VV
 )))+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)+-=+===+ZZZXMA+-- -------     - --   ---)ZX1+)=-------=   ---   =---   ---=)
+    +XXXXXXXXXXXX+XXXXXXXXXXXXXXXX=
+    ''''''''''''''''''''''''''''''
+    ..............................
+    =-HHHHHHHHH--=-HHHHHHHH-HHHHH-
+      CCBCCCCCC    CBBBBCCC CBBBB
+                    VVV       V V
+                                A
 )+- OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=++))))1)ZZMOO)-     -- -- -     ----  --=ZO1+--   --=---  -   - +-=-- ==+===
+    ++XXXXXXXX++X+XXXXXXXXXXXXXXX+             --                             -
+     '''''''''''''''''''''''''''''
+     ............................
+     =H-H-H---==- -HHHH---H---HH-
+      C C C        CBBB   C   BB
+                    V
 )=+-1OOOOOOOOOOOOOOOOOOOOOOOOOOOM===+)Z)+)++))1ZZ)=--- - -------- - -     --ZAM1-------=+==-==+-=-=-==---=+=+++)
+     +++++++++++++XXXXX++X+++XX+
+      ''''''''''''''''''''''''''
+      ..........................
+      ===  =  ==  HHHH-==-===HH=
+                  CBBB       CB
+                    V
 1))---ZXAAOOOOOOOOOOOOOMOOOOOOOO1====+1+-=11))))))=- -- -- -  -----    - ---)1Z)- ----+)Z))+++)++=====----=-+)))
+          ---=+=++XXXX+ -+++XXX+
+                 ''''''   ''''''
+                 .....    ......
+                 =HHHH    ==HHH=
+                  CBBB      CBB
+                    V         V
 1=++=-ZAAXMAMOOOOOOOOOX)ZOOOOOOO+=  - ----11)+1)+==  ---------------   - ---=)1+- =--+ZAX1Z11)1))++=+=------==1)
+             =--++XXXX   -++XXX+
+                ''''''    ''''''
+                ......    ......
+                ==H-H-    ==HHH
+                  C C       CBB
+                              V
 X++)1=ZOOOMX1=+OOOOOOO1ZMMOOOOOA-    ---- =+)))=+==-- ----===-=----     ---+1ZZ=  ---+AX1)+))----=+=+==-----1++)
+       ---     =++++X+    +++X+
+                '''''     '''''
+                .....     .....
+                === H      ==-=
+                    C
 OM1)1)=ZOOMX1=ZOOOOOOOMAXXOOOO1-     -  - ++)1Z))=--==--=---=-- ---  -  -==+XAA+- --)1M1+-=--- ---)=-==-=---==++
++       ==     -++++++    ++++
+                 ''''     ''''
+                  ...      ..
+                  ===      ==
 OOM11+=-MMZ==+AMOOOOOOA1ZAMOM=-     -- ---++)1Z11+--=--------==--        =))XMMZ++1ZXAX)-----  ---=-----+)+)+=+=
+++              -++X+=     =
+''                '''
+.                 ...
+                  =-=
 OOO1=-+)ZZZ)XZXMOOOOOOXXOMMX=       - --  --=-+==----====----=--------  -=ZXMOMOZZMOOMOZ)=--= - --------=+)1)--+
+++-             -+X++-  -                                                    - -   -- -
+''               ''''
+.                ...
+=                 -=
 OOOMZ-1A)1XZAAMMOOOOMZMMOMM1        - -------===+=----++==-=------- -    -AOOOOOOAOMOOOOA)=-)=----=-=-=-==-=)+11
++++             ++++    -                                                  -=++-- - --==
+'''              '''
+..               ...
+                 ==
 OMOMMZX111XAAAMOOOOOOMOOOOX=-  -      -=+=----+-=---=-1))===- --=---------MOOOOOMMMMOOOOOM)=11+-=-=--=--+=--=+)X
+- -            -+++=- ----                                                 ++++=    --=--
+                '''                                                         '''
+                ...                                                         ...
+                =                                                            =
 MAXAMXZ1XAMMMOOOOOOOOOOOOOO+-       --=-=---)))+----=-===---=------ ----==OOOOOOOMOMOMOOOOM1))Z))===+=- -=-----)
+             -+++++=+++--+-                                               -++++=- - - ----
+              ''''    '                                                    ''''
+              ....                                                         ...
+               ==                                                            =
 OMMMOOOMOOOOOOOOOOOOOOOOOOO+-   -   ---=)=--)))+--=-=------ ---------====+OOOOOOOOMMMMOOOOOZ)1AZ)=-=+===+--==-=+
++   --- =+++++++++=++++=++-                                               =++++---    -----
+'         ' '''''   ''' ''                                                 '' '
+            .....   ...                                                    ..
+              ==     =
 OOOOOOOOOOOOOOOOOOOOOOOOOOA    --- --=+)1+=)Z)+===-- -==)=-------==-=+)+ZAOOOOOMMMMZZZOMOOM11AOM)=+===++)=--=-=)
++++===++++XXXX+=-=++++++++                                                +++-=       - --    -
+'''   '''''''''   ''''''''                                                ''
+..     ........   . ... ..
+ =      ==--H-       =
+            C
 OOOOOOOOOOOOOOOAMOOOOOOOOO--- --+=-===++)+))+=++--- - -=Z1=--- -===-)1AZMOOOOOMXAAMZ))ZZMOMAXAOM+==-=-)Z)- ==---
+++++++++XXXXX+-  -++++++X+                                               ++++-           -    -
+''''' ''''''''    ''''''''                                               ''''
+...   .......     ........                                                ..
+       =-HHH-       = ==-                                                 ==
+         CCC
 OOOOOOOOOOOOOA11MOOOOOOOOO-   -+1Z= --)+)== -=))+-- -  -11)=  ---+)+AMOOOOOOOOMXAMMA)=)1AOMZAOMO)==-+-)Z) -++=-+
++++++-++XXXX+    =+++++XX+                                            +++++X++           -   - -
+'''   '''''''     ''''''''                                            ' ''''''
+..    .......      .......                                              .....
+        H-HH         ==--                                                ==-=
+        C CC
 OOOOOOOOOOOOA1ZZMMOOOOOOOO-   -+AM)---++)=- --)1)-- -  ---+---  -=OMOOOOOOOOOOMZMAOM)+)1XOMXMAMOX+=+-=))+--+= +)
+++++++++-=++      -+++++X+                                        - -+++X+XXX+    -      -     -
+'''''''   ''        '''''                                             ''''''''
+.....                ....                                             ........
+= =                   ==-                                             = -=H--
+                                                                          C
 OOOOOOOOOOM111XXMMAAOOOOOZ     -1X)- -==+=- --)ZA)= -    -=--  ---OOOOOOOOOOOOX1AMOMM1Z11AMXAMOMMX)+==1)++-+=-=)
++++++++++=          -=+++                                         =+++XXXXXXX+    -           -
+''' ' '''             '''                                          '''''''''''
+  .   ..              ...                                          ...........
+                                                                     =-HHHHHH
+                                                                       CBBBBC
 OOOOOOOOOOOXXAMMMMMZAMOO1       +AZ=--=--=- --=)Z1+-- - - -------=OOOOOOOOOOOOAZOMMOOAAAZZOMMMMMOA)=+1Z1111) -+)
++++=+++XXX+           --                                          ++XXXXXXXX++  -  ++     =     -
+''    '''''                                                       ''''''''''''
+.     ....                                                         ...........
+=     =-H-                                                         =--HHHH--=
+        C                                                             BBBB
+                                                                        V
 OOOOOOOOOOO1XAOOOOMAOOOOX-      1AZ===))+==---=====--   - - --=- -OOOOOOOOOOOOOAOOOOOOOOMAOOOOMXM1+-+1X11)1+===1
++=--+++XXX+   =-=-  -=+=                                          =+XXXXXX++++- ==+++=--  --=-
+'    '''''                                                         '''''''''''     ''
+.     ....                                                         ...........      .
+      =HHH                                                          HHHHHH=
+       CBC                                                          CBBBBB
+                                                                      V V
 OOOOOOOOOOM1XMOMOMOMOOOO1-     -ZZ=-++1))==---==+---- -- -==++)==-1OOOOOOOOOOOOOOOOOOOOOOOMMMX)1MX+-++1==+))+)+)
++=-=++XXXX    = - - ++++                                           =XXXXXXX+++=-==+++=+---
+'   ''''''          ''''                                            ''''''''''    '''
+.   ......           ...                                            ........       .
+      -HH-            ==                                            -HHHHH-=
+       CB                                                            BBBBB
+        V                                                             VVVV
 OOOOOOOOOO))ZAOMOMOOOOOO-      -+)+-+=)---=----)Z+--- --  --)+Z1))XAOOOOOOOOOOOOOOOOOOOMOOOOX11)AAX1=-++)+))==+)
+++++++XXX+    - - --+++-                                            +XXXXX+++++-=++++=+ =---
+'' ''''''           ' '                                             ''''''''''    '''
+.   .....           .                                               .........     ..
+    ==-HH                                                            HHHHH=
+       CC                                                            CBBBB
+                                                                      VVV
+                                                                        A
 OOOOOOOOOMZZAOOMMMMOOMA+-       +1)=--==--+==---11=-=    - -=)MOMMOOOOOOOOOOOOOOOOOOOOOMOOOOOOOXOOMX)-)1)===+==+
+++++++XXX    --    -+                                          -  ++++XXXX++++++++++++- ==-==-- -=
+'''''''''           '                                             ''''''''''''  ''''''
+.........                                                          ...........   ....
+  ====-HH                                                           ==HHHH==      ==
+       CC                                                             BBBB
+                                                                       VV
+                                                                        A
 OOOOOOOOOMXMMOOOOOMZ1+=--   -   )Z1=++++=-===---11+-=-  -  -=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMOOMOM1-=+)=- )1+)
+++++++XX+    =+---                                            -++++XXXXXXXXX++++++++++-=++= =- -- =
+'''''''''     '                                                '''''''''''''''''''''''
+.........                                                      .......................
+ = ===-H=                                                       = =-HHHHHH--==    =
+       C                                                            BBBBBB
+                                                                    V VVV
+                                                                        A
 OOOOOOOOOOAMOOOOOOOO+ - -      -+=)==++++=--  - )))===-   - -=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMX+===== )1))
++++++++X+-  =++++++-                                          ++XXXXXXXXXXXX+++++++++++++++=+=-- -+
+'''''''''     ' '                                              '''''''''''''''' ''''''''''
+.........     .                                                ...............  ..  ..  ..
+  = = =-=                                                      =-HHHHHHHHH--=
+                                                                 BCCBBBBBB
+                                                                    VVVVV
+                                                                      A A
 OOOOOOOOOMAAOOOOOOOO)-- -     --+))=---=1+- - - --+=----  ----OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOOXA+==----===+
++++++++XX   =+++++++                                          ++XXXXXXXXXXX++++++++=+++++++++-   --
+'''''''''     ''''''                                          ''''''''''''''''  ''' ''''' '''
+  .......     .                                               ...............         ..  ..
+      =H-                                                      =HHHHHHHHHH-=
+       C                                                        BBBBBBBBBC
+                                                                  VVVVVVV
+                                                                     AAAA
 OOOOOOOOOOXAOOOOOOOO)  -- -   --))+-=--=1)----=---=---     ---OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1ZXMXX1++1-====--
+++++++XXX-  -+++++++                                          -+XXXXXXXXXXX+XX+++++=+++=++++++-
+  '''''''     ' ''''                                           '''''''''''''''''''' ''  ''''''
+   ......       ....                                           ....................     ......
+     =-H-                                                      =HHHHHHHHHH-=HH=          ===
+       B                                                        CCBBBBBBBC  CC
+                                                                   VVVVVV
+                                                                    A A A
 OOOOOOOOOMXXOOOOOOOOM-- -- -=-=-=-- =-=-++=-  ----==---- - ---+1MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXXZO1)+--+=-==-==
+==-+++XXX   --+=++++                                              ++++XXXX+XXXX++++-----++++++=   -
+    '''''       ''''                                               ''''''''''''''''      '''''
+    .....        ...                                               ................      ..
+     =HH-         ==                                                 =HHH-=-HHH===
+      CB                                                              CCC   BCC
 OOOOOOOOOMZ1MMOOOOOOO= --- -+=--  -=1++=++=---==----- - -  -- =))--=)11XOOOOOOOOOOOOOMOOOOOOOOOAZAOX+=---===)))+
+=--=++XX+     =-=++++                                                   --+XXXXXX++=- +-++++=--   =
+    '''''        ''''                                                     '''''''''       ''
+    .....         ..                                                      .........        .
+    ==HH=         ==                                                       -HHHHH=
+      BB                                                                    BBBCC
+      VV                                                                      V
 OOOOOOOOOM1)Z1MAMOOOZ     ---==   ==+++++++----==----- ------ --XMM+--=)OOOOOOOOOOOAMOMMOOOOMMMX1AOA++ZZ1=+11)Z1
+=-+++XXXX        -=-                                                    +=+XXXXXX++  -  =--+      -
+   ''''''                                                                 ''''''''
+    .....                                                                 ........
+    =HHH-                                                                 =-HHHH-
+     CBB                                                                    BBBB
+      VV                                                                     VV
 OOOOOOOOOO1)11AOOO+--      -==- - --++)++++-----+=----  ----- - -)OOOA)+MOOOOOOOOOOOOOOOOMOOOOA)ZMOM1)XZ1+=-==++
+++++XXXX+-     ---                                                -==    +XXXXXXX++-=++-- +---    =
+'''''''''                                                                ''''''''''
+.........                                                                ..........
+ == HHHH=                                                                =HHHHHH-
+    CBBB                                                                  CBBBBC
+     VVV                                                                    VVV
 OOOOOOOOOMZ1ZZMOOO-       --=-  - --111)+=== -- -------  ------ ==1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOXZMOM1ZAZ1=)---++
+++++XXXX+      ++-                                                  =+X+XXXXXXXXXX++++++==+=++-   -
+'''''''''       '                                                    ''''''''''''''''''     '
+.........       .                                                    ..................
+= ==HHHH=                                                            =-=-HHHHHHHHH= = =
+    BBBB                                                                 CBBBBBBBC
+    VVV                                                                   VVVVVV
+      A                                                                    AAAA
 OOOOOOOOOOMXAXOOOZ      ------- - --ZAA1)-+=------=--- - - -======)ZZOOOOOOOOOOOOOOOOOOOMMOOOOOM1MOZXAXAM)11+-11
+++XXXXXX++    -++                                                    =XXXXXXXXXXXX++++++  --=-=   -
+'''''''''       '                                                     '''''''''''''''''
+.........                                                             .................
+==-HHHHH=                                                             HHHHHHHHHHHH=====
+   CBBBC                                                              CBBBBBBBBBBC
+     V                                                                  VVVVVVVVV
+                                                                        AAAAAAAAA
 OOOOOOOOOOMAMMOOOA    ----==----- --)ZXZ)=)---= -== - - ----)1)++=)1XOOOOOOOOOOOOOOOOOOOOMMOOOOMOZ+=1Z1XOX+)))1Z
+++XXXXXXX+    -++                                                    -XXXXXXXXXXXXXXXX+--  ---- -       -
+''''''''''     ''                                                     '''''''''''''''''
+..........      .                                                     .................
+==HHHHH-H=                                                            -HHHHHHHHHHHH---=
+  CBBBC C                                                              CBBBBBBBBBBB
+    VV                                                                  VVVVVVVVVV
+                                                                        AAAAAAAAA
 OOOOOOOOOOOOMAOOO=    ----=1+=--- -=11Z1+)+=- ----==- ----  -)A))1AMOOOOOOOOOOOOOOOOOOOOAZZMOAXMO111XZ+1)1)++=)1
+XXXXXXXXXX+-  +++                                                   ++XXXXXXXXXXXXXXXX+-    -   -
+'''''''''''    ''                                                   '''''''''''''''''''
+...........    .                                                     ..................
+--HHHHHHHH=                                                          =HHHHHHHHHHHHHHH-
+  BBBBCCBB                                                            CBBBBBBBBBBBBBB
+   VV   V                                                               VVVVVVVVVVV
+                                                                          AAAAAAAA
 OOOOOOOOOOOOOOOOX-  - +)=-++=-=-------=+1)+-----  -=- ----- --MMZXOOOOOOOOOOOOOOOOOOOOOOA1XMOZMOO1)=)1)==+)1)==)
+XXXXXXXXXXX+-+++                                                  =++XXXXXXXXXXXXXXXXX++    -  --
+'''''''''''' '''                                                    '''''''''''''''''''
+...........   ..                                                    ...................
+HHHHH-HHHH-   ==                                                    =-HHHHHHHHHHHHHHHH=
+CCBBC CBBB                                                            BBBBBBBBBBBBBBBB
+  V                                                                    VVVVVVVVVVVVVV
+                                                                        AAAAAAAAAAA A
 OOOOOOOOOOOOOOOO= --=-+)==1)=-+-----  -+)=---=--  -=- -----  -OOAOOOOOOOOOOOOOOOOOOOOOOO)=1XAXMOOA1++)+-=++++1Z1
+XXXXXXXXXXX+XXX+                                              =+ -+XXXXXXXXXXXXXXXXXXXX+       =-
+''''''''''''''''                                               '  ''''''''''''''''''''''
+................                                               .  ......................
+HHHHHHHHHHH=-HH                                                   =-HHHHHHHHHHHHHHHHHHH
+BBBCBBBBBBB  CB                                                     BBBBBBBBBBBBBBBBBBB
+V V   VVVV                                                            VVVVVVVVVVVVVVVV
+        AA                                                            AAAAAAA AAAAAAAA
 OOOOOOOOOOOOOOOO=   -+))++111+++- - - -))-==------------== =- AOOOOOOOOOOOOOOOOOOOOOOOOO)===1MOOOMAZ+)1+-+)--+++
+XXXXXXXXXXXXXXX+                                               +++XXXXXXXXXXXXXXXXXXXXX+      =+=
+''''''''''''''''                                               '''''''''''''''''''''''''
+................                                               . .......................
+HHHHHHHHHHHHHHH=                                                  HHHHHHHHHHHHHHHHHHHHH=
+BBBBBBBBBBBBBBB                                                   CBBBBBBBBBBBBBBBBBBBB
+  VVVVVVVVV VVV                                                     VVVVVVVVVVVVVVVVVVV
+     AAAAAA                                                           AAAAAAAAAAAAAAAAA
 OOOOOOOOOOOOOOOO -- -=))Z1XZZ11)=---- -+X)=-- ----------===11=ZOOOOOOOOOOOOOOOOOOOOOOOOO)=+=+AOOOMAX+)1+==))=+)+
+XXXXXXXXXXXXXXX=                                               =++XXXXXXXXXXXXXXXXXXXXXX      =--
+'''''''''''''''                                                 ''''''''''''''''''''''''
+...............                                                 ........................
+HHHHHHHHHHHHHH-                                                  =--HHHHHHHHHHHHHHHHHHH-
+BCBBBBBBBBBBBB                                                      BBBBBBBBBBBBBBBBBBB
+   VVVVVVVVVV                                                       VVVVVVVVVVVVVVVVVVV
+        AAA A                                                       AAAAAAAAAAAAAAAAAAA
 OOOOOOOOOOOOOOO1-  -=+)=1XOAZ11+==---  -Z)=-  --- ------++)MOMZMOOOOOOOOOOOOOOOOOOOOOOOOM-+1XZOAZ1MOAXX+-=-=+=-)
++XXXXXXXXXXXXX+           -                                 +   +XXXXXXXXXXXXXXXXXXXXXXX      -    -
+''''''''''''''                                                  ''''''''''''''''''''''''
+..............                                                  ........................
+=-HHHHHHHHHHHH                                                  =HHHHHHHHHHHHHHHHHHHHHHH
+  CCBBBBBBBBBB                                                   BBBBBBBBBBBBBBBBBBBBBBC
+     VVVVVVVV                                                     VVVVVVVVVVVVVVVVVVVVV
+          A                                                         AAAAAAAAAAAAAAAAAAA
 OOOOOOOOOOOOOOM-  --1+=-1XOOX+++)---    ===-  ----- =  -+)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-=ZZMZ=)MMOAZ)--=-=---
+--==++XXXXXXXX            --                               +XX+=+XXXXXXXXXXXXXXXXXXXXXXXX-          -
+    ''''''''''                                             '''' '''''''''''''''''''''''''
+    ..........                                             .... .........................
+    ==HHHHHHHH                                              --  =HHHHHHHHHHHHHHHHHHHHHHH-
+      CBBBBBBC                                                   CBBBBBBBBBBBBBBBBBBBBBB
+        VVVVV                                                     VVVVVVVVVVVVVVVVVVVVVV
+          AA                                                      AAAAAAAAAAAAAAAAAAAAA
 AZAXX1XAOOOOOO1-- --)- -111+)+--)+---   ----  -   - ----)1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-=1MX-=XAX1X1+=--=---
+        =+XXX+                                            ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+         '''''                                             '''''''''''''''''''''''''''''''
+         .....                                             ...............................
+          -HH                                              =HHHH--HHHHHHHHHHHHHHHHHHHHHHH=
+           BC                                               BBBC  BBBBBBBBBBBBBBBBBBBBBBB
+                                                                  V VVVVVVVVVVVVVVVVVVVV
+                                                                    A AAA AAAAAAAAAAAAA
 MZAZXZX11)ZMOM=-+=--=--=1+  --=-))=-  ----=--     --=- -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)1ZMMAXAAX1+=+=--+--=
+            -                                            -++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+-
+                                                          ''''''''''''''''''''''''''''''''
+                                                          ................................
+                                                            HHHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+                                                            BBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                             V    V V V V VVVVVVVVVVVVVV
+                                                                                    AAAA
 X111ZZAX1))1XZ=-----= ------=)AZ1))-------=-- - -----===AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAAZMOA1)))=++1)-=
+                                                         -++++++++++++X+XXXXXXXXXXXXXXXXX++--      -
+                                                          '''''''''''''''''''''''''''''''''
+                                                           ................................
+                                                            ==========-=----H-HHHHHHHHHHH=
+                                                                            C BBBCBBBBBBB
+                                                                                    VVVVV
+                                                                                      AA
 1+)1AXX11)1XZ)--- ---   -==--)A1)+)==-----=--- -  --====OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMAMOOZXX+-=))+=)
+                                                        -=+++++++++++++++++XXXXXXX+XXXXXX+++==     --
+                                                          ''''''''''''''''''''''''''''''''''
+                                                          .................................
+                                                            =  ===  =======-HHHHH-=-HHHHH=
+                                                                            CCCCB   BBBBB
+                                                                                     VVVV
+                                                                                      AA
 OMAAAZXZ))1)+-  -  ----+Z1=--++++=)=--==----=--- ---+-=+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXXZAA1+=---11))Z
+-                                                       -+++++++++++++++++++XXXXXX++XXXXX+++++-
+                                                         '''''''''''''''''''''''''''''''''''''
+                                                          ...............................  ..
+                                                            =  ===        ==HHHHH-==HHHHH  =
+                                                                            CCCCB   BBBBC
+                                                                                     VVV
+                                                                                      AA
 MOOOOOOAZ))+=-     ---+=)))++=++=-)==-11-==------ -=+=1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMMAZ))ZZ+--))+)Z
+ =+X+=-                                                 +++++++++++++++++++XXXXXXX++XXXXX+=+++
+  '''                                                   '''''''''''''''''''''''''''''''''   ''
+  ...                                                    ..  ............................   .
+  =-                                                            ===      ==-HHHHH-==HHHH-
+                                                                            CCCCC   CBBB
+                                                                                     VVV
+                                                                                      A
 MMOOOOOOOOOZ=-    - =-====+)=-==--==--Z1------= ---=)1ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMX11MMZ+++--=X
+  +XXXX+++-                                             +++++++++++++=++++X+XXXXX+++XXXXXXX+=++-
+  ''''''''                                              '''''''''''   '''''''''''''''''''''' ''
+  .......                                                .........    ...................... .
+   HH--==                                                      =         =-=HHHH-===HHHHHHH=
+   CB                                                                       CCBC    CBBBBBB
 AOOOOOOOOOOM--  -- -+=+==-+=-----====+)+------------1ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAXAXMMZ11)))--1X
+ -+XX++XXX+                                             +++++++X++++++++XXXXXX++++++++++++X+++=
+  '''''''''                                             '''''''''''  '''''''''''''''''''''''
+  .........                                             ...........  ............ ..........
+  =HH==-HH                                                === =-==    = -HHHHH==       ===-=
+   CC   CC                                                               CBCBC
 1MOOOOOOOO)-    -=----  =---------)=-+++===--====--=XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)1+1)+1AAX1XAZ))=-=-=AX
+  +X++++X+                                            +++++++++XXXX+++++XXXXXX++++++++++
+  ''''''''                                            ''''''''''''''''''''''''''''''''''
+  ........                                            ....... ...... .............    .
+  =-  ==-=                                              ===   =-HH-=  ==HHHHHH==
+                                                                BB      CCBBBB
+                                                                          VVV
 ZOOOOOOOOX-     --=---)11=----- - )+--))===- -++)=++AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1)))11X1-=ZXZ11=)-==MM
+ -+++++X+                                            ++XXXXXXXXXXXXXX+X+XXXXXXXX++++++++
+  '''''''                                            '''''''''''''''''''''''''''''''''''
+  .......                                             .................................
+  == ==-=                                             =-HHHHHHHHHHHH-=-=--HHHHH-= ====
+                                                        BCBBBCBBBBBB      BBBBB
+                                                                            VV
+                                                                            A
 AMOOOOOOO-   --=---+==1)+++--- -=-==--==+--=--=)XX)1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ+==+)))+=11Z)111===XA
+  +++++++                                           ++XXXXXXXXXXXXX+XXX+++XXXXXXXXXX++++-
+  ''''''                                             '''''''''''''''''''''''''''''''''''
+  ......                                             ...................................
+  =   ==                                              HHHHHHHHHHH-H=---===-HHHHH--H-=
+                                                      CBBBBBBBBCC C        CBBBC  C
+                                                          VVV               VVV
 XOOOOOOOM= ----=+=+-=+)+==+---- -=+------=---+=+AA11OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1Z1Z1)+=-111)XAZ)11XA
+ -++++X+                                            ++X++XXXX++++++++XXX++++XXXXXXXX++++--
+  ''''''                                             '''''''''''''''''''''''''''''''''''
+  .  ...                                             ...................................
+  =   -=                                             =-==----== ==  =---=  =HHHH--H-====
+                                                                            BBBB  C
+                                                                             VV
 ZOOOOOOOO=----=)1))-==1)+=- - ----1+---- ---====AOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZZZZAMM+--1ZZ1MM))Z1ZX
+ -++++X+=                                        =  =++++++++++XXXX+XXXXX++++XXXXXX+X+++-
+  ' ''''                                             ''''''''''''''''''''' '''''''''''''
+  . ....                                              ....................  ............
+  =   -=                                                = =   =-H--=--HH-   =HHH---=-==
+                                                                C     BB     CBB
+                                                                      VV      V
+                                                                              A
 MOOOOOOOO=- --=ZAZ)1Z+-==-===---==1)==- ------=+1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMAXXA)-=)11)ZZ1)++MM
+ ++++++++                                         ++++++=-==++XXXXXXXXXXX++=+XXXX+XXX++++-
+ '''''''                                          ' ''''    ''''''''''''''  ''''''''''''
+  ......                                          . . ..    ..............  ............
+  = ====                                                      --HHHHHHHHH=   -HH-=---=
+                                                                BCBCBCBBC     BB
+                                                                              V
 OOOOOOOOZ   --1X1ZZXX)===-=-)+---=)1)==-- --=--=1AOOOOOOOAAMOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOX-  1ZXZZZX1+1OO
+=++++XX+                                          ++++++-   ++++XXXXXXXXX++- +XX++++++++++++++++              +=
+ '''''''                                           '''''    '''''''''''''''  ''''''''''''''''''
+ .......                                           .....    ..............   ..................
+  = =--=                                             ==     ====--H-HHH--     HH======  ======
+                                                                  C CCC       BC
 OOOOOOOOZ- - -1X1)1))Z1+)==-===---+)=---=-------1XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-+ZMOMMX1))1OM
++++++XX+                                           =+++++-=+++++=+++++X+++++-+XX++++++++XXX+X+X+-     -       -
+''''''''                                            '''''   '''   '''''''''' '''''''''''''''''''
+........                                             ...    ...    ........   ..................
+ == =-H=                                               =           = =-====   HH=     ==---=-=-=
+      B                                                                       CC
 OOOOOOOOO)---===)))+)+=1)+----=-+)))++=== --- --1ZMOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)1XAOMAMZ+1)11
+++++XXXX=                                          ++++++=++++=----  -==++X+-+XXX+++++X+++++XXX+-     -
+''''''''                                            '''''  '''          '''' '''''''''''''''''''
+........                                            .....   .           ....  ..................
+    --HH                                            ====    =             -   HH-== = -= ===HH-=
+      BC                                                                      CB            CC
 OOOOOOOOM+--=---))=-=)=)Z)==+====)X1=======---=-=)OOOOOOOOMMMMOOOOOXZ11AMMOOOOOOOOOOOOOOOOOOOOOOOM11AXAMMAZZOOZA
+++++XXXX                                          -++++++-    =++=-       +++XXXXX++++X+-=++++++-           --
+''''''''                                            '''''       '         ''''''''''''''  ''''''
+........                                            .....                 ..............  ......
+=  =-HHH                                                                  == -HHH-====-   ====
+     CBC                                                                      BBC
+                                                                              VV
 OOOOOOOO=  -- --)1)==+)1Z111)+====11+===-====-= -+OOOOOOOOMXMOOOOOMMXZAAX1OOOOOOOOOOOOOOMOOOMMOOOA1ZAAMOOOMOOOXZ
+++++XXX+                                          --+++++=   -++=-        +XXXXXX+++++X+ ---  ==-      --= -==
+''''''''                                            '''''     ''          ''''''''''''''
+........                                             ....      .          .............
+= ==HHH                                               ===                  -HHHHH=====-
+    CBB                                                                     BBBBC
+                                                                              VV
+                                                                              A
 OOOOOOO1    =--=))+===+)1+)))+=-=-=))==---+-=-- =+AMOOOOOOAAOOOOOMOOMMOAZZOOOOOOOOOOOOOOOOOOOOOOOX1XMMOMOMMZAMAX
+++++XX+                                             +++++-  =++=- =-  -   +XXXXXX+++++++--=+++++=     - -
+'''''''                                             '''      ''           '''''''''''''    '''''
+.......                                                       .           .............     ....
+ ===HH=                                                                    -HHHH-=== =        ==
+    BB                                                                      BBBB
+                                                                            VVVV
+                                                                              A
 OOOOOOA     =---+)))1)+)11)=+==-----+==---=-=- --=MOMXXXOOMMOOMXXMOZZ)AZ1)OOOOOOOOOOOOOOOOOOOOOOOXMOMOOMMMM)XAAA
+++XXXX                                             +    =+  --    -       +XXXXX+++=++++++++++++=  - --
+''''''                                                                     '''''''' ''''' ' '' '
+......                                                                     .......   ....   .
+ =--H-                                                                     -HHHH=
+    B                                                                       BBBB
+                                                                            VVV
+                                                                              A
 OOOOOO- ----+-==Z111A1+=+==---==+++=++=---+-=----=OOOOOOOMOMOMM1ZMOOMXX)+=OOOOOOOOOOOOOOZ1AXAZZMOXAAOOOOOMOMMAOO
++XXX+-                                            =++---- - -     --      +XXXXX+++++++-        -   -=+-= -   --
+'''''                                              ''                      '''''''' '''
+.....                                              .                       ........ ...
+=-HH=                                                                      -HHH-==
+  CC                                                                        BBB
+                                                                            VVV
+                                                                            AA
 OOOOM-  ---=----))+)Z1=-==--=--=)+=--==---=-=-- -=OOOOOOOOOOOAZ11ZXAA11)=+OOOOOOOOOOOOOZ+++=--=+11ZZOOOOOOOMOMMM
+XXXX                                              -++++++----             +XXXX++++++++             --===-- =
+''''                                               ''''''                 '''''''''''''
+....                                               ..                     .............
+HHH-                                                =                      HHHH==    =
+BBB                                                                        BBBC
+                                                                            VV
+                                                                            AA
 OOOOZ -  -----=-=)+++========-=-++=---=-=-= ------OOOOOOOOOMOX1ZXZZAM1=-=ZOOOOOOOOOOOOO1--+----=))1)XMOOOOOOOXXX
+XXXX                                              -++====-- -             XXXX+++++++++               -=+==--
+''''                                               ''                     '''''''''''''
+....                                                                      ............
+HHH-                                                                      -HHH= = =  =
+BBB                                                                        BBB
+ V                                                                          VV
+                                                                            AA
 OOOO=- - -  =+)=+)1)+)Z)1+-===+-+==---- =-=---    AAAAMAAZXZZ))1Z)11ZZ)+XOOOOOOOOOOOOOOZ+=+==-)1XAMXMMOMOOOOMZ11
+XXX=                                                                     +XXXX--+++++++               - ++--
+'''                                                                      '''''  ''''''                  ''
+...                                                                      .....  ......
+HH-                                                                       HHHH  ===
+BB                                                                        CBBC
+ V                                                                         VV
+                                                                            A
 OOO+ -    --=)+=+-))++)))+=-=---))=----- -=---  --)11))))))1XZ111111XZZZOOOOOO+)OOOOOOO1=--=++1Z1ZMAAMOOOOOOM)11
+XX+                                                                     +XXXX+  +++++++               ---=++
+'''                                                                     '''''   '''''''                   '
+..                                                                      .....   ...
+HH                                                                       -HH-
+BC                                                                        BB
+                                                                          V
 OOO1-----   =++=-=))1+++--+-+=))11+=------=-------XMOMMMAZ11Z1))1Z1)+)AOOOOOOM))OOOOOOOMZ)+-+=11AMOMOMOOOOOOM1XZ
+XX+                                                 -                  +XXXX+   +++++++           - - ----++
+'''                                                                     '''''   '''' ''                   '
+...                                                                     .....    ..
+HH                                                                      -HHH=
+BB                                                                       BBB
+                                                                         VV
+                                                                          A
 OOO        -+1X)+11))+=+)++=+==+++)=--------- -Z==OOOOOOOOOOOOOMOOOMMOOOOOOOOOMMOOOOOOOOOMOMZZMOOOOOOOOOOOOOOMAZ
+X+-                                               =++X++++++++- +++  -++XXX++-  ++++++++- =    +++++++=-+-+==
+''                                                 '''''''''''  ''    '''''''   '''  '''        ''''''    '
+..                                                 ..........         ......     ..   ..        ......
+H=                                                  =-==== =           =HH-           =           =
+C                                                                       BB
 OO)        =ZAZ=+)+))=+))-+==-=+===-=-----=- -=OO1OOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOAZ)ZMOOOOOOOOOOOMMZX
+X+                                             =+ -++++++++++++++=++XXXXXX+-- --++++++++++--     -+++++=--+-
+''                                                  ''''''''''''  '''''''''      '''' '''          ''''
+..                                                  ...........   .........      ..   ...           ...
+H                                                   = ====== =    ==--HHHH        =    =             =
+C                                                                     BBBC
+                                                                      V V
 OOZ-  -   =))1+-=))+-=11)-=++-=))=-- ---------=MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOMXXMAMOOOOMOOOMOM
+++                                              ++++++++++++-=+++++XXXXXXXX+++= =+++++++XX+++=-      =++- -+= -
+''                                              '''''''''''   ''' ''''''''''     ''' ''''''''
+..                                              ...........   .   ..........     ...  .......
+=                                               =  =  =            -HHHHH--=          ==--==
+                                                                    CBCCC
 OX--  --=-)+))+=+)Z111Z1+-=++--=+=== -  -------)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMOOMOOOOOOM
++                                               ++++++XX+++++=+++++++++++++++=+===++++++X+++++==+++   -- -+++-=
+'                                               ''''''''''''  ''''''''''''''      ''''''''''''             '
+                                                 ..........   ......... ...       ......... ..
+                                                    ==H-===   = =       =          == ==-==
+                                                      C
 O=  - -===1)1++=)))+Z)Z)=====++)+=+==     ----+XOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOMOMOOOOOOOOOAOOOOOOOOMMOOOOOOOOOM
++                                               ++=-=+++++X+++XX++= -=+=+++==-- - ++++++X++ -=--+++=  ++++++---
+                                                      ''''''''''''      '         '''''''''      ''     '''
+                                                      ............      .          .......        .       .
+                                                      = ==-===--==      =          ==  =-=
 =  ---1+=+)=+=)1ZXZ+=-=---=---+1)+===-   -  +=XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM
+                                                ==++++++++++++++X+++XXXX+++++-++++-+XXXXXXX+--++++X++++++++++-
+                                                    ''''' '''''''''''''''''''  ''  '''''''''  '''''' '''''''
+                                                    ...    .................   ..  .........  ......  .... .
+                                                              ==-===---- ===        -HHHHHH     ==-=  =  =
+                                                                                     CBBBBC
+                                                                                      VV
     --=-====--==))1)+ =-=+===-==)1+-==-  ---==AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMO
+                                               =+++++++++-=+++++++++++++XXXXXXXXX+++XXXXXXXX++++++XXXXXXX++++- -
+                                                ''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''
+                                                .......     ...............................................
+                                                    ==       = ====   ==-HH-H----=  -HHHHHHH= ====-HHHH--=
+                                                                         CC C        BBBBBBC       CCCB
+                                                                                      VVVVV
+                                                                                        A
 ----- - --+=--==1)=++=++=-====--11+-++------++AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMM
+                                               ++++++=+++++++X++X+++++++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++-
+                                                ''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                ....    ............. .....................................
+                                                          ===-= -==     -=-=HHHHHHH-HHHHHHHHHHHHHHHHHHHHH-
+                                                                            CCBBBBB BBBBBBBBBBBBCCBBBBBBB
+                                                                              V VV   VVVVVVV  V    VVVVV
+                                                                                      A A A           A
 ----- --+-))=--=1==--=-=+-=++=--)1+---- --- 1XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA
+                                               ++++++=-=+++++++=+++++=--++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX+++-=-
+                                               ''''''   ''''''  '''''   '   '''''''''''''''''''''''''''''''
+                                                .....   .... .   ..         ...............................
+                                                = =      =       =          ==HHHHHHHHHHHHHHHHHHHHHHHHHH-==
+                                                                              CCBCBCBBBBBBBBBBBBBBBBBBBB
+                                                                                       VVVVVVVVVV V VVVV
+                                                                                          A A   A   A A
  --===++1++=)+-=1+====)=+====- --==------ - )MOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOX
+                                              =+++++++-=++++--=++++-++++  -+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+++- --
+                                                ''''''   ''     ''' '''     '''''''''''''''''''''''''''''''
+                                                .....     .     ..   ..     ..............................
+                                                 =                    =     -HHHH-HHHHH-HHHHHHHHHHH-HHHH=
+                                                                             CCCB CCCCC CCBBBBBBBCC BBBC
+                                                                                          VVVVV








