1
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ---)OOM-  -)=MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)ZOOOOOMOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX     -+        +XX++XXXXXXXXXXXXXXXXXXXXXXXXXX=  +XXX+ +XXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''               '''' ''''''''''''''''''''''''''   ''''  '''''''''''''
+....................................................               .... ..........................   ....  .............
+HHHHH-HHHH-HHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHH=HHH                -H= HHH-HHHHHHHHHHHHHHHHHHH-HH   =HHH   HHHHHHHHHHHH
+BBBBC BBBB CBBBBBBBBBCCC CBBBBBBBBBBBBBBBBBBBBBC BBB                 B  CBB BBBBBBBBBBBCCBBBBCC CC    CBC   BBBBBBBBBBBB
+V VV  VVVV   V VVVVV       VVVVVVVVVVVVVVVVVVVV   VV                     VV  V VVVVVVVV  VVVV                VV V
+               A             AAAAA AAAAA  A                                               A
 OOOOOOOOOOOOOOOOOOOOOOOO+-XOOOOOOOOOOOOOOOOOOOOOOOOOO=-ZOOOX- -OOOOOOOO-OOOOOOOOOOOOOOOOOOOOOOOOOOOOXZOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXX+   +XXXXXXXXXXXXXXXX++++XX++=   +++    =+++=XX+ +XX++XXXXXXXXXXXXXXXX++XXXX=  -+XXX++XXXXXXXXXXX
+''''''''''''''''''''''''   '''''''''''''''''''''''''    ''      ''' ''' '''''''''''''''''''''''''''    '''''''''''''''''
+........................   .........................    .       ... ..  ...........................    .................
+HHHHHHHHHHHHHHHHHHHHHHH=   =HHHHHHHHHHHHHHHH   =HH=                 HH  =HH  HHHHHHHHHHHHHHHH  HHHH     -HH =HHHHHHHHHHH
+BBBBBBBBBBBCCBBBBBBBBBB     BBBBBBBBBBBBBBBB    BB                  CB   BB  CCCBBBBBBBBBBBBC  CBBC      BC  BBBBBBBBCCB
+VVVVVV       VVVVVVVVVV     VVVVVVVVVVVVVVVV                         V    V      VVVVV   VVV    V             VV
+                A  A A         AA   A AA  A
 OOOOOOOOOOOOOOOOOOOOOOO)  -OOOOOOOOOOOOOOOOOM=OMOM)-=)1=OOO=--MOOOOOOOO ZOOOMMMOOOOOOOOOOOOOOO)MOOOOOO)+MOOOOOOOOOOOOOOO
+XXXXXXXX+XX+XXXXXXXXXXX    =XXXXXXXXXXXXXXXX  - -       +X+    XXXXXXX=  XXX   +XXXXXXXXXXXXX-  +XXXX+   +XX++XXXXXXXXXX
+'''''''''''''''''''''''     ''''''''''''''''            '''    '''''''   '''    '''''''''''''   ''''''   '''''''''''''''
+.......................     ................            ...    .......   ...    .............   ......   ... ...........
+HHHHHHH- -H=HHHHHHHHHHH     HHHHHHHHHHHHHHHH             -     -HHH-HH   -H-    -HHHHHHHHHHH-   =HHHH    =HH =HHHHHHHH--
+BBBBBBB   C BBBBBBBBBBC     BBBBBBBBBBBBBBBB                    CBB BB    B      BBBBBBBBBBB     BBBC     BC  CBBBBBCC
+VVVV V       VVVVVVVVV       VVVVVVVVVVVVVVV                        VV    V       VVV VVV V       V             VV
+  A          AA  AAAA        A A     A A  A
 OOOOOOOXOOOOOOOOOOOOOOO  -XOOOOOOOOOOOOOOOOOOOAX- --)OO=ZM+-XOOOOOOOOOO--XOO)+=1OOOOOOOOOOOOO) -1OOOOOO1=ZOOOOOOOOOOOOOO
+XXXXXXX -XXXXXXXXXXXXX=    +XXXXXXXXXXXXXXXX+-       ++      =+XXXXXXX-   ++    +XXXXXXXXXXXX    +XXXX+   +X++++XXXXX++-
+'''''''  '''''''''''''     ''''''''''''''''''        '        ''''''''     '    '''''''''''''    ''''''   '''''''''''''
+.......  .............      .................                 ........           ............     .....   ............
+HHHHHH-  --HHHHHHHHHHH      HHHHH-HHHHHHHHHH                  =HHHHHHH           -HHHHHHHHHH-     HHHH     H= ==HHHH-
+BBBBBB     CBBBBBBBBBB      CBBBB BBCBBBBBBB                   CCBBBBB            BBBBBBBBBB      CBBB     C    CBBB
+VVVVV       VVVVVVVVVV       VVVV  V  VVVVVV                      VVVV             VVVVVVVVV       VVV
+ AA          AAA  AA A          A       AAAA                        A
 OOOOOOM-OOOOOOOOOOOOOO=  1OOOOOOOOOOOOOOOOOOOOX)- --MOOO=- 1OOOOOOOOOOO--  -1= =MOOOOOOOOOOOM -   XOOOOOO-)OOOOOOOOOOOOO
+XXXXXX  +XXXXXXXXXXXXX    ++XXXXX-XXXX++XXXXXX       XX+    ++XXXXXXXX=          XXXXXXXXXXX       +XXXX+  +XX++++++++++
+''''''  ''''''''''''''    ''''''' ''''''''''''       '''    ''''''''''           '''''''''''       '''''   ''''''''' '''
+......  ..............    ....... ............       ...    ..........           ...........       .....   ......... ...
+HHHHHH  =HHHHHHHHHHHHH    ==-HHHH HHHH =HHHHHH       -H     = -HHHHHHH           -HHHHHHHHHH       =HHH-    --======  =
+BBBBBB   BCBBBBBBBBBBB       BBBB CBCB  BBBBBC        B        BCBBBBB            BBBBBBBBBB        BBB
+VVV        VVVVVVVVVV        VVV   V    VVVV                     VVVVV             VVVVVV  V
+A A             AA  A         AA         A                         AA
 OOOOOO+ZOOOOOOOOOOOOOO=  OOOOOOOOOOOOOOOOOOOOOO)- -)=OOOO1MOOOOOOOOOOOO+-)XOO+--OOOOOOOOOOOO=+Z=- -ZOOOOOM)MOOOOOOOOOOOO
+XXXXXX  XXXXXXXXXXXXXX   -XXXXXX+-XXXX-XXXXXXX-      +XX+  +X++XXXXXXX+    +X   -+XXXXXXXXX+        +++++   ++=+++++++++
+''''''  ''''''''''''''    ''''''' '''' '''''''        '''   '''''''''''    ''    '''''''''''        '''''    ' '''''''''
+......  ..............    ....... .... .......        ...   ...........    ..    ...........        .....       ..  ....
+HHHHH-  -HHHHHHHHHHHH-    HH-HHH= HHHH -HHHHHH        -H=   -==HHHHHHH     =-    =-HHHHHHHH=         = =        =    =
+BBBBB    CCBBBBBBBBBB     CC BBB  BCBB  BBBBBC         B       BBBBBBC             BBBBBBBB
+VVVVV      VVVVVVVVVV        VVV        VVV V                   VVVVV               VV VV V
+ AA        A   A    A         AA         A
 OOOOOO-OOOOOOOOOOOOOOO1--OOOOOOOOOOOOOOOOOOOOOOO==1O=+AMMOOMOOOOOOOOOOOOOOOOO--=OZXMOOOOOOOO=MOOA1==ZOOOOOZMMOA1AXOOOOOO
+XXXXX+ -XXXXXXXXXXXXXX   +XXXXXX++XXXX+XXXXXX+X+   -     ++ +XXXXXXXXX++=+XXX   +   XXXXXXX=  ++     ++++=   -    -=+++-
+''''''  ''''''''''''''   ''''''' '''''''''''''''         '' '''''''''''  ''''       '''''''   '      '''            '''
+......  ..............   .......  .... .........         ..  ..........  ....       .......   .       .              .
+HHHHH=  H-HHHHHHHHHHH-    HHHHHH  HHHH HHHHHH -=          =  -HHHHHHHH=   -HH       -HHHHHH   =
+BBBBB   B CBBBBBBBBBB     BBBBBB  CCBB BBBBBB                 BBBBBBBB     BB        BBBBBC
+VVVV       VVVVVVVVVV        VVV    V   VV  V                  VVVVVV                VV V
+           AA  A  A A          A         A                      AA
 OOOOOO+OOOOOOOOOOOOOOOO11OOOOOOOOOOOOOOOOOOOOOOO=XOOOZ+AOOOOOOOOOOOOOOOOOOOOO--OO- -OOOOOOOX1MOOOOOZAOOOOOOAMMOZ111ZXOOM
+XXXXXX =XXXXXXXXXXXXXX=  +XXXXXX=+XXXXXXXXXXX+X+  +++   +XX++XXXXXXXXX+++XXXX  -+   +XXXXXX   ++++-  --+==-   -      --
+''''''  ''''''''''''''   ''''''' '''''''''''''''   ''   '''''''''''''''''''''   '   '''''''    '''
+......  ..............   ....... ...............   ..   .....................   .   .......    ..
+HHHHH-  H--HHHHHHHHHHH   =HHHHHH =HHHH-HHHHHH H=         HH==HHHHHHHH-===-HHH        HHHHH-
+BBBBB   B  BBBBBBBBBBB    BBBBBB  BCBC BBBCBB C          CB  BBBBBBBB     BBC        BBCCC
+VVVVV      VVVVVVVVVV     V VVVV    V  VVV  V                 VVVVVVV     VV          V
+A A         A A AA AA          A         A                        A
 OOOOOOZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- )OOOOZ=OOOOOOOOOOOOOOOOOOO--OO   OOOOOOOOX)OOOOOOOOOOOMOMMMXAX1))+=)Z
+XXXXXX =XX+XXXXXXXXXXXX++XXXXXXX++XXXXXXXXXXXXXX+   X+++  XXXXXXXXXXXX+XXXXXX  ++   +XXXXXX-  -+++++=--=- -
+''''''  '''''''''''''''''''''''''''''''''''''''''   ''''  '''''''''''''''''''  ''   '''''''    ''''
+......  ............... .........................   .. .  ...................  ..   .......      ..
+HHHHHH  H-=HHHHHHHHHHH- =HHHHHHH =--HHHHHHHHHHHH    -= =  -HHHHHHHHHHH=-HHHHH   =   =HHHHH-
+BBBBBB  B  BBBBBBBBBBB   BBBBBBB    BBBBBBBBBCCB           BBBBBBBBBBC  CBBBB        BCCCC
+VVVVV      VVVVVVVVVVV    V  V         VVV VV                VVVV VV     VVV
+    A       AAA AAAAA                   AA
 OOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- --AOOO- OOOOOOOOOOOOOOOOOOO=MOO- -OOOOOOOOOOOOOOOOOOOOOOOMMMMXZX11+)))
+XXXXXX+ XX+XXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXX++     +X+  +XXXXXXXXXXXXXXXXXX  XX   +XXXXX++=+++++++++====-
+''''''' ''''''''''''''''''''''''''''''''''''''''      ''  '''''''''''''''''''  ''   ''''''''  ''''''
+....... ........................................      ..  ...................  ..   ........  .....
+HHHHHH  HH HHHHHHHHHHHH-HHHHHHHH=-H-HHHHHHHHHH=       -=  =HHHHHHHHHHHHHHHHH-  H-    HHHH-=
+BBBBBB  CB BBBBBBBBBBBB BBBBBBBB  B BBBBBBBBBB             BBBBBBBBBBCCBBBBB   C     CBBB
+VVVVVV      VVVVVVVVVV    VVVV V    VVVVVVVVV              VVVVV VVV   VVVVV
+ AAAA       A AAAA AA       AA          AA                               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO   +)MOOO -OOOOOOOOOOOOOOOOOOO+OOO= 1OOOOOOOOOOOOOOOOOOOOOOOOOOOMMX1Z1)==
+XXXXXXX++X++XXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXX+      +XX  +XXXXXXXXXXXXXXXXX+ +XX   +XXX+++++++++++++++++++=---
+''''''' ''''''''''''''''''''''''''''''''''''''       '''  ''''''''''''''''''' '''   ''''''''''''''''''' '
+....... ......................................       ...  ................... ...   ................
+HHHHHHH =H =HHHHHHHHHHHHHHHHHHHH =HHHHHHHHHHHH       =H-   HHHHHHHHHHHHHHHHH  =HH    HH-=== = == =
+BBBBBBB  B  BBBBBBBBBBBBBBBBBBBB  BBBBBBBBBCBB        B    BBBBBBBBBBBBBBBBB   BC    CC
+VVVVVV       VVVVVVVVVVVVV VVV V    VVVVVVV VV               V VVVVV  VVVVVV
+AAAA         A A                       AAA                     A
 OOOOOOOOMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)- +MOOOOO -OOOOOOOOOOOOOOOOOOOOOOO+-AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZZZ1=
+XXXXXXXX XX +XXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX++     +++X+  +XXXXXXXXXXXXXXXXX++XX+   +++++++++++++++++++++++++-=--
+'''''''' '' ''''''''''''''''''''''''''''''''''      ''''  ''''''''''''''''''' '''   ''''''''''''''''''''''' '
+........ .. ..................................      ....  ................... ...    ......................
+HHHHHHHH -H =HHHH--HHHHHHHHHHHHH-=HHHHHHHHH- =       =H=  =HHHHHHHHHHHHHHHHH= HH=    =  ================
+BBBBBBBC  C  BBBC  BCBCBBCBBBBBB  BCBBBBBBB           C    CBBBBBBBBBBBBBBBB  CB
+VVVVVVV                   VVVV V    VVVVVVV                   VV V VVV   VV
+ AAAAA                                  AAA
 OOOOOOOOXMOO)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-AMM=OOOOOO--OOOOOOOOOOOOOOOOOOOOOOOM)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX111+
+XXXXXXXX  X+ ++-=+++XXXX+XXXXXXXX+XXXXXXXXXX      ++++X+  +XXXXXXXXXXXXXXXXX+XXX+   +++++++++++++X+++++++++++-+=+
+''''''''  '' ''  '''''''''''''''''''''''''''      ' ''''  '''''''''''''''''''''''   ' '''''''''''''''''''''''
+........  ..      ..........................        ....  .......................     ......................
+HHHHHHHH  H=       =-HH-=-HHHHHHH=HHHHHHHHHH         =-   =HHHHHHHHHHHHHHHHH=-HH=      ==========-====    ==
+BBBBBBBB  C          CC   BBBBBBB BBBBBBBBBB               CBCBBBBBBBBBBBBBB  BB
+VVVVVVVV                   VVVVV  V  VVVVVV                     VV  V VVVVVV
+A AA A A                     A         AA A
 OOOOOOOOO-XOO+XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+=OO -OOOOO-=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM))1=
+XXXXXXXX+  +-   +++++++++XXXXXXXX+XXXXXXX++++  =-  -++X+  +XXXXXXXXXXXXXXXXXXXXXX++++XX+X++X+X+++X++++++++++++++++-
+'''''''''  '    ''''''' '''''''''''''''''''''       ''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........  .     ...... .....................       ....  ......................................................
+HHHHHHHH=  =         =   HHHHHHHH HHHHHHH====        =H=  =HHHHHHHHHHHHHHHHHHHHH-    --=-==-=-===-==== = =  =
+BBBBBBBB                 BBBBBBBB BBBBBBB             B    CCCBCBBBBBBBBBBBBCCBC
+VVVVVVVV                  VVVVVVV     VV                         VVVVVVVV V
+A  A A                                AA
 OOOOOOOOOO-=OOAOOOOOOO+MOOOOOOOOOOOOOOOO1=-)O- )=-=OMOOO-=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZ1))
+XXXXXXXXX+  -- -+++++=  XXXXXXXXXX+XXXXX    -      + +X+  +XXXXXXXXXXXXXXXXXXXXX+X+X+XXXXXXXXXXXX+++++++++++++++--
+'''''''''        ''''   ''''''''''''''''           ' '''  '''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........        ....   ................             ...  ....................................................
+HHHHHHHHH               HHHHHHHHHH=HHHH-             =H=  =HHHHHHHHHHHHHHHHHHHH-=-=-=---H--------===  =   = =
+BBBBBBBBB               CBBBBBBBBB CBBB               B    CCCCBBBBBBBBBBBBCCBC         C
+VVVVVVVVV                VVVVVV V    VV               V          VVVVVVVV
+   AAA                    A AA                                        A
 OOOOOOOOOOOZ -=++XMM)-)OOOOOOOOOOOOZOOOX  -MOZX==1OOOOOO))OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMXZ1)+
+XXXXXXXXXX+            +XXXXXXXXXX= +XX     -     ++-+XX  +XXXXXXXXXXXXXXXXXXXX+XXXX+XXXXXXXXXX+++++++++++++++== -
+'''''''''''            '''''''''''  '''            ' '''  '''''''''''''''''''''''''''''''''''''''''''''''''''
+...........            ...........  ...            . ...  ..................................................
+HHHHHHHHHH=            =HHHHHHHHHH  =HH            = =HH  =H--HHHHHHHHHHHHHHHHH=--H-=H---H-----====== = ==
+BBBBBBBBBB              BBBBBBBBBB   BB               BB   C  BBBBBBBBBBBBBBBBC   C  C   C
+VVVVVVVVVV              VVVVVVV VV                    V        VVVVVVV V    V
+AAAA AAAA                 A A A
 OOOOOOOOOOOOOA       =OOOOOOOOOOOOO)OOO  -OOOOZ +OOOOOOOZ1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMMX1
+XXXXXXXXXXXXX         +XXXXXXXXXXXX +X+   -+++   -+X+XXX  +XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXX+++++++++++ -
+'''''''''''''         ''''''''''''' '''    ''     ''''''  ''''''''''''''''''''''''''''''''''''''''''''''''   ''
+.............         ............. ...    ..     ......  ................................................
+HHHHHHHHHHHH-          HHHHHHHHHHHH =H=    =      =- HHH  =-HHHHHHHHHHHHHHHHHH---H--=------------HH---= =
+BBBBBBBBBBBB           BBBBBBBBBBBC  B               CBB    CCBBBBBBBBBBBBBCBC   C               CC
+VVVVVVVVVVV             VVVVVVV VV                    V        VVV V  VVVVV
+ AA    AA                    AA  A                               A
 OOOOOOOOOOOOOOOOO1))OOOOOOOOOOOOOOOOOOO--1OOOO1-OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX
+XXXXXXXXXXXXXXX+-   -+XXXXXXXXXX+XXXXX=   =+++  -+XX+XXX+=+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++=-----
+''''''''''''''''     '''''''''''''''''     ''    '''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................     .................     ..    ........ ................................................ ...
+HHHHHHHHHHHHHHH=     =HHHHHHHHHH=HHHHH      =     -H=HHH  =H-HHHHHHHHHHHHHHHH---HHHH---H------HHHH--H--==
+BBBBBBBBBBBBBBB       BBBBBBBBBB BBBBB             C CBB   C CBBBBBBBBBBBBBCC   CCCC   C      CCCC  C
+VVVVVVVVVVVVVV         VVVVVVVVV  V                   VV      VVVVVVVVVVV V
+AAA  A AAA   A         AAA    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA-+OO-1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   -=   ++++X++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++-
+''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
+......................................         .......... .....................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHH           =-==-HH- ---HHHHHHHHHHHHHH--HHHHHHHH------HHHHH-HH---==   = =
+BBBBBBBBBBBBBBBBBBCCBBBBBBBBB BB CBBBB                BB     CBBBBBBBBBBBBB  CCCCCCCC      CCCBC CC
+VVVVVVVVVVVVVVVVV    VVVVVVV  VV   VV                 VV      VVVVVV VV V
+AAAA  AAA A            AAA          A                           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA-XOO--)-XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXX   ++     -+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++=
+''''''''''''''''''''''''''''''''''''''   ''      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................   ..      ....................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHH HHHHHHHH            -  HHHH----HHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHH--======= =    =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBB CBBBBBBB               CBBB    CBBBBBBBBBBBCCCCBCCBCBCCC CCBCBBBBBCC
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVVVVV                VVV       VV VVV V
+  AAAA   A AA   AA   AAAA A    AA                      A        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1OOOOMO  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX  ++X+ -  -+XXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+++++++++++++++
+''''''''''''''''''''''''''''''''''''''   '''     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................   ...     .......................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=HHHHHHH   =H      =-HHHHHHH==-HHHHHHHHHHHHHHHHHHHHHH---HHHHHHHHHHH----=---==    ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBB    C        CBBBBBC   CBBBBBBBBBBCCCCCCCCCCC   CBCCBBCCCCC
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVV   VVVVV                  VV      V  VVV  V
+  A A        AAAA     AA  AA     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX+++++X++==+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................... ......  ........................................................................
+H=-HHHHHHH=HHHHHHHHHHHHHHHHHHHHHHHHHHH   = -=   =HHHHHHHHH---HHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHH---------===  ===========
+B  BBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBB           CCBBBBBBB   BBBBBBBBBBCCCCCCBBBCC CCBBBBBBCCCC
+V  VVV VV   VVVVVVVVVVVVVVVVVVVVVVVVV                 VVV          V V                 V V
+       A     AA AA  A  A                                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X=+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+  ++XXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+X++++XX+++X++++
+'  '''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  .......................................   ...........................................................................
+H  HHH-HHH HHHHHHHHHHHHHHHHHHHHHHHHHHH-=-=   =--H===-HHHHH--HHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHH-=-------=-====--===-====
+B  CBB BBB CBBBBBBBBBBBBBBBBBBBBBBBBBB          C    BBCBB  CCBBBBBBBBBCCCCCBCBC CCCBBBBBBBCCCC
+V   V   VV  VVVVVVVV VVVVVVVVVVVVVVVVV                V       V VVVVVV              V V
+               A A A    AA    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+OOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+-XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  ++=- -++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX+XX+X+++++
+'' '''''''''''''''''''''''''''''''''''''''  ''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  ... ...................................  ..      ....................................................................
+H  HHH HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---          -HHH=H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH--------===--=--=-=== =
+B  CBB CBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBB              BBB C  CBBBBBBBBBCBCBCCCCCBCCBBBBBBBBCBCC CC
+V   V   VV   VVVVVVV  VVVVVVVVVVVVV VV                V        VVVVVV               VV
+               A AA    AA AA        A
 OOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+ XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+  +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XXX+XX+++++
+'  '''''''''''''''''''''''''''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  .........................................    ........................................................................
+H  HHH=HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH=     -H-HHHH--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-H-------==-=---=--== ==
+B  CBB CBBB BBBBBBBBCBBBBBBBBBBBBBBBBBC CBB       B BBBB  C BBBBBBBBBCCCBCBCCCBCCBCBBBBCBCBB CCB C
+V    V  VV   VVVVVVV   VVVVVVVVVVVVVVV               VVV       VVV V               VVV
+               AA                  A                  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+-XXXX+XXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXX++-+XXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++X+
+'  ''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  ........................................... .........................................................................
+H  HHH-=HHH-HHHHHHHH=HHHHHHHHHHHHHHHHHHH-HHH==  HHHHHHHHH-==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH----------===== =-=
+B  CBB  BBB BBBBBBBB CBBBBBBBBBBBBBBBBBC BBB    CBBBBBBBC   BBBBBBBBBCCBBBBBCCCBBBBBBBBBCBBCCCCCC  CC
+V   VV  VV  VVVVVVVV  VVVVVVVVVVVVVVVV    V      V   VVV     VVVV V               V V
+         A   A  AAA        A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X==XXX++XXXXXXXXXXXX-+XXXXXXXXXXXXXXXXXX  +XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+++++++++XX
+'  ''''''''''''''''' '''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  ................. ...................  ..............................................................................
+H  HHH= HHHHHHHHHHHH =HHHHHHHHHHHHHHHHH-  =HHHHHHHHHHHHHH=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H------=HH--=========-H
+B  CBB  CBBCBBBBBBBB  BBBBBBBBBBBBBBBBB    CBBCCBBBCCBBBB   CBBBBBBBBCBBBBBBBCBBBBBBBBBCBCCCCC   C       CC            C
+V   VV   V  VVVVVVVV   VVVVVVVVVVVVVVV          VV   VVV     VVVVV                 VV
+A        A      A A                                   A
 OOOOOOOOOOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOOM OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X-+XXX++XXXXXXXXXXXX +XXXXXXXXXXXXXXXXX+  +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++X+++XXXX
+'  ''''''''''''''''' '''''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  .................  ..................   .............................................................................
+H  HHH =HHHHHHHHHHHH  HHHHHHHHHHHHHHHH-=   -HHHHHHHHHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHH-HH-=-==-===HH--
+B  CBB  CBCBBBBBBBBB  CBBBBBBBBBBBBBBB      BBBBBCBCBBBBB   BBBBBBBCCBBCBBCCCCBBBBBBBBBBBBCCCCC  CCCCCCC CC         CC
+V   VV   V  VVVVVVVV   VVVVVVVVVVVVVVV      VV VV    V VV    VVVVV            V  V V
+     A        AAA               AA  A                  A
 O-+OOOOOOOOOOOOOOOOOZXOOOOOOOOOOOOOOOOOOO-OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X  +XX++XXXXXXXXXXXX  XXXXXXXXXXXXXXXXXX+ -XX++XX++XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+++XXXXXXX+
+'  '''''''''''''''''  '''''''''''''''''''  '' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  .................  ...................  .. ..........................................................................
+H   HH  HHHHHHHHHHHH  -HHHHHHHHHHHHHHHHH=  HH =HH==HHHHHHH=HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH-HH---H-H----=--===---HH--
+B   BB  BBBBBBBBBBBB   BBBBBBBBBBBBBBBCB   CB  BB  BBBBBBB CBBBBBCCCBCBCBCCCCBBBBBBBCBBC CCCC CC   C C             CC
+     V   VVVVVVVVVVV    VVV VVVVVVVV                VVVVVV     V                 V
+         AA A AAA A             AA                     A
 OXZOOOOOOOOOOOOOOOOOM=OOOOOOOOOOOOOOOOOOOOOOO1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X  +XX++XXXXXXXXXXXX  +XXXXXXXXXXXXXXXXXXXXXX -XXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+X+XX+XXXXXX+++
+'  '''' ''''''''''''  '''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  ...  ............  .......................  .........................................................................
+H  =HH  HHHHHHHHHHHH  =HHHHHHHHHHHHHHHHHH--HH  -HHHHHHHHHH-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH--HHH--=--=-=--=---HH-===
+B   BB  BBBBBBBBBBBB   BBBBBBBBBBBBBBBBBB  BB   BBBBBBBBBB  CBBBCCBCCBCCBCCCBBBBBBBCBBCCCCCC CC  CCC              CC
+V    V   VVVVVVVVVVV   V VVVVVVVVVVV VVV        VV V VVVVV    V                V
+            AA AAAAA     A  A A
 OMOOOOOOOOOOOOOOOOOO+ OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X +XXX++XXXXXXXXXXXX  =XXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX+X
+' ''''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  .................   ...................... ..........................................................................
+H  -HH==HHHHHHHHHHHH   HHHHHHHHHHHHHHHHHHHHHH  HHHHHHHHHHHH=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHH------=-H-HHHH---=-
+B   BB  BBBBBBBBBBBB   BBBBBBBBBBBBBBBBCBBBBB  BBBBBBBBBBBB  BBBBBBBBBBCBCBBBBBBBBBCBBCCCBBCB C CCCBC        C CCCC
+     V   VVVVVVVVVVV     VVVVVVV VVVVVV  V      VVVVVVVVVVV   V             VVVV  V
+          A A   AA          AA
 OOOOOOOOOOOOOOOOOOOO--OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXX+XXXXXXXXXXXXX  =XXXXXXXXXXXXXXXX-+XXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXX+XXX+
+'''''' '''''''''''''   '''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...... .............   ................ ................................................................................
+= -HHH -HHHHHHHHHHH-   HHHHHHHHHHHHHHHH  HHHHHHHHHHHHHHHHHH= HHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHH-H--==-----HHH--=---=
+   BBC  BBBBBBBBBBB    CBBBBBBBBBBBBBBB  CCBBBBBBBBBBBBBBBB  BBBBCBBBBBBBBCBBBBBBBBBBBCCC CCCCBCCCC C         CCC
+    V   VVVVVVVVVVV     VVVVVVVVVVVVVV      VVV V  VV VVVVV   V              V V
+          A  AA   A      AAAA    A          A            A
 OOOOOOOOOOOOOOOOOOOO )OOOOOOOOOOOOOOOOO=AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXX-+XXXXXXXXXXXX-  +XXXXXXXXXXXXXXXX  +XXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XX+XXX++++X++
+''''' '''''''''''''    ''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ .... .............    ................  ................... ...........................................................
+ =HHH  HHHHHHHHHHHH    HHHHHHHHHHHHHHHH  =-HHHHHHHHHHHHHHHHH HHHHHHHHHHHHHHHHHHHHHHHH---H-H---H------======--=-H-====-==
+  CBB  BBBBBBBBBBBB    CBBBBBBBBBBBBBBB    BBBBBBBBBBBBBBBBB CBBBBBBCBCCCCBBBBBBCCCCC   C C   C                C
+    V   VVVVVVVVVVV     VVVVVVVVVVVVV           VVVV  VVVVV                 VVV
+          A  A  A A       AAAA A                         A
 OOOOOOOOOOOOOOOOOOO=-)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXX-XXXXXXXXXXXXX   +XXXXXXXXXXXXXXXX++XXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX
+''''' '''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..... .............   .................. ...............................................................................
+=HHHH -HHHHHHHHHHH-   =HHHHHHHHHHHHHHHH= -HH==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=--------HH---------
+ CBBC  BBBBBBBBBBB     BBBBBBBBBBBBBBBB   CB  BBBBBBBBBBBBBBCCBBBBBBBCBCBBBBBBBBCCBCCCCCCCCCCCBCCCC          CC
+   V    VVVVVVVVVV      VVVVVVVVVVVV  V    V   V  VVVV  VVVV   V          VVVV
+   A      AAA AA A       AAAA      A
 OOOOOOOOOOOOOOOOOOM-+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX++XXXXXXXXXXXX    +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXX+XXXXXX+
+'''' '''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.... .............    ..................................................................................................
+-HHH =HHHHHHHHHHHH    =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH--=--------HH--=------=
+ CBB  BBBBBBBBBBBB     BBBBBBBBBBBBBCBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBCB CBBCCCCCCCCCC           CC
+  VV   VVVVVVVVVVV     VVVVVVVVVVVVV  VVV  V   VVV  VV VVVV   VV          VVVV
+        AAA AAAA        A  A     A
 OOOOOOOOOOOOOOOOOO=)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX-XXXXXXXXXXXX+   -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXX+XX
+'''' '''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.... ............     ..................................................................................................
+-HHH -HHHHHHHHHHH     HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=HH------HHH-------=--
+ BBB  BBBBBBBBBBB     CBBBBBBBBBBBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCBBBBBBCBCCCCBBCCBCBCCCCC   CC      CCC
+  V    VVVVVVVVVV      VVVVVVVVVVVVV    V VVVVVV VVVVVV VVVVVV V V      VVV
+        AAAAA  A         A                               A
 OOOO1OOOOOOOOOOOO=AXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX+ +XXXXXXXXXX+    +XXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXXXX
+'''  '''''''''''     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...  ...........     ...................................................................................................
+ HH  =HHHHHHHHHH     =HHHHHHHHHHHHHHHH -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH---HH------HH---=--=----H
+ CB   CBBBBBBBBB      BBBBBBBBBBBBBBBC  BBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBBCBCBCCCCCCBBC CBBBCC   CC      CC           C
+  V    VVVVVVVV        VVVVVVVVVVVV      VV VVVVVV VVVVVVVVVVV V        V
+        AAAAAA          AA A                         A     A
 OOO-)OOOOOOOOOOX1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+  +XXXXXXXX+  =+-+XXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''  ''''''''''   '  ''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...  ..........      ................. .................................................................................
+-H   =HHHHHHHH=      HHHHHHHHHHHHHHHHH =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH--H-H-HHHHH--H-------HH
+ B    BBBBBBBC       CBBBBBBBBBBBBBBBB  BBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCCBBBBBBBCBC CC  C C CCCCC  C       CC
+       VVVVVV         VVVVVVVVVVVVV V    VV VVVVVVVV VVVVVVVVVVV       VVVVV
+        A A                 A A                         A AA  A
 OO+AOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+  +XXXXXXX+- -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''  '''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..  ........    ........................................................................................................
+H   =HHHHHHH       =-HHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHH--H-HHH----H-------HHH
+B    BBBBBBB         BBBBBBBBBBBBBBBBB  BBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBBBBBBBCBBBCCCBCCBCC  CCC  C CCC    C       CCC
+      VVVVV           VVVVVVVVVVVV  VV   VV VVV  VVVVVVVVVVVV V       VVVVV
+                            AA              AA
 O+OOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+= -XXXXXXX- -=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX
+   '''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   .......     .........................................................................................................
+   -HHHHHH     = ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHH--HH--HHH------=--HHHH-
+    BBBBBC         CBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCBBCCCCCBBCCCBCCBB  CCC  CC  BBC         CCCB
+     VVV             VVVVVVVVVVVVVV VVVV VVVVVVVVVVVVVVVVVVV V        V V
+                     A         A            A A
 OOOOOOOO1=XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXX+   +++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX+XXXXXXXX
+''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+. ......    ............................................................................................................
+  =----=    ==  ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-H--H----HHHHHH==---=---HH---
+                  CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBCBBBCBBC BBCCC C  C    CCCCCC         CC
+                   VVVVVV VVVVVVVV    V VVVV VVVVVVVVVVVVV VV        VVVV
+                     A                                A
 OOA)=+=+ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++=        ++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXXXXXXXX+
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ..............................................................................................................
+            === -HHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH-HHHHH-=HH=---------=
+                 CBBBBBBBBBBBBBBBBBBC BBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBCCCCCCBBCBBCBBBCCC CCCCCCC CBBCC  CC
+                  VVVVVVVVVVVVVVVV      VVVVVVVVVVVVVVVVVVVVV       VV  V
+                   A          AA            A      A
 +)1AMMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        --++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           .............................................................................................................
+            ====HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--HHHHHHHH-----HHHHHH--
+                BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBCBBBCCCCCCCCBC C  CBCBCCCC     CCBCCC
+                VVVVVVVVVVVVVVVV V V   VVVVVVVVVVV VVVVV VVVV        VVV
+                   A                                 AA
 MOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ ===-- --++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X
+         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         ...............................................................................................................
+          ===HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HHHH-H-H---HHHHH-===-
+             CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBCBBCCBCBCBBBCCCCCCCCC   CBBC C B   CCCBC
+               VVVVVVVVVVVVV VV V V VV V VVVVVVVVVVVV VVVVVVV       VV  V
+                  A    A                               A
 OMOMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+- -   -++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++
+        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        ................................................................................................................
+         ---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH-----HHH-H-HHH-H--HHH--===
+            CBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBCCCBCCCBBCBCCBCC CCCC     BCC C BCC C  CCC
+             VVVVVVVVVVVVVVVVVVVV  VV VV   VV VVV VVVVVVVVV   V V   VVV
+                A    A     A
 ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -=++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX
+     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ...................................................................................................................
+      ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHH-==--
+        CCBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBCCBCBBBCCCCCBCCCCCCCCBBCC CCCCCCCCBCC
+            VVVVVVVVVVV VVVVVVVVV       VVVVVVVVVVVVVVVVVVVV       VV VV
+               A   A    A                           A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ ++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XX
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ .......................................................................................................................
+  =-=-HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----HHHHHH--HHHHH-HHHHH== =--
+      CBBC CBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBCCBBCBCCBCCCCCCC    CCBBBC  CCCCC CCBCC
+            VVVVVVVVVVVVVVVVVV VV    V VVV  VVV VVVVVVV  V  VV      VVVV
+                AA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=-HHHHHH- =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHH-HHHHHH===-H-
+  CBBBBB    BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBCCBBBCCCBCCCCCCC BBBCCCCCCCC CCBCCC    C
+             VVVVVVVVVVVVVV VVVV   V  VVVVVVVVVVVVVVVVVVV  V   V   VVVV                          V
+                                                A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XXXXXXXXXXXXXXXXXX++++XX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHH-=== =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----=---=-HHHHH--H----HHHHH=  =--=
+BBBBB       CBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBCCCCBBCCC          CCCCC  C    CCCCC
+  V          VVV VVVVVVVVVVVV VV   VVVV   VVVVVVVVVVVVV  VV   V   VV VV
+               A   A  A    A         A          A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHH= HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH---HHHHH--HHHHH-HHHH-- = ====
+BBBB  CCBCCCBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBCBBBBBBBCCCCC CCCC   CCCCC  CBCCC CCCC
+ VVV         V VVVVVVVVVVVVVVVVV  VVVVVV VV VVVVVVVVVVVV   V       VV
+  A                  A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH--H-HHHHHH-HHH---HHH-- =  ====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBCCBBBBBCBCCCCC CCCCC  C BBBCBC CCC   CCC
+ VVVV VVV V VVVVVVVVVVVVVV VVVV   VVVV VVVVVV VVVVVVVVVVVVVVV
+  AA              A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................................................. ......
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH--HHHHHHHHHHH-H-HHHHH-=  ===--
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBCBBBCBC CCCCCC  CCCCCCCCCCC C CCCCC
+ VVVVVVVVVVVVVVVVVVVVVVVVVVV V    VVVV VVVVVV  VVVVVVVVVVV        VVV
+  AA            A                                     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ .......................................................................................................................
+ -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HHHHHH--HHH---HHHHH=   =====
+  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBBBBBBBBCCBBBBBCCCCC   CCBCCC  CBC   CCBBC
+   VV VVVVVVV VVVVVVVVVVVV  VVV  VVV  VVVVVVV VVVVVVVVVVV    V     VVV
+      AA          A    A
 =MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XX
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ......................................................................................................................
+  HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHH-HHHHH-=   ===--
+  CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBCCCCCBCBBBCCBBCCCC  CCBCCCCCCBCCC CCBBC
+   VV V VVVV   VVVVVVVVVVVVVVVV  V    VVVVVVVVVVVVVVVVVV  V         VV
+         A
 ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  +XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++XX
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ......................................................................................................................
+  =HHHH=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H---HH-HHHHH-H---HHHHH     ===-H
+   BBBB BBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBCBBCBCCBBBBC  C   CB CCCCC C   CBBCC         C
+    V V  V   VVVVVVVVVVVVVVVVVV VV    VVVVVVVVVVVVVVVVVVVVV
+               A       A  AA                     A
 OAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++ ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXX++++++++XXX
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ......................................................................................................................
+   =HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----=-HHHHHH-HHH-HHHHHH= =   ==---
+    BBB BBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBCBBBBBBBBCCCCCCC      CCCCCC CCC CCCCCC
+     VV  VVVVVVVVVVVVVVVVVVVVVV V VVVVVVVVVVVVVV VVVVV VV  VV  V  VVVV
+              A  A                                 A
 OXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++ +=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXX
+' ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.   ............................................................................................................. ......
+    -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHHH-HHHHHHH-HHH-==     --HH
+     BBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBBCCCBBC CC CCCBCC CCCCCCC CBC          CC
+      VVVV VVVVVVVVVVVVVVVVVV   VV  VVVVV  VV VVVVVVVVV    V           V
+              A    A  A    A                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++-+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++XXX
+' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''
+. . ............................................................................................................ . .....
+     -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHHH-HHHHH-H-H-=H==    ==HHH
+      BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBCCCCC C CCBBCBBC CCBBC C C  C        CCC
+        VVVVVVVVV VVVVVVVVVVV  VVVVVVVVVVVVVVVVV   VV   V V        V
+           A A  A      A             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+++++++XXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '' '''''
+ .. ..........................................................................................................  .. .....
+      HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH---H-=HH=     =-HHH
+      BBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBCBCBCCCCBBBCBBCCC CC   C  CB        CCC
+       VVVVVVVVVVVVVV VVVVVVVV  VVVVVVV VVV VV   V VVVVVV V     VVVVV
+         AA A   A       A            A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXX
+ ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''
+ .............................................................................................................   .......
+    ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHH--H---HHHH      =-HHH
+      CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCBCBCCCC CBCBCBCCCCC  C   CCCC        CCC
+       VVVVVVVVVVVVVVVVVVVV     VV VVVVVVVVVVVVVVVVVVVVVV V       VV  V
+            A A                       A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=+++++XXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''''
+..............................................................................................................   .......
+  -== =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH-HH-HHHHH-     ===---
+       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBCBBBBCBBBBBCCCCCCCBBBBBC CCCC CC CCBCC
+        VVVVVVVVVVVVVVVVV VVV VV V  VVV V V VV V V    VV   V     VVVV    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''
+..............................................................................................................  ........
+==HH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH--HH-HHHH=      =H---
+  CC   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBCBCBBBBBBCBBBCBBCBCCCCCCCCBCBCCC CCCC  CC CBBC        C
+        VVVVVVVVVVVVVVVVVVVV   VV VVVVVVV VVVVVVVVV VV V          V V
+           A        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=++++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''
+.............................................................................................................   . ......
+==H=H=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHH---HHHHHHHHHHH-=   = =-----
+  C C  CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBC CCCBBBBC   CCCCCCCCBCB
+         V VVVVVVVVVVVVV VV    VVV V VVVV VVVVVVVVVVV     V       VVV
+                                             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''
+..............................................................................................................  ........
+HH-=HH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHH-=   = =-----
+CC  BB  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCCCBBCCCBCBBBBCCCBB  CBBBBBBC
+        VV  VVVVVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVVVVVVVVVV       VV V V
+                 A                  A A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''
+.............................................................................................................   ........
+HH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHH-HHHHHHHH-     ==-----
+BB  BBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC CCCBBBBCCCCCCC CCCCBCCC
+ V      VVVVVVVVVV V   VVVV  V VV VVVVVVVVVVV VVV VV    V  VVVV  VVVVV
+           A            A              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++XX+X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
+.............................................................................................................   ........
+HHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHHHHHHH-      ==--=-
+CBBB  BCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCBCBCCCCCCCCBBBCBC CC CCCCCBBBCC
+ V      VVVVVVVVVVVVVVVV VV    VVVVVVV  V VVVVVVVVV   VVV VV V    V
+          A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
+.............................................................................................................   ........
+HH-H HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHH-    = =---H-
+CB B CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCCCCCCBBBCCCCC CCCCBBBCBBC           C
+   V     VVVVVVVVVVVVVV VVV   VVV VVVV VV VV V  VVV   V VVV V    VVV    V   V
+          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
+............................................................................................................    ........
+HHHH=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHH-    == HHHH-
+BBBB CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBCBBCBBBCCCBCCCBBCCCCCC  CCCCCBBCCCC        CCCC
+VV V  VV VVVVVVVVVVVVVVVVV   V VVVVVVV  VVV VVVVVV  VVVV V        V   V
+            A A                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''
+............................................................................................................   .........
+HHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H-HHHHHHHHHHH-=     ==-HHH-
+BBBBBC BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBCCBBCBBCCCCCCCCCCCCBCC   C CCBCCCCCBBC          CCC
+  VV    VVVVVVVVVVVVVVVVVV    VV VVVVV VV      VV V
+          A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''
+............................................................................................................   .........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=    ===HHHHH
+BBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCCBCCCCBBBCCCCCCCBCCCCBBCCCC         CCCCC
+  VVV    VVVVVVVVVVVVVVVVVVV VVV  VVV VVVVV VV VVVVVV V     V VV VVVVV
+          A AA   A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=++++++XXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''
+............................................................................................................  ..........
+HHHHH=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHHHHHH-=   === HHHH-
+CBBBB CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCBCCCBBBCCC C CCCBCBBCBBC         CCCC
+  VV      VVVVVVVVVVVVVVVV    VVVV  VVV VVV  VVV VV   V  V     V  VVV    V
+                 A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................................................................ ...........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHH==   ====-H---
+BBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBCCCBBBBCBCC  CCCBCBBBCBCC          C
+ VVVV    VVVVVVVVV VVVVVVVV  VVVVV VVVVVVVVVVVVVVVVVVVVVVV V V V V V V   V
+                     AAA             A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................................................................  ...........
+HHHHHH HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHH-HHH----HHHHHH---   ==  =----=
+BBBBBB CBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCBBCCCCBB C CCBCBC CCC    CCCCCC
+V VVV   VV VVVVVV  VVVVVV V  V V VVV VVVVVVVVVV VVVVV VV       V  V
+           AA AAA    AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................................................................  ...........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=    == =-H---
+BBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCBBBBCCBCCBCCCCCCCCBCCC           C
+V VVVV  V VVVVVVVV  VVVVVV    VVVVVV  VVVVVVVV VVVVVVV   V    VV VVVV    V
+                A                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''
+...........................................................................................................  ...........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH-H-     ====-----
+CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBCBBBBBBBBBBBBBBBBBBBCCCBBBCBBCCCCCCC CCCBCC C
+   VVVV   VVVVVVVVVVVVVV V    V VVVV  V VVVVV VVV VV    V       VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++XXXXX
+'' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''
+.  ........................................................................................................ ............
+H  HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---   ======--HHH
+B  CBBB CBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBCBBBBBCCCBBCCCCBBCCCC              CCC
+    VVV   VVVVVVVVV VVVV V      VVV V V  VVV VVVVV VV   VV    VV VV  V  V
+                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++XXXXX
+'' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.. .......................................................................................................  ............
+H= HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-=  = =====-HHHH
+B  CBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBCBCCBBBCCBCCBCCBBCCBBCC CC            CCCC
+V    VV  VVVVVVVVVVVV V VV   VVV  VVVV VVV VVVVV VVV   VV V   V  V V V
+                                   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=+++++++XXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''
+..........................................................................................................  ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---   =  = =-HHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCCCCCCBBCCCC             CCCBC
+V  V  V  VVVVVVVVVVVVVVVV  VVV VV VVVVVVVVVVVVV  V VV V V V    V  VVV               V
+            A     A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++XXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''
+.......................................................................................................... .............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH--     = ==-HHHHH
+BBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBCCCBCCCCCCBCCC CC            BCBBB
+V  VV VV  VVVVVVVVVVVV VV  V VVV VVV  VVVVVVVV VVV V             V
+           A     AA                   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++XXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''
+......................................................................................................... ..............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHH-H-     == ==-HHHHH
+BBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBBCBBCBCB CBBBCCCC C            BBBBB
+V    VVV  VVVVVVVVVVVVV     VVVVV VVVVVV VV VVVVVV  VVV V       V VVV V  V
+                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++XXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---=   ==== ==HHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBCBBBBBBBBBBBBBBBBCBCCBBBBCBCCCCBCCBCCCC              CBCBBB
+VVVV  VV  V VVVVVVVVVVVV   VVVV VVVV VVVVVVV VVVVV  V  V V     V         VV       V
+                   A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+++++++++++XXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................... ..............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=---=    === ==HHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBBBBBCBCCCCBCCC                CBCBBB
+VVVVVVVV  VVVVVVVVVVVVV VVVVVVVVVV V VVVVVVV VV VV VV V V      V      VV  V V
+              A     A            A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++XXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H-==    === =-HHHHHH
+BBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCCBCCCC  C             CBBBBB
+VVVVV  V  VVVVVVVVVVVVVVV VVVV VVVVVVVVV VVVVVVVVVVVVVV V V    V V V  V  VV
+            AA    A             A             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++XXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-=   ======HHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBCBCCBBBCBBBBCBCBCCCCC CCC           CCBCBBB
+VVVVVVV V VVVVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVV VVVVVVV  VV         V  V V  V V    V    V
+                 AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''
+.............................................................................................................. .........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==   =  =  =-HH-HHH
+BBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCBCBBBCBBCCCCBCCCCC              CC CCC
+       VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV  V  V     VV  V V
+            A        A             A         A
 OOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+ +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++XXXXXXXX
+''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+... .......................................................................................................... .........
+HH= =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H---==  ===  =--HH-HH-
+BB   BBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBCC  C               CC CC
+VV    V   VVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVV VVVV       V VVV V               V
+           A   A                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++XXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................................................................................................. .........
+HHH=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---=== === = =-HH----H
+BBB  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCBBBBBBBCBBCCCC               CC    C
+VV     V   VVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVV VVVVVVVV V   V    VVV VVV V   V
+               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++XXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-== ====   =--HH-H-HH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCCBBBBBCCCBCCCCC C              CC C CC
+VVVVV VV VVVVVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVVVVVVVVVVV    VV    VVV  VVV    V
+                A      A       AA     A  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
+............................................................................................................. ..........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=== ===    =---H----H
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCBBBBCBCCBCC                C    C
+VVV VVV   VV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V V    V V     V   V VV       V
+                 A  A        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=========  =------H--
+BBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCC                  C
+VVVVVVV   VVVVVVVVVVVVV  VVV VVVVV VV VVVVVVVVV VVVV V  V       VV  V    V    V        V
+A                                          A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................................................................ ...........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==== ====   ----------
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBCBCBCC
+VVVVVV VVVVVVVVVVVVVVVV   V VVVVVV   VVV  VV VV VV VV         V   V      V    V V   V V
+                  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++XXXXX+XX+X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................................................................ ...........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---== ====   =-----=--=-
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBCBCCBCBCC
+VVVVVVVV V  VVVVVVVVVVVV V  VVVVVVVVVVVVVVVVVV VVVVVV V  V VV VV VVVV  V      V
+A                 A             A     AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++=++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''
+...........................................................................................................  ...........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH-========    ====   == =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBCCCCCCCCCCCCCBCBBC CCCC
+VVV  V VV  VVVVVVVVVVVV   VVVVVVVVVVVVVVVVVVVVVVVV   V VVVV    V     V
+  A                  AA      A  A A           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXX+++++X+XX++++++X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=--=---=   =-=--======-
+BBBB  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBCC
+VVV   V VVVVVVVVVVVVVVVV VVVVVVVVVVVV VVVVVVVVVVVVVV      V        VV V V        V  VV
+A           AA    A   A         A A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++X+++XX+++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH------===  ==-===--=====
+BBBB CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBCBCCCCCCC
+VVV        VVVVVVVVVVVV  V VVVVVVVVVVVVVVVVVVV  VVVV V    VVVVVVV  VVV VV        V  V
+                             A  A      A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXX++X+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................... ..............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----H----==  =---H--==-===
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBCC    C            C
+VVVVVV VVVVV VVVVVVVVVVV VV VVVVVVVVVVVVVVVVVVVVVVV     V  V  V VVVVVVVV  V     VV   V V
+ A             A    A        A   A  A   A  A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+X+++++XXXXXXX+X++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................... ..............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-=--=-==  =-------=-====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC C
+VVVV VV VVVVVVVVVVVVVVV VVVVVVVVVVVVV VVVVVVVVVVVVV VVVVV    VV    V VVVVV       V V V
+A              A  AAA                   A      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++XXXXXXX+X+++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................ ...............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH------=-=   ---HH--=-=====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC               CC
+VVVVVVV VV VVVVVVVVVVV V VVVVVV VVVVVVVVVVVVVVVVVVVVVV VVV     V V   V   V    V    VVV VV
+   A          A   A         A       A            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XX+XXXXXX+XX++X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH-H--== =--=--H---=--==-
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCCC  CC C           C
+VVVVVVVV VVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVV V      V V  V   V   V VVVVV
+ A A AA           A              A     AA    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXX+XXXXX+XX+X++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH---== =---=HH-H-=--=-==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCCC CC           CC C
+VVVVVVVV VVV  VVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVV  VVV             V VVV        VVV
+  A   AA       A                A       A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXX++XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H--=  =-H-HHH-------==--
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBC  C       C CCC
+VVVVV VVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVV VVV        V V   V VV   VV VVVV V
+  A         A   A   A            A    A   A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXX++X+XXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----= ==------HHH--==-=---
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCC              CCC
+VVVVVV V   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V VVVV   V   V VVVV V     VVV V  V
+A   A                      A   A     A AAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXX++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--== ==--H-------------==
+BBBBBB CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCC         C
+VVVVV   V VVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V    V VVV VVV V   V  V
+                AA         AA       AAA  A  A   AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXX+XXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=====HHH--=------HH-----
+BBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCBCBCC     CCC         CC
+VVVVV  V VVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV    V V    VVV VVVVVVV V   V V
+A                A       A A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXX+XXXXXXXXXX+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-===--H----=--HH------===
+BBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCCC C      C       CC
+VVV V VVVVVVVVVVVVVVV   VVVVVVVVVVVVVVVVVVVVVVVVVVVV V   V  VV V      V V        V
+A                 A                AA          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXXXX+X++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=-=--H---HH---H------=-==
+BBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC       C   CC   C
+VVVVVVVVVVVVVVVVVVVVV   VVVVVVVVVVVVVVVVVVVVVVVVVVVV VV VVVVVVV   VVVVVV V   V VV VV
+               A  A              A  A  A A  A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXX+XX+++X+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--==---H--HH---H-H-=--===-=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBC C       C  CC   C C
+VVVVVVVVVVVVVVVVVVV V  VVVVVVVVVVVVVVVVVVVVVVVVVVVVV        VV V  VVVV V         V V
+  AA      A A A A             A A     AA A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X++XXXXXXXXXXXXXX+XXX+++X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--===-==-----HH----H--=---===-
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCC             CC    C
+VVVVVVVVVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVVVVVVVVVVVVV     V   V  V   V VV VV      V
+A A  A        AAA      A A      AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+XXXX+XX+X+++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-----------=HHH-=-H--=--=-=====
+BBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC            CCC   C
+VVVVVVVVVVVVVVVVVV V  VVV VVVVVVVVVVVVVVVVVVVVVVVVV V            VVV VVV VV   VVV
+A          A AA A                A   AA      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX+XXXXXXX+X+++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-----=-H-HH-HHH-=-------=-=====
+BBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC       C CC CCC
+VVVVVVVV VVVVVVVVVV   VVVVVVVVVVVVVVVVVVVVVVVVVVVVV V        V  V VV   V V VVV VVV
+  A AA                                    AA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXX++X++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H------H-HH-==-------==-====
+BBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBCCC  C      C CC
+VVVVVVV   VVVVVVVVV   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV     V   V   VVVV V V V  VVV V
+AAAAA          A         AA                   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXX+++X+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--H-----HHHH  --------===-===
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBC C  C     CCCC
+VVVVVVVVV VVVVVVVVVVV VVVV VVVVVVVVVVVVVVVVVVVVVV      VV  V  V    VV  VVV VV  VV
+A A           A       A     A  AA    A  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXX+++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................................... ................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-------HH-H= =-HHH--=========
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBCBBBBBCCCCC       CC C    CCC
+VVVVVV VVVVVVVVVVVVVV VVV VVVVVVVVVVVVVVVVVVVVVV VVVV      V    VVV      V V
+  AA           AA   A               AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+++++XXXXX++++X++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH--H=-HH-=====-----====-====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCCCBBBBBCBBBBBBBBBBBBBBBBBBCCCCC CCCCC  C  CC
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V                 VV V V  VV   V
+AA AAA  A   A                     A     A    AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXXXXXX++++X+X++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H----H-=====  --H-H---====-=-==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC C C    C          C C
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV         V     V  V     VVV VV
+A  AA                 A                AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+++XXXXXX+X+++++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HH-H-=--= =--H---=-=====---HH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCC   CC C         C             BC
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V        V      V VV       V
+  A  AAA       A  AA  A A      AA             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++XXXXX+X++++XXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H-HHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH----==-=  =-----=-====----HHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC   C BBBBBBBBBBBC CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC CCC                          CCC
+VVVVVVVVVV VVVVVVVVVVVVVVV VVV             VVVVVV V       VVV V V  V   V  V   V
+A A                    AA    A              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXXX++++++XXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----H--==== ===-H--======-----H
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCCC    C           C             C
+VVVVVVVVVVVVVVVVVVV VVVVVVVVVVV  VVVVVVVV VV VV V V        V V  VVV  V  VV VVVVVV
+AAA   A       AAAA        A       A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX++++XXX+++++X++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH----===--====---=====-==-----
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBCCBC CCC
+VVVVVVVVVVVVVVVVVV  VVV VVVVVVV  VVVVVVVVVVVVV VV                VV V   VVVVV   V
+A AA    A A    A                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++XXXXXX+++++++++XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H---==-====--H---=========-H
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCBBCBCBBBBBBBBBBBBBBBBBBBBCBBCCC   C            C             C
+VVVVVVVVVVVVVVVVV    VVVVV VVVVVVVVVVVVVVVVVVVV V               V      V  V  VVV
+A   A   A     AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++XXXXXX+XX+++XXX++X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H----==-== =H-H-H-=--===---==-
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCC C           C C C
+VVVVVVVVVVVVVVVVV   VVVVVVVVVVVVV V VVVVVV VVVVVV                V V     V  VV V
+A A A  AA  AAAAAA                           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++XXXXXX+++X+++++XXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--=-H-==HH----===-=====----
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBCBCCCCCC C    C   CC
+VVVVVVVVVVVVVVVVV   VVVVVVV  VV VVVVVV   VVVVV V                V VVV     V V  V V
+ A  AAA AA  AAAAA                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX++XX+++XXXXXXX+X+++X++XXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH==H-==--===HHH-H--=-===-==---=
+BBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBBBBBBCBBBBBBBBBBBBBBCCCC CC  C        CCC C
+VVVVVVVVVVVVVVVV  V VV  VVVVV VVVVVVVVV VVVVVVV V   V          V V V     VV
+A  A AAA    AAAA           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XXX++XXXXXXXXXX++XX++XXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=---=---==--HH------==--==---
+BBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBBBBBBBBBBBBBBBBBBBBBCCCBCCBC             CC
+VVVVVVVVVVVVVVV  VVVVVV VVVVVVVVVVV V VV    VV VV  V     V    VV VV
+ A AA  A A A             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+X+XXXXXXX+XXX++X+++X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-------=----=-=-------=---==-===-
+BBBBBBBBBBBBBBB CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBCCCCC
+VVVVVVVVVVVVVV   VVVVV VVVVVV  V VVVVVVVV   VV     V V          VV    V  V     VV
+AA AA   A  AA       A                 A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+XXX++XXXXXXXXX++++XXX+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHH---==-H=---==-----HH--====---===
+BBBBBBBBBBBBB   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBCCBCBBBBBBBBBBBBBBBBBBBBBBBC  CCC      C           CC
+VVVVVVVVVVVVV    VVVVVV   VV V  V   V VVVV        V             VVV   V   VV   V V
+ AAA A  A  A                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXX+++XXXXXXX+X+X++++X+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHH= HHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH===--H--===-----H-=-=-====-===
+BBBBBBBBBBBB  CBBBBBBBBBBBBBBBBBBBBBBBBBBBC   CBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBC CCCCC     C          C
+VVVVVVVVVVV      VVVVVVVVVVV  VV V   V             VV          V         V    V
+ A AA AAAA          AA  A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXX+XXXXXXXXXXXXXX+XXX++X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHH===HHHHHHHHHHHHHHHHHHHHHHHHHH-H---H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-==-HH--=---------H-H--=---==-
+BBBBBBBBBB   BBBBBBBBBBBBBBBBBBBBBBBBBB C   C  CCBBBBBBCBBBBCCBBBBCCCBBBBBBBCBBBBBBC CBCCC    CC            C C
+VVVVVVVVVV     VVVVVVVVVVVVVVVV  V               VVV          V V       V  V   VVV
+ AAAAAAA           AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXX+++X+XXXXXXXXX+XX++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHH==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H--=====-HH--===-=---HH----=--====
+BBBBBBBBB   BBBBBBBBBBBBBBBBBBBBBBBBBCCCC CCCCC  CCBCCCCBCBBCBBBBBBBBBBBBBBBCBBBBBBC  C        CC          CC
+VVVVVVVVV   VVVVVVVVVVVVVVVVVVVVV                  V                      V   V V
+ A AA A          A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+X++X+XXXXX+++X+XXXXXXX+X+XX+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=-H-=-= -=HHH--= =-=--HH---=-=--===
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC CC  CCBBBBBBBCBBBCBBBBBBBBCBBBBBB    C       CCC         CC
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVV VV    VV                                         V
+     AAAA   A   A A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++++XXXXXXX+++++XXXXX++++X+X+X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=-=----HH-HHHHHHHHHHHHHHHHHHHHHHH--=H--== =--H--H-= = =-HH-H====-=-=-
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBC       CC CCCBBCBBBBBBBCBCBBBBBCC   C        C  C       CC C
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV       V    V                     VVV   VV V
+     AA AAAAA  A AAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX++++XXXXX++++++XXXXXXX+XX+XX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-------==HHHHHHHHHHHHHHHHHHHHHHHHH--=--H-== =--HH-==   =--HHH--=--=--=
+BBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC C         CCCBBBBCBBBBBBBBBBBBBBBBC     C       CC         CCC
+VVV  VVVVVVVVVVVVVVVVVVVVVVVVVVV VV  V      V                  VV     V      VV V
+ A      AA AAAAAAA A  A AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+++++++XX+++++++XXXXX+++++X++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+H-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--------=--HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH---=--H== =  =--===  ==--HH-=====-==
+B   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC           CCCC CCBCCBBBBBBBCBBBBBBBBBBBBBC      C                  CC
+V    VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  V                                    V VV V
+       AAA   A AA A AA   AA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++++++XXXX++++XXXXXX+++X+++
+'' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  .....................................................................................................  ..............
+-   -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--=HH-=   ==HH--=  =----H-===-===
+     BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBB     CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBC C   CC       CC          C
+      VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  V     V           V       V    V   VVV VV  V
+         A    AA AA A    A    A A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX++++++XXXXX+=+++XXX+XX+++++
+  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''
+  .......................................................................................................  .............
+   -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---==HH-   ===--H--    =---=--=====
+    CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBB C    CCBBBBBBBBBBCBBCBBBBBBBBBBBBBB     CC         C
+     VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV                                  V
+       A     AAAAAA AA  A  A A  AAA
 -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOO
+  +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXXX++++++XXXX++- ++++X+++++++
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''
+  ........................................................................................................   ...........
+   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=--HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=--=-HH-    ==-H--=    ===-======
+   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCC   CCC CBBBBBBBBBBCBBBBBBBBCBBBBBBBBBBC     CC        C
+    V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV                   V   VV         V  V  V   V
+       AA       A   A           AA
 --OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+)OOOOOOOOOOO
+  +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+XXX+++++++XXXX++  ++++XX+++++
+   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''
+   .......................................................................................................    ..........
+   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==--=-H-==    =H---     ===--===
+   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBC    CBBCCCBBCBBCBBBBBBCCCBBBBBBCBBBBBBBBBC      C        C
+    VVVVVVV VVVVVVVVVVVVV VVVVVVVVVV                          VV             V   V
+       A A     A A  A AA    A A AA
 --OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZMOOOOOOOOOO
+  =XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXX+++++++X++++=  +++X++++++
+   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''''
+   ........................................................................................................    .........
+   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=--=-H-=    ==- = =     =-===  =
+   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCC  CBBBCCCBBBBCBBBBBBBCCCBBBBBBCBCBBBCCCCCC       C
+    V  VVVVVVVVVVVVVVVVVVVVVVVVVVVVV                           V
+            A   A         A  A
 -+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOO
+  +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++- -+++++++++
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''
+  ..........................................................................................................    ........
+   HH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-------=    ==== =       ======
+   CB  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC  CCCBBBBBCBCBBBCCCCBBBBCCBCCCBBBBBBBBBBBBBCC C
+    V  VVVV VVVVVVVVVVVVVVVVVVVVV              VV     V       VV        V    VVVV
+         A  A  AAAA A A A  A  A A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXOOOOOOOOO
+ =XXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX++++++++++++-  -=+++++++
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''''''
+  .........................................................................................................      .......
+  -HH==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHH-==HHHHHH-HHHHHHHHHHHHHHHHHHH----- =---   ======         = ====
+   BB  BBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBC CCBCCBBBBBBBCCC   CBBBCC CCCCCBCCBCBBBBCCCBC
+    V   VV  VVVVVVVVVVVVVVVVVVV
+        A   A  A    AA    AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXMOOOOOOOO
+XXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XX+++++++++++--  ++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''''''
+...........................................................................................................       ......
+HHHHH  HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHH-HHHH== =HHHHHHHHHHHHHHHHHHHHHHHHHH----H-====--= =  ===           = =
+BCBBB  BBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBB  CCBC CCBC    CCBBCCCCCBBBBBCCCCCBBBCBBB    C
+        VVVVVVVVVVVVVVVVVVVVVVV          V
+              A AA AAA    A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXAOOOOOOOO
+XXXXX=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXX+++++++++++=  -+++++++
+''''' '''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''     '' ''''
+..... .................................................   .................................................       . ....
+HHHHH -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-    -HHHHHHHHHHHHHHHHHHHHHHHHHHH---HH====---= == ====       =  = =
+BBBBC  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCCC      CCBBCCCCCCBBBBCBBBBBBCCCCCC   CC
+V V    VVVVVVVVVVVVVVVVVVVVVV      V   VVVV    V             V          V   V  V
+        A    A  A A A AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZZOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=  ++XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX++++XX++++++++++=+-  =++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''''''''''''''''''''''''''''''''''''''''''''''      ''''''
+.....................................................    ...........................................  .....        .....
+HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=    =HHHHHHH=-HHHHHHHHHHHHHHHHHH----HH-====--       =             =
+BBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBCCCCBBB       CCBCCCC  CCCCBCBCCBBBBBBCCC    BC
+VVVV   VVVVVVVVVVVVVVVVVVVVV
+        AA A     AAA AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++-   ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++==- ==+++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''     ''''''''''''''''''''''''''''''''''''''''''''' '''' '       '''''
+..................................................      ............................................. ...          .....
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---        =HHHHHHHH--HHHHHHHHHHHHHHHHHHH---HHH=======                   ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBB            CBCCBCCC  BBCBBBCBBBBBBBBBBCC   CCC
+VVVVV VVVVVVVVVVVVVVVVVVVVV    V
+ A            A  A  AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=-XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOMOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++X++    ++XXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX++XXX+++++++++-++++- ---- -+=++++
+''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''''''''''''''''''''''''''''''''''''''''''               ''''
+.................................................     ..............................................                ....
+HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=-==-=      =-HHHHHH---=HHHHHHHHHHHHHHHHHHH-==---==== =                  ====
+BBBC BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBB               BBCCCC    CCCCCCCBBCBCBBBBBCC
+VVV  VVVVVVVVVVVVVVVVVVV         V      V                 V                V
+A     A          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXAOMMOOOOOO
+X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++-   =++XXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++=---  -  ++++++
+''''''''''''''''''''''''''''''''''''''''''''''''     '''''''''''''''''''''''''''''''''''''''''''''''  '''         ''''''
+................................................     ...............................................               .....
+H===HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-==     ==--HH-HHH-=---HHHHHHHHHHHHHHHHHHH----H====                      ==
+B   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBC CCC            BB BBC     CCBCCCCBCBCBCCCCCCC    C
+     VVVVVVVVVVVVVVVVVV  V VVVV
+       AA  AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM++MXMOOOOO
+--+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++- -++XX+XXXXXXX+XX+XXXXXXXXXXXXXXXXXXXX++XXX+X+++++++--++--++      +++++
+  ''''''''''''''''''''''''''''''''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''   ''          '''''
+  .............................................    .................................................               .....
+   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==     =--=-H--HH-=--=-HHH-HHHHHHHHHHHH--H==---=-===  =                  ==
+   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBB             C  CC      CBC CBCBBCCBBCCC  C
+    VVVVVVVVVVVVVVVVVVVVVV   VVV
+     A      AA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZXMAOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++-++XXXX++XXX+XXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++=-++=++++     +++++
+'''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''  ''  '        ''''
+..............................................   ...................................................    .           ....
+=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=     =HHH-==---=H--=-=-HHHHHHHHHHHHHHHHH----HHHH-=-= =                 ====
+  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBCC       CCC       C      CBBCBBCBBBCBBBBCC    CCCC
+  VVVVVVVVVVVVVVVVVVVV VVV   V V    V
+       A    A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1))OOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XX+XX+++XXXXXXX++++XXXXXXXXXX+XXXXX++++++XXXX+++++++--=+=-====-   -++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                ''''
+.............................................. .....................................................                ....
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==   ==-H=--===---HHHH=   -HH--HHHH-=-----======-H--===                      =
+BBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBCBBCCBBBBCC        C         CCCC     CB  BCCC              C
+VVV VVVVVVVVVVVVVVVVVVV  V V
+A    A  AA A AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM1++OOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXX+++++XXXXXXXX+++XXX+XX++X++XXXXXXXX+++XXX+++++++=--+===++-     =+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''                 '''
+............................................. ..................... ................................                 ...
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---===  -HHH--=   =-HHHHHH-=  -H-=H-==-==HHHHH---===--H=====                   ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCCC         CCC        BCBCCC     C  C      CCCBC        C
+ VV VVVVVVVVVVVVVV   VVV V
+        A AA A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOOM-+OOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXXXXX+=+++XXXXXXXX++++++++++++XXXXXXXXXXX+++XX+++++++=--=-- === --   =++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''                 ''
+......................................................  ............................................                  ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===   =--H----   ==-HHHHHH-=  =========---HHHHHH--  =--== ===
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCBBCBCC          C          CBCBCC                CCCCCC
+  VVVVVVVVVVVVVVVV VVVVVV
+        A     A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOO+1OO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXXXXX+++++++XXXXXXX++++++++++++++XXXXXXXXXX++++++++++++---=  --=--=+-  ++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''             '    '
+...................................................... .............................................              .    .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==== ==--H-H--=  =   -------== =======  ==-HHH--HHH-=  ==== =
+CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC          C C                               CCC  CCC
+ VVVVVVVVVVVVVVVVVVVVV V V
+   AA  A   A  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMMOOOMOOOOOMOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXX++++++++++XX+XXXX+++XXX++++++++X++++XXXXX++++++++++++=  -  --- --++= -+
+''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' '            ''
+.....................................................  .............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----== ==--H-====     =--=----== ---== == ==-====-----==  = =
+BBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBBBBCC           C
+ VVVVVVVVVVVVVVVVVV VVV
+            AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-=1AMOZOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXX+X+++++++XXXXX+++XX+XXXXX+X++++X+++X+XX+++++++++++++++=-      - -==--=-
+''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''' '''''
+..................................................... .......................................     ....
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=====-HHH--=-=  =  =-----===--=-HHHH=-====-===-=--===
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCCCCC       CBC                       CBBC
+VVVVVVVVVVVVVVVVVVVV VV V
+   A   AAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA=-)AMMMOOOMOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXX+X+++++++++XXXX++++++++XXXXXXXXXXX+++XXXX+++++++++++++++++        -== --
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................... ...................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---== =--H-H--=-=      ==----==== = =HHH-H---H--===----===  = =  =  =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC         C C                         CCC C   C
+VVVVVVVVVVVVVVVVVVVVVV      V
+     A  A   A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-ZAMMMMOOOM
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXX++++++++++++++XX+++++++++XX+XX+X++XXXXXX+++++++XX++X+++++++++-        ---
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................... ....................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==  =H-HH-=====     ====--==  =    H-=--=-==HHH---=====  --==-= ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCC     C CC                          C        CCC
+VVVVVVVVVVVVVVVV VVVVV   V
+ A   A    A  AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+=ZM1AXZMMO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXX+++++++++X+++++++++++++XXXXXXXX+++X+XX+X+X+++++X++++++++++++=          -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
+...............................................................  .........................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH--= =--H-----===  =  =-  ===   === =-H-H---H===-=--=-=-== ==-====  ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB  CC       C                             C C   C
+VVVVVVVVVVVVVVVVV VV V     V V
+ A  AA  A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+1MAMXX1ZM
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXX++++++++++++++++++X++++XXXXXXXXXXXXXXXXXXX++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................... ..... .......................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH-===HHHH-HHH-== ==   === =    =-==  HH------H--H-HHHH--== ======== == =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB  CC    CCCC CCC                        CC      C  C CCCC
+VVVVVVVVVVVVVVVVVV VV        V
+    A AA AA  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1AMMXZ)+Z
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX++XXXXXXXXX+++++++++++++++=++++++++XXXXXXXXXX++XXXXXXX++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................  ..... .......................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=-HH-==-HHH-HH--= =  =   == =      =    -HHH--H-H-==-HHH-H-=    ==========
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC  CC    CBC CC                           CCC  C C    CCC C
+VVVVVVVVVVVVVVVVV VV V  V    V
+A  A A  AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMA+1)=)
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+++++++++++++++ -+++++++++XXXXX+XXXXXXXXXXX++++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''
+........................................................... .   ...... ......................... . ...........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-=-HHHHHHH-== = ==  ==        ====   HHHH-=-H----HHH--====        =   =   =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC CCC   CCCCCCC                           CCCC   C    CCC
+VVVVVVVVVVVVVVVVVVVV  VVVV   V
+AAAAA A A  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1)+=
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++XXXXXX+++++++++++++++++-  ++++++++++XXXX+++XXXXXXXXXX++++++++++++++++++++++++=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '   ''''''''''''''''''''''''''''''''''   '''''''''''''
+..................................................... .... .    ...... .......................       ..........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=H-H==HH--H-===   = =   ==        ===== ==HHH-===---HHHH-H-= =        ==    ==
+BBBBBBBBBBBBBBBBBBBBBBCBBBBBBBC C C  CC  C                               CBB       CCCC C
+VVVVVVVVVVVVVVVV VV         VV
+ A   AAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZ1
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXX++X++++++++++++=  ++++++++++XXXXXX++XXXXXXXXX+++++++=-++=-++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''' ''''''''''''''''''''''''         ''''''' ''''
+..........................................................     ....... .......................           ......
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-=-H-H-HH-==-  =    ===       === ==  --HHH-==-----H---====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC BC   C C CC                               CCB        C
+VVVVVVVVVVVVVVVVVVV VV VVVV V
+    AA A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOOOOOOOOOOOOM1)
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXX+X+++++++++++++=  ++++++++++++XXXXX+++XXXXXX++XX++++===== --- =+++++++++=+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''''''' ''''''''''''''''''''''''            ''''' '
+................................................... ....       ....... ......................                 ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==H--HHH-=-= ====  ==           = ==  =--HHH===H---H-==--
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBC  C  CCC                                 CBC   C   C
+VVVVVVVVVVVVVVVVVVVVVVV V  VVV
+ AA AAA  AA  A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAAXXXAOOOOOOOOOOOOA
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXX+++++++++++++  =+++++++++++XXXXXXX++XXXXXXX+XX+++++==--       -=+++++++==-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ' '''''''''''''''''''''''''''''''''              ''''''
+........................................................       ................................               ...
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH==HH-HHH---==== = =           ======  ----H--==--H-HH-=--==                  =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC CC  CC CCC                                  C      C CC
+VVVVVVVVVVVVVVVV VV    VVV VVV
+  A AAAA  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMXZ1)1ZZXMOOOOOOOMAM
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXX+++++++++=- -+++++++++++++XXXXXXXXXXX+XXXX+++++++=             -+++++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''''''''''''''''''''''''''''''                 ''''
+........................................................    ........... .......................                  ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-==HHHHHHH----=========       === ==   =H--HHHH----=-H--====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC C   CCCCCCC                              C  CBCC      C
+VVVVVVVVVVVVVVVV  VVV    V   V
+AA   A AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ1)=+ZMZZAMOOOOOOOX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXX++++++++++  -++++++X+++++++XXXXXXXX+XXXXXX+++++++++--             -=++++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''''''''' ''''''''''''''''''''''''                  ''''
+.......................................................    ............ ........................                    .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==HHHH----H-== == ==        == -==    =---HHHH-=------=====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCB   CBCC    C                               CCBC
+VVVVVVVVVVVVVVVVVVVV  VVVVVVVV
+A  A AA  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA11++)MAAXAAZAOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXX++X++++++==+++++++X+X+++++XXXXXXXXXXXXXXXXXX+X+++++-               -++++-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''                    '
+......................................................     ......................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==HHHHH--HH--==-===       =====-=-==  =--HHHHHHH-----H---=-= =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC   CCCCC  CC                              CCCCCCC     C
+VVVVVVVVVVVVVVVVVVVV V VVV VVV
+AAAA   A A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA1)++1XXMAAMA1ZMOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXX++++++++++++++X+X+X++XXXXXXXXXXX++++++X+X++++++=                 =+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''                   '''
+..................................................... .  ........................................                     .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH===HHHHHHH--------=      = =====-=-=-= -HHHHHHHHH-======-=-====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCB   CCCCCCC                              CCCCCBBBB
+VVVVVVVVVVVVVVVVVVVV V   V
+AA  AAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=+1))1AOOXZAM1)AOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXX+XXXX++++++++++++++XX+XX++++XXXXXXXXXXXX+XXX+X+++++++++-        -=       ++
+'''''''''''''''''''''''''''''''''''''''''''''''''''' '' '''''''''''''''''''''''''''''''''''''''''''                    '
+....................................................  . ..........................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH= =HH-HHHHH-=----=      =======--=--== =-H--HHHHH---=---=-=====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC   CC BCCCC                              C  CCBBC
+VVVVVVVVVVVVVVV VVVVVV   VV
+AAA   AAAAA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=-+1ZAZMOO)XZ1=-XM
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXX+X++++++++++XXX++X+XX++++XXXXXXXXXXX+X++X+++++++++++-         --
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH- -HHHHHH------=-=  ==  = =---==-=-- = =--H---HHHH-=-==-=====  =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC   CBCCBC                                 C   CCBB
+VVVVVVVVVVVVVVVVVVVVVV  V
+   AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+=))1)AAOZ+1)+-=)
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXX++++++++++XXX++++XX++=+XXXXXXXXXXXX+++++++++++++++=-         -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''
+....................................................................... ...................... ...
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH- =HHHHHHH--HH---= = ======---====--=  =------HHHHH-===== ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC   CBCCCBC  CC                                CCBCC
+VVVVVVVVVVVVVVVVVV VVVV V VV VV
+AA  AAAA   A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+===+Z1AX=++==--
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXX++++++++X+++X+XXXXXX+ ++XXXXXXXXXXX++++++++++=+++++++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''  ''''
+......................................................................  .....................   ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH- =-HHHHHH-HH---=    ===-===-=----H-=  =----H-HHHHH=== == ==   =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC    CCCCCC CC                     C         C CCBCC
+VVVVVVVVVVVVVVVVVVV VVV VV V V
+   A AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+--=)++Z+-=-=--
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXX+XXX+++++++X+X+XXX+XX+XXX+=++XXXXXXXXXXXX+++++++++=-=++++++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''   ''' '
+...................................................................... ......................    ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH= -HHHH-H-=---==  == -=-=---=-H=---= ==HHH---HHHHH-====== =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC   CCCC C                     C        CCC   CBCBC
+VVVVVVVVVVVVVVVVVVV V V   VV  V
+  AAAAA AA       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1-===)11  =+--
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXX+++++++XXXXXX++XXXXXX++++XX++XXXXXXXX+++++++++=--++++++--
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''
+..............................................................................................     ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H==-HHHH-HH----== ====---HH-==-H--H-= ==HH==--HHH-HH= === ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB C   BCBB CC              CC    B  C     CC    CCB BC
+VVVVVVVVVVVVVV  V VVV V VV VVV V
+  AAA A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMOOOOOOOMX)===++=--=)=
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXX++++++XXXXXXX+XXXXXX+++++XXXXXXXXXXXXX+++++++++   =+++=--
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH- =HHHHHHH----======-H-----=-HH--H  ===HHH--HHHHHHH-=======
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC   CCBCBCC           C       CC  C     CCC  CCCCCCB
+VVVVVVVVVVVVVVVVVVVVVVVVVV VVV V
+AA   A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOMAAA1++==+=-=)=-
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXX+X+++++XXXXXXXXXXXXX+X++XX+XXXXXXXXXXXXX+++++++++- --=---=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH- =HHHHH-H--=-=====-H--------HH-=-==--=-HHH--HHHHHHH= = ===
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC   CBBCC C          C        CC         CBC  CBCCCCC
+VVVVVVVVVVVVVVVVVVVVVVVVVVVV   V
+ A AA        A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1ZAOOMMOOOMMX)=+===---+-
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXX+XX+++++XXXXXXXXX+XXXX+X++XX+XXXX++XXXXXXX++++++++--   --  ---
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH====HH-HH-=--=====---H-----=-HH-=H==--=-HHH==-HHHH-H== ====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC    CC BC            C       CC  C      CCC   CCCC C
+VVVVVVVVVVVVVV V VVVVVVV V VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAAAAXAAXAMXZ1+=-==-=+)=
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXX++XXXXXXXXXXXXXXXXX+X++XXXXXXXXXXXXXXXXX++++++++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH== =HHHH-----==----HH-HH---HHHH-=- =---HH-H---HHH-HH-=  =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB    CCCC           CC CC   CCCC        CC C   CBC CC
+VVVVVVVVVVVVVVVVVVVVV VVVV    VV
+AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXX))))11XMX)+-----==+)
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXX+XX++XX+XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXX++++++++=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH= =-H---=--==--=------------HHH-- ---H---HH---HH--HH=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC    C                       CCC      C   BC   CC  CC
+VVVVVVVVVVV   VVVVVVVVVVVVV VV
+AAAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX1+=+))1XXZ+=---=-=++
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXX++++XXXXXXXXXXXXXXXX+++XXX++XXXX++XXX+XXX++++++++==
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................................................   .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-= -HH-----====----H--H--H--HHH===-H-==-HHH==HHH=-HH==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC    CC             C  C  C  CCC    C    CCC  CCC  CB
+VVVVVVVVVV VVVV   V V V VV V   VV
+A A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM1+=-=++ZXMZZ-----++++
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXX++XXXXXXXXXXXXXXXXXX+XX++X++XXXX+XXX+XXXX+++++++==
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''
+..........................................................................................    .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--= =H-------==------------HHHHH-=--==-==-HH- -H-=-HH-=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB     C                     CCCBB          CC   C   CC
+VVVVVVVVVVVV VV     V VV   V  VV
+A  AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMM)=--=)1ZXZZ)-- -=+))
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXX+XXXXXXXXXXXXXXXXXX+XX+XXXXXXXXXXXXXXXXXX++++==+=-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '
+..........................................................................................    .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-= =-----H--=----H-HH-H-H-HHHHH=-H=-HH---H----H---HH-
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC         C       C CC C C CCCCC  C  CB   C    C   CB
+VVVVVVVVVVVVVVVV  VVVVV  VVV  VVV
+AAA A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOX=--=++1XAZ)=  - =)+
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXX+XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXX+++= -+++=--
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''
+..........................................................................................    .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-====---=----=--HHH---H-HHHHH--HH--H----=HH-HH---HH-=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC                CCC   C CCCCC  CC  C     CC CC   CC
+VVVVVVVVVVVVVV  VVV VVV     VV V
+A  A A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOM+--+==ZMMAZ+--- -)+
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX++XXXXXXXXXXXXXXXXXXX+XXX+XXXX+++X+XXXXXXXXXX++=+- ++==--
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''
+..........................................................................................    ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===--==H-------H---H-HHHH-=-H-=----===-=--H----HHH=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC        C       C   C CCCC   C             C    CCC
+VVVVVVVVV VVVV  V    V  V VV VV
+AAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAOOOOOOO))====+MOOX)=--  -)
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXX+X+XXXXXXXXXXXXXX+XXXX+++X++X++XXXXXXXXXXX+++  ++=+=-=        --
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '
+..........................................................................................     .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH====---H-=-=-HHH---H-HHHH-=----===- =-==H-------HH-
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC       C     CCC   C CBCC               C       CB
+VVVVVVVVVVVVVVV   V  VV VV V    V
+  A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1OOOOOOOX)))+)ZMOOMX+--   )
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXX+X++XXXXXXXXXX+XXXXX+++- -++==+=        =-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''
+..........................................................................................     ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-====-H-HHH-HHHHHH---HHHH-HH---=-==-----H----=-HHH-=      =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB      C CCC CCCCCC   CCCC CB            C      CCC
+VVVVVVVVVV  V  VVV VVVVVVV     V V
+ A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1OOOOOOOOMZZZ)AOOOOO1---  -
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXX+++XX+X+XXXXXXXXXXXXX+++- -+++++=-      =++--
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''' '
+..........................................................................................     ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-=====--H---H-HHHHHH-HHH-HHH--===--=-=H-H-----HHH--
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC C        C   C CCCCCC CCC CCC          C C     CCC
+VVVVVVVVVVVV VV   V VVV  V VVVVVV
+AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)AOOOOOOOOOMXZOOOOOMA--- -
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++X+X+XXXXXXXXXXXXXXXXXXXX+XXX+XXXXXXX+XXXXXXX+++   ++++++=--   -+++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''        ''
+...........................................................................................    ... .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-======-=-=--H---H-H--HH-HHHH--=---=---HH--=---HHH-=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB C             C   C C  CC CCCC          CC      CCC
+VVVVVVVVVVVV V  V V  VV V  V V
+A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+ZOOOOOOOOOOOAMOOOOMX)   -
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXX++X+XXXXX+++-  ++++++++++-  ++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''''    ''''
+...........................................................................................     .. ....     ...
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--= ==--H-HHH-H----H---HHHHHHHH-=-H-H-HH- =-=-HHHH=       =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCB        C CCC C    C   CCCCBCCC   C C CC      CCCC
+VVVVVVVVV V V  VVVV VV V VVV V
+ A AA     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+OOOOOOOOOOOOOOOOOOMZ-   -
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XXXXX++++  =++++++++++=+++++-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''  ''''
+............................................................................................    ........    ....
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--  ==-H--H---HH--HH--HHHHHHH--H--HH-HH-==-=--HH-==           =
+BBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBCCBC       C  C   CC  CC  CCCCCBC  C  CC CC       CC
+VVVVVVVVVVV VVVVV  VVVVV VV   VV V
+AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)OOOOOOOOOOOOOOOOOOA1=--
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXX+XXXXXXXXXXXX+XXXXXXXX+++XXXXXXX+++=  -+++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''''''''''''
+............................................................................................    .......... . ....
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-=  ==HH--------=------H-HH--=-H-HH-HH===-----H-==      ==== ===    = =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC CC      CC               C CC    C CC CC        C
+VVVVVVVVV VVV VV VV V VV        V
+ A   A A      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)AOOOOOOOOOOOOOOOOOM)=   -
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXX+XXXXXXXX++XXXXXXXXXX++XX+XXXX+X++-  +++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''''''''''''''
+............................................................................................    .................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-==  =-HHHH-------=--HH-HH-==-HH-HHHHH-==--=--HH=-      ====  ===    ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCB CC       CCCC          CC CC    CC CCBCC        CC
+VVVVVVVVVVVVVVVVVVVVVV     V VV V
+       AA     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)1OOOOOOOOOOOOOOOOOOX=
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++X+XXXXX+++   ++X+++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''    '''''''''''''''''
+............................................ ...............................................     ................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=   ==-H-HHHH-HH--HHHHHHHHHH----HHHH-= ==-=-----==     =-======== =====
+BBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBCCCCCCC        C CCCC CC  CCCBCCCCCC    CCCC
+VVVVVVVVV  VVVVV V VV   VVV V
+AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZOOOOOOOOOOOOOOOOOO1-
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+  ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXX++++=  -++X+XXXX++++++X++
+''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''    '''''''''''''''''
+............................................  ...............................................    ................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--   ==-HH-HHH-----H-HHH-HH----H---HH-  ----H---===     ==-=----=== ==-=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC        CC BCC     C CCC CC    C   CC       C
+VVVVVVVVV VVVVVVVV V    VVV   V
+A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1MOOOOOOOOOOOOOOOOOM+
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+= +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+XXXXXX+++++   ++++XXXXX++++++++
+''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''   '''''''''''''''''
+............................................  ...............................................    .................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=   ==HHHHHHHH--HHHHHHHHHH-HHHHHHH-=  -=--HH--===      ===-----== =====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCCCC        CCCCCCCC  CCCCCCCCCC CCCCCCC        CC
+VVVVVV VVV V  VVVVVVV  V     V
+                  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+AOOOOOOOOOOOOOOOOOM1--
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++ +++XXXXXX+X+XXXXX+XXXXXXXXXXXX+++++++XXX+XX+++++   +++X++X++++++X+++
+''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''     ''''''''''''''''
+............................................   ..............................................     ................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--     =-H-H--=-=---H-=-------HH---     ==---=--=        ==-==-======-===
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCCC         C C        C         CC
+VVVVVV VVVVVVVVVVVVVV    VVV  VV
+A  A   A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+ZOOOOOOOOOOOOOOOOOO+-
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+ -++XXXXXXXXXXXXXXXXXXXXXXXXXXXX++++X+XXXX+++++++-  =+++X+XX+++++++X+-
+'''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''''''''
+.............................................  ...............................................    ................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=  = ---H-H---HHHHHHH--HHHHHHHHHH== =-=-H--==  ==      ==-=--=======-=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBCCCC         C C   CCCCCCC  CBCCBCBCCB       C
+VVVVVV VVV   VVVVVVV   VV  V  V
+A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM11OOOOOOOOOOOOOOOOOO1+-
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+- +++XXXXXXXXXX+X+XXXXXXXXXXXXX+X++XX+XXX++++++++   -+++++XX+++++X+++=
+'''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''''''''
+.............................................  ...............................................    ................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--   = =HHHHH-----=-=------H-H--H-=-==--=HH-===  ===    == ==--=== =-==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCC C        CCCCC              C C  C        CC
+VVVVVVVVVVVVVV V VVVVVV V V
+AAA  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)MOOOOOOOOOOOOOOOOOX)---
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=+++XXXXXXXXXXXXXXXXXXXXXXXXX+XX+++X+XXX++++++++=   +X++X+XX+X+++++++
+'''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''    '''''''''''''''''
+.............................................  ...............................................    ................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H-=  ===-HHHH--HHHHHHHHHHHHHHHHH-=-H===- -HH= == ===    =- =-=--=-======
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBC  C        CCCC  CCCCCCCCCCBBBBBBC   C      CC
+VVVVVVVV  VV VVV VVVV      V
+AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)AOOOOOOOOOOOOOOOOOZ+= -
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++XXXX++++++++   ++X+XXXXXXXXXX+++
+'''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''    '''''''''''''''''
+.............................................  ...............................................    .................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-=   ==-HHHH--HHHHHHHHHHHHHHHHH-HH-=-H==--H-==  ===     =-=----------===
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCC CC        CCCC  CCCCCBBBCBBBBBBBC CB   C    C
+VVVVVVVVVVVVV  VV  VVVV  VV  VV
+ AAA   AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZXOOOOOOOOOOOOOOOOOM+)--
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX++X+XX+++++X++=  ++X++XXXXXXXX++++
+'''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''   '''''''''''''' ''
+.............................................. ................................................   .............. ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H= =---HHHHHHHHHHHHHHHHHHHHHHHHHH= --==-=HH=   =-=     =H==---H----
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCCBBBCCC  C      BCCCCCBCBBBCBCBBBCCBBBCCBB        CC             C     C
+V VVVVV  VVVV VV V VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)OOOOOOOOOOOOOOOOOO1+--
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX+XXXX+++++X++  ++XX+XXXXXXXX++++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''''''''
+...............................................................................................    ................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H=  -=-HHH-HHHHHHHHHHHHHHHHHHHHH--=-=--=-HH-=   =-=    =H-=--HHH-HH==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCBCBCC  C      BCB CCCCCCBBBBBBBBBBBBBBC         CB             C    CCC CC
+VVVVVVVV V VVVV VVVVVV V  V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=MOOOOOOOOOOOOOOOOM1+=-
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++++XXXX++++++++   +XX+XXXXX+XXX+==
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''''''
+........................................................................................   ....    ..............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH--HHH= ----HHHH-HHHHHHHHHHHHHHHH-HHH-=--====H-H-     ==    =--=-----=---=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC CCCB  CCC      CCCC CBCBCCCBCBBBBBBB BBC        C C
+VVVVVVV V VVVVVVV VVVV VV
+ AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+1OOOOOOOOOOOOOOXO1)=1-
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+=+++++++   +XX++XXXX+XXX+ -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''   ''''''''''''''
+........................................................................................  ......   ..............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH= ----HH-HHHHHHHHHHHHHHHHHHHHH----H=----H-=    ===    =--==-H--=--H
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCBCCCCCBBCC CC      CC CCBCCCCBBCBCBBBBBCCCC    C     C                   C     C
+VVVVVV VVVVVVVV  VVVVV                                            V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)ZOOOOOOOOOOOOOOMM++1AZ
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX++++++X++-  +XXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''
+................................................................................................   .............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-----======-HHH-H-HHHHHHHHHHHHHHHHHHH-HH--=-HHHH= = ==-=    =-H--HH-H----
+BBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCCBCBCCCC            CCC C CCBBBBBBBBBBBBBBCCC CC    CCCC              B  CC C
+VVVVVVV VV VVVVV     V    V                                      V VVVV
+AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)+OOOOOOOOOOOOOOZZ++XMO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXX+-+X+++++++  +XXXXXXXXX++++      -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''   '''''''''''''
+....................................................................................... ........   .............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H--H--HH-HHHHHHHHHHHHHHHHHHHHHHHHHHH===HH-=  -   ===    -HH--HHHH===
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCCBCC  C  C  CC CCCBCBBCBCBBBBBBBBBBBBCCCCC   CC                CC  CCCC
+VVVVVVVVVVVVVVVVVV  V V   V                                     V VVV V
+  A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)OOOOOOOOOOOOOO+)=)AMO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==+XX+++X++  +XXXXXXXXXXX+-      +
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''    ''''''''''''
+......................................................................................  ........    ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----=H-==H-H-HHHHHHHHHHHHHHHHHHHHH--HH--HH--   --= =-=    -HH--H--H--=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCCCCCCBCC     C   C C CCCBCBBBBBBBBBBBBBCBC  CC  CC                 CB  C  C
+VVVVVVVVVVV VVV  VVVVVV                                            VV
+  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+OOOOOOOOOOOOOA++=)OOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++X+++++++- -+XXX+XXXX+X+     -=+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''   ''''''''''''
+......................................................................................  ........    ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-H--HH--HHHHHHHHHHHHHHHHHHHHHHHHH-HHH--H-==   -==  ==    =-HH=-HHH=-=
+BBBBBBBBBBBBBBBBBBBBBBBBCBCBCBBBBCCCC CCBCC C  CC  CCBCCCBBBBBBBBBBBBBBCCCBB CCC  C                   BB  CCC
+VVVVVV VVV   VVVVV VV V                                            VV
+A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-AOOOOOOOOOOOO)=+)ZMOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX++++++X+++XX+-  +XXX+XXXXX++      +=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''   ''''''''''''
+....................................................................................... .........   ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-HHH---HHHHHHHHHHHHHHHHHHHHHHHHH-HH=-=--=    =- ==--=   =-HH=HH---=
+BBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBBBBBBCC CCBBC CCC   CCCCBBBCCBBBBBBBBBBBBBBCC CC                       CC CC
+VVVVVV VVVVVV VVVVVVVV                                            VVVVV
+ A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1ZOOOOOOOOOOOO)==AMMOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX++++++XX+++XX+  +XXXXXXXX+++      +=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''   ''''''''''''
+.....................................................................................   .........   ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HH----HHHHHHHHHHHHHHHHHHHHHHHHH-=--H-=    =-- ==H-   =HHHH-HH-==
+BBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBCCBCBCBC   CC    CCCBBCBBBBBBBBBBBBBBBBBCB    C            C     CCCC CC
+VVVVVVVVV V VVVVVVVV  V                                            VVVV VV
+AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1OOOOOOOOOOOO)=+MOMOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XX++++X++  +XXXXXXXX+++    - ++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''  '''''''''''        '
+.....................................................................................  ...........  ...........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H-HHHHHHHHHHHHHHHHHHHHHHHHH---HH=    =--====-=    -H--HHH-=
+BBBBBBBBBBBBBBBBBBBBBBBBCCCBCCBBBCBBCCCCCCBCCCCCC  C CCCCBBCBBBBBBBBBBBBBBBBBC   CC                   C  CCC
+VVVVVVVVVVVVV  VVV  V  V                                                VV
+AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXOOOOOOOOOOOO1-)OOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=++XX++++XXX+  +XXXXXXXX++=   =+=++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''   ''''''''''       ''
+.....................................................................................  ...........   ..........       ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH--=   =-H====---=   -HHH--H-=
+BBBBBBBBBBBBBBBBBBBBBBBBCCBCBBCBBBBBCCCCBBCBCCCCCCCCCCCCBBBBBBBBBCCBBBBBBBBCBC CC        C            CCC  C
+VVVVVVVVVV VVVVVVV VVV                                       V       VVV V
+ AAA       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOO1=ZOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+++++XX++XX+XX+= ++XXXXXXX+++   =++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''   '''''''''''    ' ''
+....................................................................................  ............   ..........       .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H-HHHHHHHHHH--HHHHHHHHHH=-HH--    =-H==--=H-=   =HH-HH-H==
+BBBBBBBBBBBBBBBBBBBBBCBBBBCCBBBBCBBBBCCCBBBBCCCCBCC  C CBBCBBBBCC  CBBBBBBBBC  CC        C     C      CB CC C
+ VVVVVVVV VVVVVVVVV   V           V                         VV       VVVV
+ A A  A        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+1OOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXX+XXXXX++-++X+++XXX+X++==+XXXXXXXX++   +++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''  '''''''''''   '  ''
+....................................................................................  ............   ...........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH--H--H-HHHHHHHHH-==HHHHHHHH-=---H-    =-= =H--=-=   =HHHHHHH-=
+CBBBBBBBBBBBBBBBBBBBBBBBBBCCBCBBBBBBCCCCCCBCBC CC  C  C BBBBBBCCC   CBBBBBBC     C          C         CCCCCCC
+ VVVVVVVVVV VV V V   V                                                   V
+ AAAAA       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX))OOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XXXXXXX++XXXXX++++XX++XXXXXXX++++XXXXXXXX++   +++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''    ''''
+.................................................................................... ..............  ...........      ..
+-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHH-HHHHHHHHHHHHHHHHH-==-=HHHHHHH==-HHH-   =--==HHHH---   =-HHHHHH-=
+ BBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBCCCB BCCCCCCCC CCBCCBCCCBBCBBBBC     CBBBBCC   CCC         CCCC        CCCCCC
+  VVVVVVVVVVVV VVVV                                                    V
+  AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+ZOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXX+++++XXXXXXXXXXX++++XXXXXXXX++   +++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''
+.................................................................................... ..........................       ..
+=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHH-===-HHHH-----HH-=    ---H-HHHH--   =HH-HH-H-=
+  BBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCBBBBCCCCCCBCC CCCBCBCCCBBBBBCCC     BBBB     CC         C CCCC      CB CC C
+   VVVVVVVVVVVV  VVVVVV V                                   V          VV
+    AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)XOOOOO
+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXX++++XXXXXXXXXXX++++XXXXXXXX++   +++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ''''
+...............................................................................................................      ...
+ =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H-H----HHHHHHHHHHHHHH-===-HHHH-HH-HH---   =HHHHHHHHHHH==  -H-H----=       ==
+  CBBBBBBBBBBBBBBBBBBBBBBBBCCBBCBCCBBCCCC   C C    CCCCCCBBCCCCCC     CBBB CC CC       CBBCCCCCCCC     C C
+   VVVVVVV VVV VVV VVVV V
+        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZMOOOOO
++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXX++++XXXXXXXXXXXX+++XXXXXXXXX+-  +++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''
+................................................................................................................    ....
+= =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHH--==-HHH--HHHHH---=  =HHH--HHHHH--== -HHHHHHH-     =
+   CBBBBBBBBBBBBBBBBBBBBBBBBCCBBBCCCBBBBBBBC CCCCCCCCCBBBBBCBCCCC     CBB  CCCCC       CBB  CCCCC      CCCBCCC
+    VVVVVVVVV  VVVVVVV VV      V                                        V
+     AAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOO
++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXX+++XXXXX+X++++XXXXXXXXXXX++++XXXXXXXXX++- =++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''
+................................................................................................................    .. .
+===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-= ==HH-===--HH-=-=  =HHHH-HHHHHH==  -HHH-HHH-=
+    BBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBCBBBCCCCCCCBCCCBCCCBBCBBBCCC C     CC      BB       CCBC BCCBCC     CCC CCC
+     VVVVVVVVVVVVV VVV  VV
+     AAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX++XXXXXXX+++XXXXXXXXXXXXXXXX+++XXXXXXXXX++--++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''
+.................................................................................................................    . .
+===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH===HH= -HHHHH-== ---HHHHHHHHHH---= =HHHHHHHH-
+    BBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCBCBBBBCCCCCCCCBBCCBCBCBBCBCCBCCC   CB   CCCCC       CCCCCCBCBC      CCCCCCCC
+     VVVVVVVVVV VVVVV VV  V            V
+     AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZMOOO
+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX++XXXXXX++XXXXXXXXXXXXXXXX+X+++XXXXXX+XX++-  +++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''
+..................................................................................................................
+- =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH----===--==-HHHHH==--HH-HH--HHHH---=-===------=--=
+    CBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBCCBBBBCCCCCC CCCBCBBBCCCCC            CBCCC    CC CC  CBCC
+      VVVVVVVV  VV   VVV
+         AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXX+-  +++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''
+..................................................................................................................
+H----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH--HHH=-===-H--HHHHHHH-HHHHH-HHHHHHH---===H----H-H--=
+C    BBBBBBBBBBBBBBBBBBBBBBBBBCCBCBCCCBCBBBBCCCCBCCCCBBBBBC CC  CCC      B  CCCCCBC CCBCC CCCBCCC      C    C C
+       VVVVV VVVV  VVVV VVVV                         V
+       A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOO
+XXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXX+- -++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '
+...................................................................................................................
+HH-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HHH----==--HHHHH--HHHHH-HHHH-HHHHHHHH--=---HHHHH-H---
+CC    BBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBCBBBBBCCCBCCCBCBBBCC   CCC        CBCBC  CCBCC CCBC CCCCBCCC      CCCCC C
+       VVVVVV  VV  VVVVV V
+       A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOO
+XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++- =+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '
+....................................................................................................................
+HHH=---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----H----HH-=---HHHHHH---HHHHHHH-HH-HHHHH-H------H-HHHH---=
+CBC    BBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBCBBBBBBCBCC    C    CC     BBBCCC   CCCCBCC CC CCCCC C      B CCCC
+       VVVVVVVVV VVVVV VV V           V
+        AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+XXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXX++- -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................................
+=HHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---==--=H-HHH-===-HHHH--HHHHHHHHHH---HHHHHHH-----=HHHHHH--H--=
+ CBC   CBBBBBBBBBBBBBBBBBBBBCBBCCCBBBBBBCCCBBCCBBCBCBC        C CCC     CCBC  CBCCCCBCCC   BCCCCBC      CCCCCC  C
+        VVVVVVV VVVVV V VVVV
+           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXX+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................................
+=-HH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH======--HH----= ==-HH--HHHHHHHHHHH--HHHHHHHHH=-H--HHHHHH-H-HH-=
+  CC   CBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBCBCCBBCBCCCCBCC        CC         CC  CBBCCBBBCCC  CCCCCCCBC  C  CCBCCC C CC
+         VVV VVVV VVV VVVVV  V
+          A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XX+XXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXX+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................................................................................
+===----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-----HHH-HHH======--=--HHH-== -HHHHHHHHHHHHHHHH-HHHHHHHHHH=-----HHH-----HH--=
+       CCBBBBBBBBBBBBBBBBBBBBBBBCCCCBBBCC     CCC CCC           CCC     CBBBCCBCCCBBBCCC CCCCCCCCCC      CCC     CC
+          VV VVVVVVVVV VV V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+ ===-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=====------HHH--==-HHHHH-HHHHHHH-HHH--HHHHHHH----H-HHHH-HHHHHH-H--=
+        CBBBBBBBBBBBBBBBBBBBBBBBBCCCCBBBBCCCBCCCBCBB            CCC     CCBBC CBCBBBB CCC  CBBCCBB    C CCCC CCCCCC C
+          VVVVVVVVVVVV VVV V V
+              AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=====----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=====-------HH-==--HHHHHHHHHHHHHH-HHHHHHHHHH-=H---HHHHH------H--H-
+         CBBBBBBBBBBBBBBBBBBBBBBBBCCBBCBBCBCBCCBBBBBC             CC     CBBBCCBBBBBBCC CCCCBBCCCC  C   CCCCC      C  C
+            VVVVVV VVVV   V
+                 A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX+XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+--====-==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===--=--HHHHHH---=-HHHHHHHHHHHHHHHHHHHHHHHHHH---H-HH-HHHHHHHHH-H-H
+           CCBBBBBBBBBBBBBBBBBBBBCCCCBCCCBBBBCBBBBBBB         CCCCCC     BCBBBBBBCBCCBCCCCCBCBCCBBC   C CC CCCCCCCCC C C
+                 VV  V V   V                                                V  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+XX++X++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+--=--==-= ====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--==-----HH--HH---=-HHHHHHHHHHHHHHHHH-HHHHHH--==---HHHHH--H--HH-H-H
+                CCBBBBBBBBBBBBBBBCCCCCCBBCBCBCCBBBBBC         CC  CC     CBBBCCBBBBBCCCCCC CCCCCC       CCCCC  C  BC C C
+                  V VV VV                        V                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+XXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++XXXXXXX+XXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-H---=----= == =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=-----HHHHHH-----HHHHHHHHHHHHHHHHHH----H-=-= =---HHHH=-H--HHH--HH
+ C                CBBBBBBBBBBBBBBBBBCCCCCCBBCBCCCCBBB        CCBCCC     CBBBBCBBBCBBBCCCCC    C         CCCC  C  CCC  CC
+                   V  V V   V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+XXXXXXX++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-H=-------==     =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==----HHHHHH-H---HHHHHHHHHHHHH-HH-H--------=====-HHHH--HH--HH----
+ C                 BBBBBBBBBBBBBBBBBCCCCBCCCBCCBBBBBBC       CCBBBC C   CBBBBBBCBCBCC BC C              CCCC  CC  CC
+                    VV    VV    V                                         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXX+XXXXXX++X+XXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HH----HHHH===   ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==-H-HHHHH-HHH-=-HHHHHHHHHHHHHHH--H--=----H-==-=-HH-H------H-----
+CC    CCCC         BBBBBBBBBBBBBBBBBBBBCCCCCBCBBBBBBBC    C CCCCB CCC   CBBBCBCBBBBCCCC  C       C      CC C      C
+                    V VV       V                                          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+X+XXXXX+++X+XXXXXX+XXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHH-HHH-H---=====-HHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH-==-HHHHHHHHHH----HHHHHHHHHHHH--===-=-=--HH-===-=----H-=----------
+CCCC CCC C         CBBBBBBBBBBBBBBBBCBCC CBBBCBBBBBBBC    CCCCCBCCCC    CBBCBBBBBCCC           CC          C
+                     VVVV V                       VV                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXX+XXXXXXXXXXXXX+X+++XXXXXXXXXX++++XXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHH----= = ==HHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHH--=-H-H-HHHHHH-=-HHHHHHHHHHH-=-===----------====-HHHHHHHHHHHHHHH-H
+CCCCCBCCC          CBBBBBBBBBBBBCBBBCCCCC CBCCBBBBBBBC    C C CCCCBB   CBBBBBBBBBC                     CCCCCCCCCCCCCCC C
+                     VVVVV V                      V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXX+++XXXXXXXXXXXX+++++++++XXX+++++++XXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHH-H--=====-HHHHHHHHHHHHHHHHHHH-H-HHHHHHHHHHHH=====---------===-HHHHHHHHH--=== =====---== == =-HHHHH-----H-HHH-H
+CCBBCCCCCC C        BBBBBBBBBBBBBBBBBBC C CBCCCCCCCBCB                  CBBCCCCCC                      CCBBC     C CCC C
+                      VVVVV V
+                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXX++++++X+XXXX+X+++++XXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHH-===--HHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHH==--HHHH-H-HH--HHHHHHHHHH-======-=----=-=== =---HHHHHHHH--HH-H-HH
+CBBCBCCBBCCCCC      BBBBBBBBBBBBBBBBBBBCCC CCCBCCCCCBBC    CCCC C CC  CCBBBBBBBC                       CCCCCCCC  CC C CC
+                        V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXX+X+X+XX+XXX+++++++XXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHH--=-=-HHHHH---HHHHHHHH-HHHHHHHHHHHHHHHHHH-----HHHHHHHH-=HHHHHHHHHH--=-=-=--=---==== ==H-HHHHHHH-HH--HHH-H-
+CCBBBBBBBCCCBB      BBBCC   CCBBBCCC BCCBCBCBCCBBBCCBBB     CCCCCCCC  CCBBBBBBBC                    C CCBBCCC BC  CCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XX+XXX+++++XXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHH-===--HHHHHHH-HHHHHHH---HHHHHHHH--HHHHHHHHH---HHHHHHHHHH---=H--=--=---= ===--HHHHHHHHHHHHHHHHH-H
+CCBBBBCBBBCBBCBCCCCCCCCC      BBBBBCC CCBCCBC   CCCBBBCC  CCCCBBCCC   CBBBBBBBCC    C                CCBBCCCCCCBBCCCCB C
+                                                                        V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXX+XXXXXXXXXX+X++++XXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=-HHHHHHHHHHHHHHHHHHHHH-== ==-HHHHHHHHHHH-H-H-HH-HHHHHHHHHH----HHH-===-HHHHHHH--=-----H----=-====--H-HHHHHHHHHHHHHHHHHHH
+  CCCBBBBBCBCBCCCCCBCCC       CBBBCBBCCCC C C CC CCCCBCCCCC    CCC     CBBBBBC        C            C CCCBBBBCCCCCCCCCCCC
+                                V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX++XXXXXXXXXXX++++X+XXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=--HHHHHHHHHHHHHHHHHHHHH--= =-HHHHHHHH--H---HHHHHHHHHHHHHHHH-HHH-----=HHHHHHHHH==HH--H--HH--====-=HHHHHHHHHHHHHHHHHHHHHH
+   CCBBBBBBBCBBCBCCCBCCC      CBBBBBCC  C   CCCCCCCBBBCBBCCC CCC      CCBBBBBCC  CC  C  CC        CCCCCCBCCCCCCCCCCCCCBC
+        V                                                                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+----HHHHHHHHHHHHHHHHHHHH--====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=--HHHHHHHHH---HHH-HH---H======---HHHHHHHH-HHHHHH--HH
+    CBBBBBCCCBCCBCBCBCCC       CBBBBCCCBCCCCCCCCCCCCCBBBBCCCCCCCC     CBBBBBCCC   CCC CC   C         CCBBCCCC CCCCCC  CC
+                                                                          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+---HHHHHHHHHHHHHHHHHHHH---====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH------HHHHHHHH----HHHHH--HHH--==--H--HHHHHHHHHHHHHHHHH-H
+   CCBBCBBBBBCBCCCBCCCC        BBBBBBCCCBCCCCCBBBBBBBBBBBBBBCCCC      BBBBBBBC    BCCCC  CCC      C  CCBBCCCCCCBCCCCCC C
+                                V                                      VV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXX+++XXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+---H-HHHHHHHHHHHHHHHHHH-----===HHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHH--=---HHHHHH--===-HH--------===--HH---HHHHHHHHHHHHHHHHH-
+   C CCBCBBBCCCCCCCCCCC        CBCBCBCCCCCC CCCCBBCCCCCCBCCCCCCC      CCBBBC      CC             CC   CCBBCCCBCCCCBCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=-HHHHHHHHHHHHHHHHHHHHHH--H- ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH----HHHHHH--==H-HH-HHH-HH-====-H----HHHHHHH-HHHHHHHHHH
+  CCCCBBCBBBBBBBCCCCCCCC  C    CCBBBBBBBBBCCCCCBBBBCCBCCCBCCCCC CC    CBBBBC    C CC CCC CC      C    BCBBBCC CCCCCCBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-=-HHHHHHHHHHHHHHHHHHH-H---====-HHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH---HHHHHHH-=---HHHHHHHH--===--HHH---HHHHHHH-HHHHHHHHHH
+   CBCCBBCCCCBCBBBBCCC C        CBBBBCBBBCCBCBBBBBBCBBBCCCCC CBCCC   CBBBBBC     CCCCCCCC       BBC   CBBBCBC CCCCCBCCBC
+                                                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXX+XXXXXXXXXXX++++++XXXXX+XXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+H=--HHHHHHHHHHHHHHHHHHHH-HH-===-HHHHHHHHHHHHHHHHHHHHHHHH---HHHH-H-==-HHHHHH---=-H--HH-----= = ==-HHH-=--HHH-H-H-HHHHH-H-
+C   CCCCCCCBCCCCBBCCCCCC CC     CBBBBBBCBBCBBCBBBBBBBBBC   CCBC C    CBBBBC     C  CC            CCC    CCC C C CCCCC C
+                                                V                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXX+X+XXXXXXXX++XXX+XXXXX+X++++++XXXXX+X+XXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HH-----HHHHHHHHHHHHHHHH-HH-H-===HHHHHHHHHHHHHHHHHHHHHHH===-H-----=-=-HHHH---= ---=-HHH-=-=  ===-HHHH=-=HH-HHHHHHHHHHHHHH
+CC     CCCCCBBCCCCCCCCC CC C    CBBCCCCBCCCCCCCCCCCBCCC    C         CBCC          CCC          CCCC   CC CCBCCBCCCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHH--HHH--=--HHHHHHHHHH--H---=H------HHHHHHH-==-HHHHHHHH--H--HHHHHH------H-HHHHHH-==--HHHHHHHHHHHHHH
+BBBBBCCCCCCBCCBCCBBCCCC  CCC     BBBBBCCBCC  C    C      CCCCCCC    CBBBBCCC  C  CCCCCC      C BBBCBC     CBBCCCBBBBCCBB
+V                                                                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHH-HHHHHHHHHHHHHHH-HHHHH----HHHHHH--=====  == =---H-HHHHHHH----HHHHHH---HHHHHHHHH------=-HHHHHHHH---HHHHHHHHHHHHHHH
+BBBBBBB CCCBCCCCCBCCBBC BCCCC    BBBBCC                C BBCCCCC    BBBBCC   CCCCCCCCC        BCBCBCBC   CBCCBCCCBBBBBBB
+VVVVV                             VV
+AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX++++XXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................          .....................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHH----HHHHH==           =-HHHHHHHHHHH---HHHHHHH--HH-H--HH--=----====---H-HH-H-HHHHHHHHHHHHHHH
+BBBBBBBCCCCCBBBBBBBBBCBCCCCCC    CBBBC               CCCCBCCBCCB   CBBBBBC  CC C  CC              C CC C CCCCCCCCBBCCCBB
+VVVVVV                             VV
+AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++==+++=+++++XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX+++X++++++XXXXXXXXXXXXXXX++XXXXXXXX
+'''''''''''''''''''''''''''''''''''''''    ''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................           ......................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----HHH-=            -HHHHHHHHHHHH-=-HHHHHH-H---H-H-HHH===-=== ==---H-HHHHHHHHH-==--HHHHHH
+BBBBBBBBCCCCCCCCCCCCCBCBCCCBCC    BBC               CCBBBBCCCCCC   CCBBBC C   C C BCC             C CCCCCBCCC     CBBBCC
+VVVVVV                             V                                 VV
+AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=-++++++++++XXXXXXXXXXXXXX+XXXXXXXX+XXXXXXXXXXX++++X+++++++++XX++XXXXXX+++XXXXXX+
+'''''''''''''''''''''''''''''''''''''''    ' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................          .......................................................................
+HHHHHHHHHH-HHHHH-HHHHHHH-HHHHHH-H-HHH-            =-HHHHHHHH--H--=-HHHHHH-=HH-HHHHH-H-====-=========--==---H--===HHHHH-=
+BBBBBBBBBC CCCCC CBBBBCC CCCBCC C CBB               CBBCBBCC  C    CCBBCC  CB CCBCC C                      C     CCBCC
+VVVVVVVV                                             V               V
+AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+++++XXX+++XXXXXXXXXXXXXXX++
+''''''''''''''''''''''''''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................   .    .......................................................................
+HHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHH-           =HHHHHHHHHHHHH---HHHHH---HHHHHHHH----=----=====---===--HHHHH----HHHH=
+BBBBBBBBBCCCCCCC  CCBCBCCCCBCBBCCBBBBC             CBBBCBCCCBCCC   CBBBB   CCCCCBBC                      CBBCC    CCBC
+VVVVVVVV                            V
+AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++===+=++++XXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXX+XX+XX++X+X+X+++XXXXXXXXXXXXXXX++
+'''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................       .......................................................................
+HHHHHHHHHH-HHHH----HHHHHHHHHHHHHHHHHHHH=          =HHHHHHHHHHH--===-HHH-H--HHHHH---H---=--=--==-=-=-===-----HH----HHHH=
+BBBBBBBBBB CCBC    CCBBBBBBBBBBBBCBBBCC            CBBBBBCCCCC      BBC C  CCCCC   C                        CC    CCCC
+VVVVVVVV
+AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXX++++=+=+++XXXXXXXXXXXX++++XXXXXXXXXXXXXX+XX+XXXXXXX+XX+XXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................      .......................................................................
+HHHHHHHHHH--HHHH-=-HHHHHHHHHHHHHHHHHHHH-==       =-HHHH----H--====--HHH---H-----=--=-------=--=----HHHHHHHHHH--HHHHHHHH-
+BBBBBBBBBB  BBCC   CCBCCBCBBCBBBBBBCCCC            BBBC    C        CCC   C                        CCCBCBCBCC  CCCBCBBC
+VVVVVVVVV
+AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXX++++++++XXXXXXX+X+XXXX+XXXXXXXXXXXXXXXXXXXXXXXXX++++X+XXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................................   ........................................................................
+HHHHHHHHHH-HHHH-==-HHHHHHHHHHHHHHHHHHHHHH-==     =HHHHHH-=-=HH--=-HHHHHH--HHHHHH-HH----H--====-=----HHHHHHH-HH-HHHHHHHHH
+BBBBBBBBBC CCCB    CCCBCCBBBBBBBBBBBBBBBB         CBBBBB    CC    CBBBBC  CCCCCC BC    C            CCCBCCC CC CCCCCBCCB
+VVVVVVVV                     V V                    V V
+AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXX++--+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXXXXXXXXXXXXX+XXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................... .........   ............................................................
+HHHHHHHHHHHHHHH-=--HHHHHHHHHHHHHHHHHHHHHHHH-=   ==HHHHHH=    -H----HHHHHHHHHHHH-HH----H----=--=--HHHHHHHHH---=--H-H-HHHH
+BBBBBBBBBCCCCCC    CCCBCBBBCBBCBBBCBBCBBBBC       CBBBBC      C    BBBCCCCCCBCB CC    C          CCCCBCBCC      C C BCBB
+VVVVVVVVV                                          VV
+AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXX-    ++XX+XXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXX++X+XXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................     ...........................................................
+HHHHHHHHHHHHHHHH----HHHHHHHHHHHHHHH-HHHHHHHH--===-HHHHH-      =--=HHHHHHHHHHHHHHH---H-------=----HHHHHH-H--==-=----HHHHH
+BBBBBBBBBBCCCCBC    CCCBBBBBBCBBBCB CBBBBBBB      CBBBC           BBBBCCCBCCCBCCC   C            CCBCCB C          CCCCC
+VVVVVVVVV                                                           V
+ AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=-=)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+     -+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................      ..........................................................
+HHHHHHHHHHHHHHHHH----HHHHHHHHHHHHH---HHHHHHHHHH-HHHHHHH=       ==-HHHHHHHHHHHHH--H----H-------HHHHHHHHHHHH----H-H--H-HHH
+BBBBBBBBBBCCCCBCC    CCCBBCCBBCCBC   CCCBCBBCCC CCBBBBC           CBBBCBCCCCBBB  C    C       CCBBCBBBBCCC    C C  C CCB
+VVVVVVVVV                                         VVVV             V
+AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+--)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+      =++XXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXX+X+X+XXX+++++XXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................        .........................................................
+HHHHHHHHHHHHHHHHHH--=-HHHHHHHHHHHHH--HHHHHHHHHHHHHHHHH-         =--HHHHHHHHHHHH--H------=-=-----H-HHH--=-=-=---=====----
+BBBBBBBBCCCCCCBBCC    CCBBBBCCCCCBC  CBBBCCBBBCCCBBBBB             CBBBCCBCBCCC  C              C CCC
+VVVVVVV                                            VVV              V
+A AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM++)+11ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+        +++XXXXXXXXXXXXX+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................         ........................................................
+HHHHHHHHHH-HHHHHHHH---HHHHHHHHHHHH---HHHHHHHHHHHHHHHHH=          =HHHHHHHHHH-HH=-------=----HHH-HHH--H------HHH----=---=
+BBBBBBBBCC CCBBBBBC   CBCBBBBCCCCB   CBBCBCCCCCCBBBBBB            CCCBCCCCCC CC             CCC CCC  C      CCC
+VVVVVV                     V                       VV
+AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO11MX11)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+-        +XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................         ........................................................
+HHHHHHHH--HHHHHHHHHH---HHHHHHHHHHHHHH-HHHHHHHHHHHHHHHH          =--HHHHHHHHHHH--=-H-H------HH-HH-----H----HHH--H-----H--
+BBBBBBBC  CCCCBBBBBC   CCBBBBBCBCBCCC CBBBCBCCCCBBBBBB             CBCCBBBCCBC    C C      CC CC     C    CCC  C     C
+VVVVVVV                                          VVVV
+AAAAA                                              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOZZ)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+XXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+= -++    +XXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++X+++++XXXXX+++XX+++X
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................   .     ........................................................
+HHHHHHH---=-HHHHHHHH-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH    =     =HHHHHHHHHHHHH-H---H---------==-====-=====-----===--===-
+BBBBBBB     CCCBBBBC    CCCBBBBBCBBCCCCBCBCCCCCBBBBBBB           CCCBCBCCBBCCC C   C
+VVVVVV                                            VVVV
+AAAA                                                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX+- =+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................    ........................................................
+HHHHHHHH-HHH-HHHHHH- = --HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-= =-H    =HHHHHHHHHHHHHHHH---H-HHHHHHH----H-HHHHHH---H---==-H---=
+BBBBBBBC CCC BBBBBB      CBCBCCBBBBCBCCBBCCCBBCBBBBBBB     C     CBBBCBCBBCCCCCCC   C CCBBCCC    C CBCCCC   C      C
+VVVVVV           VV                             VVVVVV
+AAAAA
 OOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX+ =+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................   .................................................................................................
+HHHHHHHHHH-HHHHHHHH-    -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH ==HHHHHHHHHHHHHHHHHHHHHHHHHHH---H-H-HHHHHH-H---HHH--H-HH-H
+BBBBBBBBCC CBBBBBBB      CCBBBBCBBBBBBCBCCCCCBBBBBBBBBBCCCBBC   CBBBBBCCBBCCCCCCCCBCBBBBCCC   C C CCBBCC C   CCC  C CC C
+ VVVVVV         VV                               VVVVVV   VV
+    AA                                            A A
 OOOOOOOOOOOOOOOOOOOOOZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX+-  +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................   ....................................................... .........................................
+--HHHHHHHHHHHHHHHHH     -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===    =HHHHHHHHHHH---HHHHHHHHHHHHHHHHHH-HH-HH
+  BBBBBBBCCCCBBBBBB      CCBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC         CBBBBBBBCCC   CCBBBCCBBCCCCBCCCC CC CC
+    VVV        VV            V   VVVV           VVV VV  VVVVVV   V  VV                            VV
+    AA                                                    A A
 OOOOOOOOOOOOOOOOOOOOMXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1)++XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXX+   +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++--     ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX
+''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''
+....................   ....................................................        .....................................
+==HHHHHHHH--HHHHHHH=    -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=         =HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHH-==-H
+  CBBBBBCC  CBBBBBB      CCBCBBBBBBBBBBCBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBC            CBCCBCCCC CCCBBBCCCBCCCCCCCCCCC    C
+    V V      V  VV             V VVV          VVVVVV   VVVVVVVVV  V  V
+                                                             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1= -  -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXXXXXXXXXXXXXXXX+-++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++         -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX
+''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''          '''''''''''''''''''''''''''''''''''
+....................   ....................................................          ...................................
+-=-HHHH-H--HHHHHHHH-    -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=            -HHHHHHHHHHHHHHHHHHH-HHHHHH--===--
+   BBBC C  CCBBBBBB      CCCCBBBBBBCBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBC                CCBCCCCCBBBBBBBCCCC CCBCCC
+                                VV          VV V VV     VVVVVV       V
+                                                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=--     -=MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX++XXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++            +XXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''            '''''''''''''''''''''''''''''''''
+...........................................................................            .................................
+H-HHHH---==HHHHHHHHH===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=             =HHHHHHHHHHHHHHHHH----H------==-H
+C BBBB     CCBBBBBBC    CBCCCBBBBBBCCBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBC                 CBBBBCBBBBBBBCCCC    C         C
+               V              VV          VV VVVV V     VVVVVV VVV VV                          V VV
+                                                         AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-        -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+             +XXXXXXXXXXXXXXXXXXXXXXXX+++XXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''             ''''''''''''''''''''''''''''''''
+...........................................................................              ...............................
+HHHHHHH--H--HHHHHHHH-=-HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--               -HHHHHHHHHHHHHHHHHHHHHHH===----
+CCBBBBC  C  CBBBBBBC   BBBCC BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC                  CBBBBBBBBBBBCCCBCCCCCCC
+     V          V              V    V  V VVV VV VVVV VVVVVVVVV V VVV                          V   V
+                                                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX= -        =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+             -XXXXXXXXXXXXXXXXXXXXXXXXXXX+XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''              ''''''''''''''''''''''''''''''
+............................................................................              ..............................
+HHHHHHHHHHHHHHHHHHHH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHH               -HHHHHHHHHHHHHHHHHHHHHH----=H-
+CCBBBBBBBBBBCCCBBBBC   BBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC  CCBBBBBBBB                BBBBBBBBBBBBBBBBCBBCBC     C
+   VVVVV                        VVV    VVVV VVVVVVVVVVVVVVVVV      V VVV                    V VV    V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+)AOOOOOOOOOOZ-         --AOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+XXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++    ++XXXXXXX+              +XXXXXXXXXXXXXXXXXXXXXXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''              '''''''''''''''''''''''''''''
+..............................................................      .........              .............................
+HHHHHHHHHHHHH-=-HHHH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=       HHHHHHH                HHHHHHHHHHHHHHHHHHHHHH--H--=
+BCBBBBBBBBBBC   BBCC   CBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB        CBBBBBC                BBBBBBBBBBBBBBBBBBBCCC  C
+  V VVVVVVV      V      VVV          VVVVVVVVVVVVVVVVVVVVVV            V  V                  VVVVVVVV V V V V
+       A                                           AA AAA                                    AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ--  -)OOOOOOOOO1=         -=XOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+       =XXXXXXX+              +XXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''              ''''''''''''''''''''''''''''
+.............................................................         .......               ............................
+HHHHHHHHHHHHH---HHHH==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH         -HHHHH-                HHHHHHHHHHHHHHHHHHHHH---H--
+BBBBBBBBBBBBC   CBBC   CBBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC          BBBBB                 BBBBBBBBBBBBBBBBBBBCC   C
+    VVVVVVVV             V      VV   VVVV  VVVVVVVVVVVVVVVVV            VV V                  VVVVVVVVVVVVVV V
+     A AA A                                   A A AAA   AA                                      AAAA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=     -=OOOOOOOOO1-         --XOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX++XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-        +XXXXXXX=              +XXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          '''''''               '''''''''''''''''''''''''''
+.............................................................          .......               ...........................
+HHHHHHHHHHHHH-==HHHH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-          -HHHHH-               =HHHHHHHHHHHHHHHHHH-H------
+BBBBBBBBBBBBC   BCBC   CBBBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBB            BBBBB                 CBBBBBBBBBBBBBBBCC C
+V VVVVVVVVVV              VV    V V  VVVVVVVVVVVVVVVVVVVVVVV                                   VVVVVVVVVV
+        AAA                                     AAA A  AAAA                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-      -)OOOOOOOOO)-          =XOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-         +XXXXXX+-              +XXXXXXXXXXXXXXXXXXXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          ''''''''               ''''''''''''''''''''''''''
+.............................................................          ........               ..........................
+HHHHHHHHHHHH--==HHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH          =HHHHHH=                HHHHHHHHHHHHHHH-H--H-H--=
+BBBBBBBBBBBB    BBBBB   CCBCBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB           BBBBBB                 CBBBBBBBBBBBBBC C  C C
+VVVV VVVVVV      V              V    VV VVVVVVVVVVVVVVVVVVVV               VV                    VVVV V V  V
+         A                                  A  A A AAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-     --OOOOOOOOOO) -        -+OOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX         =XXXXXXX+-             -+XXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          ''''''''               '''''''''''''''''''''''''
+..............................................................          ........               .........................
+HHHHHHHHHHHHH---HHHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH          -HHHHHH                 HHHHHHHHHHHHHHHHH-HHH-H-
+BBBBBBBBBBBCC   BBBBBBC   CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC           BBBBBB                 CBBBBBBBBBBBBBBCC CCC C
+VVVVVVVVVV       V            V   V VVV VVVVVVVVVVVVVVVVVVVVV              V                     VVVVVVVVVVV
+                                               A  AA AA A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=    -=MOOOOOOOOOO+         -)AOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-        +XXXXXXXX-             +XXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         '''''''''              '''''''''''''''''''''''''
+...............................................................         .........              .........................
+HHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-         =-HHHHHH-               -HHHHHHHHHHHHHHHH--H----
+BBBBBBBBBBBBCCCCBBCCCCCC  CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB            CCBBBB                 BBBBBBBBBBBBBBCC  C
+VVVVVVVVV  V                  V VVVVVVV  VVVVVVVVVVVVVVVVVVVVV                                    VVVVVVVVVVV
+        A                                  A A  AAAAAAA AAA A                                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1----ZOOOOOOOOOOOO+         =AOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+      -+++XXXXXXX=            ++XXXXXXXXXXXXXXXXXXXX+XX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''             '''''''''''''''''''''''''
+.................................................................       ..........             .........................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH        ===HHHHHH-              =HHHHHHHHHHHHHHH-----=--
+BBBBBBBBBBBBBBBBBBCCCBBBCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB           CBCBBB                CBBBBBBBBBBBBCC
+VVVVVV  VVV V                 VVVV V    VVVVVVVVVVVVVVVVVVVVVVV                V                   VVVVVVVVVV
+A                                         A      AA A A                                               A  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOO+-      -+ZOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+-  =++++XXXXXXXX+           ++XXXXXXXXXXXXXXXXXXXXX++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''''''''           '''''''''''''''''''''''''
+...................................................................    ............             ........................
+HHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH      ===--HHHHHH              HHHHHHHHHHHHHHH------==
+BBBBBBBBBBBBBBBBCCC CCCBCCBBBBBBBBBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBC           CCBBBC              CCBBBBBBBBBBBCC
+VVVVVVVVVVVVVVV               VVVVV      VVVVVVV VVVVVVVV    VVVV              VVV                     VVVVV
+                                            A      A  A                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+-      =XOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXX+          ++XXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          '''''''''''''''''''''''''
+....................................................................................            ........................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-======--HHHHHHH            =-HHHHHHHHHHHHHH-H---H-H
+BBBBBBBBBBBBBBBBBBCCBBBCBCBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBC         CCBBBBB              CCCBBBBBBBBBCC C   C C
+VVVVVV VVVVVVVVVV          VVVVVVVVVV    VVVVVVVVV VVVVVVVVVV  VVVV             VVVV                   V VV
+                                  A         AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+      -)OOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++X+XXXXXX+         ++++XXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         '''''''''''''''''''''''''
+......................................................................................          ........................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=====-=-HHHHH           ===--HHHHHHHHHHHH-HHHHHH
+BBBBBBBBBBBBBBBBBBCCCCBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC         CCBBB                CCBBBBBBBBBC CCBCBC
+VV V VVVVV  VVVVV           VVVVV VVV   VVVVVVVVVVVVVVVVVV V   VVVVV               V                    VV
+                                A         A A       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-      MOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXX+         ++++++XXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''
+.......................................................................................         ........................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--= == =--HHHH          ======-HHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBCBBCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC          CBBB                 CBBBBBBBBBBBBBBCC
+V VVVVV   VV VVVV            VVVVVVVVVV V VVVVVVVVVVV VVV VVVVVVVVVVV                                   V V VV  VV
+   A                                                   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX-  ---+OOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++XXX+        =+++++++XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         '''''''''''''''''''''''
+........................................................................................         .......................
+HHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=====  ===HHH=         == ====-HHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBCC CCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC            CBB                  BBBBBBBBBBBBCCC
+VVVVVVVVVVVVV VV VV        VVVVV  VV     V VVVVVVVVVVV VV VV VVV VVV V                                   VVVV  V   V
+  A                                             A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA-   - XOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++XXXX        ++++++XXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''
+.........................................................................................        .......................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=-===   ===HHH-        == = =--HHHHHHHHHHHHHH-
+BBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC            CBB                 CBBBBBBBBBBBBC
+VVVVVVVVVVVVV VV V V      VVVVVVVVVVVVV VV  VV  VV VVVV  VVVVVVVVVVVVVV                                   VVVVVV VVV
+                                                   A           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=--==)OOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++XXXX-      =+++++++XXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''
+..........................................................................................        ......................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--====    ==HHH-        ===  ==-HHHHHHHHHHHHH-
+BBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC            CBB                 CBBBBBBBCBCCC
+VVVVVVVVV VVVVVVVVVV     VVVVVVVV VVVVVV     V VV     V  VVVVVVVVVVVVVVV                                   V  VV
+  AA              A         A                                   A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO111ZAOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++XXXXX=     -++++++++XXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''
+...........................................................................................       ......................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=== =  ====--HHH         =  ===HHHHHHHHHHHH--
+BBBBBBBBBBBBBBBBBBBBCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC             BBC               CCBBBBBCCBCC
+VVVVVVVVVVVVVVVVVVVV      VVVV VVVVV            V         V VVVVVVVVVVVVV                V                   V
+  AA     A      AA          A                               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXX+- -=++++++++++XXXXXXXXXXX++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ''''''''''''''''''''''
+.............................................................................................      ... .................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHH-=== == = ===HHHH              =-HHHHHH----==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBCBB CCCBBBBBBBBCBBBBBBBBC             CCBB                CCBBCC
+VVVVVVVVVV  VV VVVVV     VVVVVVVVVVV                         V      V V V
+ AA                           A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++XXXXXX++++++++++XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=       ==HHHHH-==      ==--HHHHHHHHHHHHH-
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBCBBCCBBBBBBBBBBBBBBBBBBBBBBBBBC            CCBBB             CCBBBBBBBBBBC
+VVVVVV  VVVVVVVVVVVVVV   VVVVVVVVVVV      VV            V         V VV  V                                    VVVV
+A       A       A A       A      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++XXXXXXX++++++++XXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................ .......................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==   = = ==--HHHH-===  = =---HHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBC              BBBC            CBBBBBBBBBBBBC
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV        V       V         V            V                                    VVVVV
+AA AA   AAAA   A   A      A   A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++X+XXXXXXX++++++++XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH=     ====-=HHHHHH-==== = =-HHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC CCBBBBC            CCCCCC          CCBBBBBBBBBBBBB
+VVVVVVVVVVVVV VVVVVVV   VVVVVVVVVVVV     V  V  V   VV   VVVV                                                V VVVV V V V
+  A A          A            A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX++++++++X+XXXXXXXXX+++++++XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=HHHHH-=     ==-=---------=     =-HHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC   CBBBC                            CBBBBBBBBBBBBBB
+VVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVV      V  V V V     V   V V                                                VVVVV VV
+  AAAAA           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXX++++XXXXXX++++++XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-----HHHHHH-======-H-====-HHHH-======-HHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC     CBCBBC        C      CCCC        CCCBBBBBBBCBBBB
+VVVVVVVVVVVVVVVVVVV V  VVVVVVVVVVVV     V V      V VVVVVVVVV                                                 V V      V
+ A    A     A   AA             AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX++++XXXXX+++XXXXXXXX+++++XXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH---=--HHHHHHHH====-HH--===---HHH-- ====---HHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCB CC      CCBCBCCC     CC        CCC          CBCCBCBBBBBB
+VVVVVVVVV  VVVVVVVVVV V VVVVVVVVVV      VVV VVV V VVV  V
+  AAA       A    A            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+++XXXXXXX++++++X+XXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH-HHHHHHHHHH--=--HH---===-HHHHHH=== ==-=HHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBC CCCC CCBBBBBBCC     CC       CCBBCC        CCCCCCCCCCCC
+VVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVV  VV       VV  VV
+         A AA    AA            A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXX+++++++XXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH---HHHHHHHHHHHHHHHHH--------H=====-HHHHH-=== ===-H----HHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBCBBCCC CCCCBC   CCBCCCBBBBBBBBBBC        C      CBBBC         C    CCCCCC
+VVV VVVVVVV VVVVVVVVVVVVVVVVVVVVVVV       V                                V
+     AA  AA    A   A AAAAA  A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=++XXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXX++++++XXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................   .........................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HH-H-------    =HHHHHHHHHHHHHHHHHH----HH---===-HHHHH-=  = =-HHH-H-HH-HH-
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCC   CC C            CBBBBBBBBBBBBBBBCC    BC       CCBBC        CCC C CC CC
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VV                             VV  VVVVVVV
+AA       AA AAAA A   A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXX++  -+XXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXX+++++++XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................     ........................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--====----------=     -HHHHHHHHHHHHHHHHH----HH---=  --HHHH-== = ==-H-H-H-H---H
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC                       CBBCBCBBBBBBBBBBC    CC        CBBC         C C C C   C
+VVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVV                                        V V
+ A AAAAAAAA AAAA AA AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXX+-   ++XXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXX++++++XXXXXXXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................     ........................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH------====--HHH-=     =HHHHHHHHHHHHHHHHHHH--HH-H== ====-HH-=== ==-----HHHH-H-=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC            CCC        CBBBBBBBBBBBBBBBCCC  CB C        BC            CCCC C
+VVVVVVVVVVVVVVVVVVVVVVVVVVVV VV                                    VVVVVV   V VV
+ AAAA A AAAAAAAA AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXX++- -++XXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXX+++++++++++XXXXXX++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................    ........................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---=-H--HHHH=    ==-HHHHHHHHHHHHHHHHH-HHHH--===  ===-H-=  ========-HHHH-=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBCCCC     C  CCCC        CCBBBBBBBBBBBBBCC CCBC           C             CCCC
+VVVVVVVVVVVVVVVVVVVVVVVVVV V     V V                                  V VV  V  V
+      A A AAAAAAAAAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++X+XXXXXXXXXXXXXXXXXXXXXXXX+++++++++X+++++++++++++XXX+=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................................................  ......................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-= ===-=---HHHHHHHHHHHHHHHHHHHHH==   ====-==  ==== == =---=
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCCCCCCCC CCC           BBBBBBBBBBBBCCCCCCCCC
+VVVVVVVVVVVVVVVVVVVVVV  V VVVV  V  V                                    V  V  VV
+ AA   AAAAAAAA AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++XXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
+..............................................................................................  .....................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=-==-HHHHHHHHHHHHHHHHHHHHH===    =====  = == =   ===
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBCCBCCCCCCBCBBCC      CCBCBBBBBBBBBCCCCCCCC
+VVVVVVVVVVVVVVVVVVVVVVV VVV VVV V                                           V VV
+ AA A AAAAAAAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXX++++++++X++++++++++++++++=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
+..............................................................................................   ....................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==  ==--HHHHHHHHHHHHHHHHH--=     ==-===  =      = ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBBB         CCBBBBBBBBBBCCCCC
+VVVVVVVVVVVVVVVVVV VV VVVVV VV V V     V                      V             V   V
+ AA   AAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ+
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''' ''
+..............................................................................................    ........... ..   .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=======--HHHHHHHHHHHHH---=        ==== ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC           BBBBBBBBBBCCC
+VVVVVVVVVVVVVVVV        VV  VVVVV        VVV       V        V  V                V V
+    AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+++++++++++++++++++++++++++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................................ ................  .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--------=HHHHHHHHHHHHHHH====    ===  == =    =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBC         CBCBBBBBBCBCBCC
+VVVVVVVVVVVVVVVV   V  VVVVVVVVVV      V    V    V VVV VV VV VVVV               VVVV
+AAAAAAAAAAA               AA A                               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+XXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++=-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................................................... .....................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=--H-=----HHHHHHHHH-HH-==     =   = =  =====  =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC   C      CCBBBBBCC CC
+VVVVVVVVVVVVVVVVV VVV VVVVVVVVV       V V   V   VVVVVVVVVVVVVV V                   V
+ AAAAAAAAAAA            A A                                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-----HH---H-------= = = = =  ==== = === = ===
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC CC     CC   C
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVV VV VV       VVVVVVVVVVVVVVV
+AA AAAAAAA A          A   A                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+++++XX++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-HHHHH-===-== ==--==== ====== =  = =  = =  = ===
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC CCC CCCCC
+VVVVVVVVVVVVVVVVVVVVVVVVVVV VV    V VVVV V        VVVV VVVVV VVV
+ A AAAAAAAAA A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++X++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH--H--=====    =-======== ==  ==   = ==  = ====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC CCCC  C
+VVVVVVVVVVVVVVVVVVVVVVVVVV V  V V VVVVV VV  V    VVVVV VV VVVVVVV
+AAAAAAAAAAAAAAAA  A AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+++++++++++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H-=--===  =======   =  ==== === ===    =====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCC   C
+VVVVVVVVVVVVVVVVVVVVVVVVVVVV  V VVV V VVVVV           VVVVV  V VVV
+A AAAA AAAAAAAAA AAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-------=    == ==== =    ==== == = =  =  = ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCCCBC
+VVVVVVVVVVVVVVVVVVVVVVV   V V VV V VVVVVV V        VV VVVV  V  V
+ AAAA  AA  AAAAAAAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH-----== =  ==  == =  =   == == == = =     =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC CCBBBBBBBBBBBBBBBBBBBBCCCBC
+VVVVVVVVVVVVVVVVVVVVV VVV    V VVVV  VVV    V        VVVVVVVVVVVVV
+  AAA AAAA       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH------========     = =  ======   =  == ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCC  CCCBBBBBBBBBBBBBBBBBBBBBBBBBBCC
+VVVVVVVVVVVVVVVVVVVVVVVVVV V VVVVVVVV                 VVV VVVV VV       V
+AAAAAAA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----=---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-----==  = = === = ==  = ======     ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC        CCBCCBBBBBBBBBBBBBBBBBBBBBBBBCC CC
+VVVVVVVVVVVVVVVVVVVVVV V  V V VVV VVV                 VVVV VVVVV  V      V
+ A AAAA  AAAA  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H-=== == === ==== == === ==    ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB       CCCCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBCCCBC  C
+VVVVVVVVVVVVVVVVVVVVVVV VVVV  VVVVV                      VVVVVVVVVVVVV    V
+  AA   AAA A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---====  = = == =   =  == ===     =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC      CBBBBCCCCCCCBCCBBBBBBBBBBBBBCBBBBBCBCCCC
+ VV VVVVVVVV VVV  VV VVVVVVVVV VV                                      V
+         AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---= = =  = == = == ==   = =  =
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBC   CCBBBBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCC
+   V V  VVVVVVVVVVVVV  V VVV VVV   VV         V           VVVVVVVVVVVV VV  VVVV V
+          A                                                  A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=-====== == =   ==   ===  ==
+BCBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCC
+   V     VV VV VV VVV V VVVVVVVVVV VVV     VVV  V        VVV   VVVVVV        VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=== ==  = ===== = ==== ===
+BBBBCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBCCCCC
+             VVVVVV   V  V VVV VVVVVVVVVVVVVVV V VV       VVVV VVVVVVV        VVV V
+                                                                   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=== ===  =    == ==== ====
+CCBCBBBCCCCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCCBBBBBBBBBBBBBBBBCCBBCBBBBBBBBCBCBCBC
+               VVVVV    V V V VV VVVVVVVVVVVVVV           VVVVVVVVVVVV     V VV VV V
+                                   A   A  A                  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--===== ==   ========= ===
+CCCCCCCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBCBCBBBCBB
+               VVVVVVV V VV     VVVVVVVVVVVVVVV           VV VVVVV  V         VVVV V
+                                   AAAAA AA                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHH--===== ==  =============
+CCBCBBBBCCCCBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCBBBBBBBBBBBBBBBBC CCCBCBCCBBBCCCBBCBBBCC
+              VVVVV V    V VV V VVVVVVVVVVVV VVV         VVVVVVVVVV V                       V
+                                   AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++X+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----HHHH-HHHHHHHHHHHHHHHH---==== == ===========-=
+CCCCBBC BBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBC    CCCC CCBBBCCCBBBBBBCC
+             VVVVVV  VV VV    V VVVVVVVVVVVVVV           V  VVVVVVV V                     VV
+               AA                A  AA AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHH-== == ================
+BBBBBCBBCBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBCCC  CCCCCCCCCBBBBBCBBBBBCC
+              VV V  VVVVVVVVV VVVVVVVVVVVVVVV    V        VVV VVVVV
+                                  A   AA A                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++X++++++X++X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==HHHHHHHHHHHHHHHHHHHHHHHHH-=========-======-==-
+BBCCCBCBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBCCC  CCCCCCCCCCCBBBBBCBBBBBCCC
+             VVVVVV VVVVV V VVVVVVVVVVVVVVVVVVVV        VV V VVVVVVV                   V    V  V
+                              A A   A A AAAA                   AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++X+X++XX++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--==---H---HHHHHHHHHHHHHHHHH--=   =====-=-==--====
+BBC CCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBC       C   CCCCBCCBCCCCCBBBC
+V             V  VV  VV   VVVVVVVVVVVVVVVVVVVVV VV           V VVVV
+                      A     A A  AA  AAAAAAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++X++XXX+XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===-----------HHHHHHHHHHHHHH--==========-==---=--
+BCCCCCBBCBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBCCC               CBBBBBCBCBBBBC
+             VVV   V VVVVV  VVVVVVVVVVVVVVVVVVVVVV V      VVVVVV
+                                  AAAA AA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXX+X+XX+XXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H---==------H---H--HHHHHHHHHHHH---=-=-----=-=--=-H--
+CB C CBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBCCC C           C   C  CCCCBBCBBBBC                  C
+              VV  V VVVV    VVVVVVVVVVVVVVVVVVVVVV  V         V
+                     A        AAAAA  AAAA     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+++X+X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--======--=---------HH-HHHHHHHHHHH-H-----HH---==-===-=-
+CCCBBCCCBCBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBB                    CC CCBBCBCBCCC C     CC
+            VVV    VVVV V V VVVVVVVVVVVVVVVVVVVVVVV VV        V
+                    A         AAAAAAAAAAAAAAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XX++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----==  --==---=-------HHHHHHHHHHHHHH-H--HH---===-======
+BBBBBCCBBCBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCBBBBB                       CCCCCCCCBBCBBC C  BC
+             V  VVV VV V    VVVVVVVVVVVVVVVVVVVVVVVVVV
+                              AA AAA A AAAAAA    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+++++++++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-==-=========--=--------HHHHHHHHHHHHHHHHH-H----======--=
+BBBBCBCBCBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCCCB C                        CCBCCCBBBCBCCCCCC C
+ V V        V VV VV VV V     VVVVVVVVVVVVVVVVVVVVVVVVV
+                    A         AA AAA  A AAA  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X++++++++XXXXXX+XXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--HH-=-=-==== ===------=----HHHHHHHHHHHHH---H--=-===========
+BBBBCBCBCCBBCBBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC C  CC                        CCBCCCCBBCCBC   C
+VV             VVVVVV V     VVVVVVVVVVVVVVVVVVVVVVVVV
+                                 A  AAA   A  A   AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXX+XXXX+X+XXXXXXXXXXXXXXX+XXX+++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-----====  ==---=----=H=H-HHHHHHHHHHHHH=---===============
+BBBBBBCBBBBCBCBBBBBBBBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC                      C C CBCBBBCBBCCCC
+V             VVVVVVVV        VVVVVVVVVVVVVVVVVVVVVVV V
+                 A A             AA A A AAA AAAA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X++++++X+XXX+X+X+XXXXXXXXXXXXXXXXXXXXXX+++++X++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===-= = ==-=---=-=H=HHHHHHHHHHHHHH-H------=====-========
+BBBBCCCCBBCBCBBBBBBBBBBC  CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC                   C CCCBBBCBBCCCCC C
+V V            VVVVVVV       VVVVVVVVVVVVVVVVVVVVVVVVVV
+                 A             AA AAAAAAAAA AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++X++XX++XXXXXXXXXXXXXXXXXXXX++XXXX+++X+XX+++X+XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----=====-==--==H-H-HHHHHHHHHHHH----==----===-=--===-=--
+BBBBBBBBBBBBBBBBBBBBBBC   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC                C C CCBBBBCCCCCC
+VVV        V   VVVVV        VVVVVVVVVVVVVVVVVVVVVVVVVV VV  V
+A                               AAA AAAAAAA AAA AA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++XXXXXXXXXXXXXXXXXX+++++XX+X+++++XX+++++XXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHH-=---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H---=========-----HHHHHHHHH-H--=====--=-=====--=====---H
+BBBBBBCBBBBBBBBBBBBBCC     BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC C                 CBBCBBCCC C                          C
+VVVVV  V   V    VVV         VVVVVVVVVVVVVVVVVVVVVVVVVV VV
+                              AA AAAAA AAAAAAAA  AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++X+XXXXXXXXXXXXXXX+X+X+X+++++++++++++++++X+++X+X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H=-= ==-=----HHHHHH-HH--=-=-=-========  =======-===-=-
+BBBBBBBBBBBCBCBBBBBBBBC   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCBCC C            CCCBCC CC
+VVVVV    V                  VVVVVVVVVVVVVVVVVVVVVVVVVVV
+                              A A  A AAA AAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXX+X++X+++++++++++++++X++XXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHH--=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=====---HH-HHH-------=-==-======== ======-==--------
+BBBBBBBBBBBCCBCCBBBBBCC    BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCC         CC CCC
+VVVVVV  VV                  VVVVVVVVVVVVVVVVVVVVVVVVVVV    VV
+ AAA                         AA AAAA AAAAAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXX+++X+++++++++++++XXX++XX+X+++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---==--HHHHHHH-H--===-=============---==--=-===========
+BBBBBBBCCCCCCCCBBBBBBBBC   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCC       CCCBCCC C
+VVVVVVV           VV        VVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAA  A                               AAAAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXX+X++++++++++++++++++++++XXXX+X+X+XX++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHH--=HHHHHHHHHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H----=--HHHHHHH--=-===  ===   == ========----=-=-=--==
+BBBBBBBC   CBCBBBCBBBCBB   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC C       CCBBBCC
+VVVVVVV                     VVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AA                           AAA AAAA AAA A    AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++X++XXXXXXXXXXXXXX++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHH-H-HHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH----=-==== ====-==--H-H-HHHHH---====
+BBBBBBB C CCBCCCBBBBBBBBCC CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCCBBCCCBBBBBBBBCC CCC                    C C CCCCC
+VVVVVVV                      VVVVVVVVVVVVVVVVVVVVVVVVVVV               V VV
+  AAAA                         AA    AA AAAA A A  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++X++XXXXXXXXXXXX+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHH----====== ===-==--HHHHHHHH--===
+BBBBBBBCCCCCCCCCBBBCCCCBCC  CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBCC CCCCBBCCC                   CCCBBCCC
+VVVVVVV          V           VVVVVVVVVVVVVVVVVVVVVVVVV V              V VV
+    AAA                         A  AA  A A AAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXX++++++++XXXXXXXXXXXX++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHH-HHHHHHHHHH-HHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHHHHHHHH-==HH--========---HHHHHHHH-==
+BBBBBBBCBC CCCCCBBBBC BCCCCC CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBC C CCCCCBBBBBBBC   CC             CCBBCCCC
+VVVVVVV                        VVVVVVVVVVVVVVVVVVVVVVVVVV      VVV  VV               V
+A A AAA                            AAA  AAA AA A  AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+++++++XXXXXXXXXX+X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHH--H-HHHHH--HHH--=  -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--------HHHHHHHHH=-HHHHHH--== = ==-H-HHHHHH-=-
+BBBBBBBBCCCC  C CCCCB  CBC      CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC        CBBBBBBBC  BBBCCC          C CCBBBB
+VVVVVVVV                         VVVVVVVVVVVVVVVVVVVVVV      VVVVVVVV               VVV       V
+A AAAAA                           AAA   AA A A A  A AA           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX++XXXX++XXXXXXXXXXXXXXXX++++++X++XXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHH----HHHH--H-H-HH-= --HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==--==----= -HHHH-HHHHHHHHH-======-==-HHHHHH--
+BBBBBBBBBBBC    BBBB  C C CB     BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC              CCCC BBBBBBBBC           CCCBCC
+VVVVVVVVV                         VVVVVVVVVVVVVVVVVVVVV V VVVVVVVVV                          VVVVV
+AAAAAAAA                           A     AAAAA  A AAA         A A                              AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+XXXXXXXXXXXX++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XX++XX+=+XXXXXXXXXXXXXXXXXX+++++++XXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''
+....................................................................................  ..................................
+HHHHHHHHHHHH--=HHHHHHH---H-==-=-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----==-=--==--  =HHHH-HHHHHHHHHHHH-= === =-----H-=
+BBBBBBBBBBBB   CBBBCCC   C       CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC                 BBBB CBBBBBBBBBCC             C
+VVVVVVVVVVVV      V               VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV                      VVV  VVVVVVV
+    AAAAAA                            A AA    AA AAAAA        AA                              AA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+++XXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++++X++X++XXXXXXXXXXXXXXXXXXX++X+++++++++XXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHH--HHHHH--===----===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-==-======-==-==HHHHHHHHHHHHHHHHHH-==-===== ===-H-
+BBBBBBBBBBBBC  CBBBC              BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC C                CBBBBBBBBBBBBBBBBB              C
+VVVVVVVVVVVV                      VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV                       VV   VVVVVVVVVVV
+AAA AAAAAAA                         A AA A  A A  A  A A                                       AAAA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+XXXXXXX++XXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++X+++++XX++XXXXXXXXXXXXXXXXXXXXXXXXX++++++++XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''
+................................................................................................................  ......
+HHHHHHHHHHHH-=-HHHHHH==------====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H-====-=====--==-HHHHHHHHHHHHHHHHHHHHHHH-==    ==HH
+BBBBBBBBBBBB   CCBBCC             BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC  C                BBBBBBBBBBBBBBBBBBBBCCC         CC
+VVVVVVVVVVV                        VVVVVVVVVVVVVVVVVVVVVVVVV VV                       VVVVVVVVVVVVVVVVVV
+   AAAAAAA                         AAAAA  AAA AAA AAA    A A                                  A    AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX++XXXXXXX+XXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++XXX+++XXXXXXXXXXXXXXXXXXXXXXXXXX++++++XX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''
+.................................................................................................................   ....
+HHHHHHHHHHHH==--HHH--=HHHHH---===HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH------=-====---===HHHHHHHHHHHHHHHHHHHHHHHHH-=    =HH
+BBBBBBBBBBBC    BBC   CBCCC      CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC                  BBBBBBBBBBBBBBBBBBBBBBBCC       CC
+VVVVVVVVVVV                       VVVVVVVVVVVVVVVVVVVVVVVVVVVVV                        VVVVVVVVVVVVVVVVVVVVV
+A  AAAAAAA                         AA A AAAAAA A A A AAA                               AAA A  A AA  AA A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX++XXXXXX+XXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................................................... ....
+HHHHHHHHHHH-==-HHHH-=-HHHH-H---==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---========= ==HHHHHHHHHHHHHHHHHHHHHHHHHHH=   =-H
+BBBBBBBBBBB    CCCC   BBBC C     CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCC               CBBBBBBBBBBBBBBBBBBBBBBBBBC      C
+VVVVVVVVVV             VV         VVVVVVVVVVVVVVVVVVVVVVVVVVV                          VVVVVVVVVVVVVVVVVVVVVV
+    AAAAAA                          AAA   AA  AAA A    AA                               AAAA   A A  AA AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX++++++X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHH--H-H----HHHHHH----==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-----===========-HHHHHHHHHHHHHHHHHHHHHHHHHH==  ==-
+BBBBBBBBBBBC  C C    CBBBBC      CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCC                 BBBBBBBBBBBBBBBBBBBBBBBBBC
+VVVVVVVVVV            VVV          VVVVVV VVVVVVVVVVVVVVVVVV V                         VVVVVVVVVVVVVVVVVVVVVVVVV
+ AA AAAAAA                          A A    AAAA AA A  A A                               A AA    AA    A AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX+XXXXXXX++XX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXX++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHH--HH-=-HHHHH- =--==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---===============HHHHHHHHHHHHHHHHHHHHHHHHH= =   ==
+BBBBBBBBBBCCC  CC   BBBBB         CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC                  CBBBBBBBBBBBBBBBBBBBBBBBC
+VVVVVVVVVV           VVVV          VVVVVV  VVVVVVVVVVVVVVVV V                           VVVVV VVVVVVVVVVVVVVVVV
+A AAAAAAA              A             A A     A  A                                        A A     A A  A A  AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+XXXXXXX-=++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++X++X+XXXXXXXXXXXXXXXXXXXXXXXX+++++++++
+'''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................  .............................................................................................
+HHHHHHHHHHHHH-HH-=-HHHHHH  ==-----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----========-==-=-HHHHHHHHHHHHHHHHHHHHHH-== =    =
+BBBBBBBBBBBCC CC   BBBBBB         CBBBBBBCCBBBBBBBBBBBBBBBBBBBBBCBBBCC                  BBBBBBBBBBBBBBBBBBBBBB
+ VVVVVVVVV          VVVVV           VVVVV  VVVVVVVVVVVVVV  V                             VVVVVVVVVVVVVVVVVVVV
+  AAAAAAA            AAA            A  A     A AAAA AAA                                   A  AAA AA AAA AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX=+XX++X++XXXXXXX+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+X+++X++XXXXXXXXXXXXXXXXXXXXX+++++++++++
+''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......... ......................................................................................................   .....
+HHHHHHHHH  H-==-==HHHHHHH=-------=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH------===-=-===-==HHHHHHHHHHHHHHHHHHHHH===    = ==
+BBBBBBBBB  C      CBBBBBB          BBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBCCCC                  CBBBBBBBBBBBBBBBBBBBC
+   VVVVVV           VVVVV           V VVV   VVVVVVVVVVVVVVVVVV                           VVVVVVVVVVVVVVVVVV
+       A            AAAA               A      A A A  AA                                    A  AAA A  AA AAA
 OOOOOOOOO+OOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX +XX++++XXX +XXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+++++XXXXXXXXXXXXXXXXXXX++++++++++++
+''''''''' '''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........  ......... ........................................................................................... . .....
+HHHHHHHHH  HH== =HHH =HHHHHH-H-=-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H---HH-----=---=====HHHHHHHHHHHHHHHHHH-===        =
+BBBBBBCBB  CC    CBC  BBBBBC C      CBBBBBCBBBBBBBBBBBBBBBBBBBBBBCBC C   CC              BBBBBBBBBBBBBBBBBC
+VV     V              VVVV            VVV    VVVVVVVVVVVVVVV                              VVVVVVVVVVVVVVV
+AA                    AAAA             A      A AAA     A                                   A A A  A  AAA
 OOOOOOOOOOOOOOOOOOOO-OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+XXX++XXXX- +XXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXXXXXXXXXXXXXX+++++++++X+++++
+'''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''
+...................  ....................................................................................... . .........
+HHHHHHHHH=-H-==-HHH   HHHHHH----===-HHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHH-H----============-HHHHHHHHHHHHHHH==    ===-= ==
+BBBBBCCCC  C    BBB   BBBBBC        CBBBBB CCBBBBBBBBBBBBBBBBBBBBBCCCCC C                 BBBBBBBBBBBBBBB
+VVVV             VV    VVVV           VV     VVVVVVVVVVVVVV                               VVVVVVVVVVVVVV
+AA               AA    A A                       A                                         A   AA A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XXX++X+X+++XXXXXXXXXXXXXXX+++++-+++++++XX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''
+............................................................................................................    ........
+HHHHHHHHHH----HHHHHHHHHHHHHHH-H---==-HHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH--=---=---==-=-===-HHHHHHHHHHHHHH==       ====--=
+BBBBBBBBBC    CCBBBBBBBBBBBBC C      CBBBCC BBBBBBBBBBBBBBBBBBBBBBBCBCC                   BBBBBBBBBBBBBC
+VVVVVV           VV  VVVVVV                  VVVVVVVVVVVVVV                                VVVVVVVVVVV
+AAAA             AA   AAAAA                      A    A                                    A  AAA  AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXX+++++++XXXXXXXXXXXX++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''
+................................................................................................................  .  ...
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-----==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-----===---=======HHHHHHHHHHHH===  =
+BBBBBBBCBCBCCCBCBBBBBBBBBBBBC        BBBBBCCBBBBBBBBBBBBBBBBBBBBCBBCCCCC                  CBBBBBBBBBBC
+VVVVV                VVVVVVV          VVVV   VVVVVVVVVVVVVVVV  V                           VVVVVVVVVV
+AAAA                  AAAAA                    AAA  AAAAA                                      AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+++X++XX++XXXXXXXXXX++++=+++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''
+.......................................................................................................    .... ......
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=--=-==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----===-===-==--==-HHHHHHHHH==     ====
+BBBBBBBBCBBBBBBBBBBCCBCBCBBBC        CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCC                   BBBBBBBBC
+VVVVVVV       VVV        VV           VVVV VVVVVVVVVVVVVVVVV V                             VVVVVVVV
+ AAA           AA                            AA AAAA AAA A                                    AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+XXXXXXXXXXXXXX+++++--++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''    '''''''
+.......................................................................................................   ..     .......
+HHHHHHHHHHHHHHHHHHHHHHHH-H-====----==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=-------=------HHHHHHH-===    =      = ==
+BBBBBBBBBBBBBBBBBBBBBCBB C           CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCC                 BBBBBBB
+VVV VV     VVVVVVVV                       VVVVVVVVVVVVVVVVVV V                             VVVVVV
+              AAA                                A   A                                      AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+X+++XXX+++XXXXXX+++++++++++==++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''''''
+..................................................................................................... .....     . ......
+HHHHHHHHHHHHHHHHHHHHHHHHHHHH--=-=-----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--===-=-===---===HHHHHH==     =            ===
+BBBBBBBBBBBBBBBBBBBBBBBBBCBC          BBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCBCC                 CBBBBC
+VVVVVVVVVV VVVVVVVV VVV                 VVVVVVVVVVVVVVVVV VVVV                              VVVV
+              AAAAA                       A        A  A                                      AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++X+XXXXXXXXX++++=+++++=+++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''     '''''''''
+...................................................................................................   ....       .......
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--==== =-=-----HHH-==                 =====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBB       CBBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBCBBBCCCCC               BBB
+VVVVVVVVVVVVVVVVVVVVVVVVV               VVV       V VVVVVVVVV V                             VV
+AAAAAA         AAAA                     AAA          AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX++++X++++XX+X+XX++++++++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''
+......................................................................................................    ..............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==-HHHHHHHHHHH--HHHH=HHHHHHHHHHHHHHHHHHHHHHH---====-====--=-=--=== =            =========
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB    CBBBBBBBBBC  CCCC CBBBBBBBBBBBBBCBCCCCCCC
+VVVVVVVVVVV VVVVVVVVV VVV  VV        VVVVVV          VVVVVVVVV VV
+AAAAAA  A   AAA AAAA                     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXX++XX+XX++XXXXXXXXXXXXXXXXXXXXX+X+XX+++++++++++XX++++++++XXXXXXXXXXXXXXXXX+XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............................................................................................   ......................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=-HHHHHHHHH-==--=HH==HHHHHHHHHHHHHHHHHHH--=-=--==     ====--==     =---HHHHHHHHHHHHHH=-H
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC   CBBBBBBBB      CC  CBBBBBBBBBBBBBBCBCC                               CCCCBBBBBBBBBC  B
+VVVVVVVVVVVVVVVVVVV   V VVV VV       VVVVV             V V  V                                                V V V
+AAA     AAAA AAAA                     AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XX+++XXXXXXXXXXXXXXXXXXXXXXXXX+++XXXX+X+XXXXX++++XXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''
+............................................................................................... ........................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-== =-H===-HHHHHHHHHHHHHHHHHHHHHHH-===----=-=-----=   HHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBB      C    BBBBBBBCCBBBBBBBCCBCCCC                    CCBBBBBBBBBCBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV   VVVVVVVV              VV        V                                   VV  VV    VVVVV  V
+AAA   AAAAAAAAA                     A AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH   ==-===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC          BBBBBBBBCBBBBBBBBBBBBBBCCCBBBBBBBBBBBBBCC BBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV  VV                V      VVVVVV VV       VVV   V         VVVVVV   V     VVVVVV V
+AAA  AAAAAAA   AAAAAAA  A   A A    AA                             A                                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+++++X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=-HHHH== = -===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC  CBBB          BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV    VV            V V    VV VVVVVVVV V V V VVVVVVVVVVVV VVVVVVVVVV VV VVV VVVVVVV V
+ AAAA  AAAA A AAAAAA A    A  AA    A      A                       AAA                A         AA AA            A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXX++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH= =-HHHH========HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC    BBBB        CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV     VVV            VVV V    VVVVVVVV VVV  VVVVVVVVV VVVVVVVV VVV  V         V   V
+A AA  A AAA   AAAAA  AAAAAA A  AAA        A                      AAAA  A  A      A A            A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHH====-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB  CBBBBBC        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV     VVVV           VVVVVV  VVVVVVVVVVVVV V  VVVVVVVVVVVVVVVVVVVVV  V VVVVVV  VVVV
+ AA AA AAAA AAAAA   A AAAAAAAA AA  A     A              A   A    A  A              A               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=  ====HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB       CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVV        VVVVVVVVVVV VVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVV  VVVVV VVV  VV
+A A A AA A AA AA AA   AAA AAA AAA        AAAA          A               A  A A            A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-   ===HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB       CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV         VVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVV VVV VV V    VV  VVVVVVVVVVV
+AAAAAAA A      AAA AA AAAA   AA A      AAAAAA           A AAAA      A A  AAAAAAA       AAA                     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH= == =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV        VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  V V VV V V   VVVVVVVVVVVVV
+ AAAAAAAAA      A     A             AAAAAAAA                AA  AAAAAAAA  A  AAA    A AA                           A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=     HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB      CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV        VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVV VVVV VVVVVVVVVVVVVV
+ AAAAAAAAAA  AA AA A   A       A AAAAAAAAAAAAA         AAAAAAA A A AAA AAAA      AA A  A A            A      A AAA   A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................. ......................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-    =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV       VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVV   VVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAAAAAAA  A    A A    A AA  A AAAAAA          AAAA A A    AA    AA    AA  A  A AAA                 A AAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................   ....................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH     -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC      BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV        VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V VV VVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAAA A  AAA     A A  A AAA   A  AAAA            A   A  A   AA  AA AA   AAAA  A    A            A A  AAAAAA  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++==++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................   ....................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH    ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC      BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVV VVV VVVVVVVVVVVVVVVVVVVV        VVVVVVVVVVVVVVVVVVVV VVVVV VVVVVVV VVVVV  VVVVVVVVVVVVVVVVVVVVVVV
+AAAAA AAAAAAA  AA A        A    AA AAAA AAAA A                    A          AA   AA AA    AAA      A   AAAAAA AAAAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+= -++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................   ....................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=    =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB      BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV       VVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAAAAA AA       AAAAA  AAAAAAAA AAA A        AA  A A         A       A  A   A  AAAA A  AA AAAA A AAAAAAAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+ -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................  ....................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-    HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB     CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV      VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAA  AAA     A  AAAAAAAAA AAAAAA AAAA        A AAA AA  AA A               A   A  AAAA A  AA AA A AA AAAAAAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................  ....................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=  =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB    BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVVVVVVVVVV      VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAA AAAAA AA   A   A   AAAA    A AAAAAAA AAAA       A AAAAA  AAA  A  AAA A A  A    AA AA  AA  AAAAAAAAAA AAAA  AA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVV      VVVVVVV VVVVVVVVVVVVVVVVVVV     VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VV V VVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAA  AA                A     AA      A  A AA     AAA     A  AAAAA A        AA                     AAA      A   AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVV   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAA   A           AAA     AA AAAAAA A AA AAA    A  AAAAA A A  AA AAAAAAAAAA  AAA          A AAA   AAA       A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVV V  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAA            A     AAA   A   AAA AAA  A AAAAA AAAAAA   AA A   AAAA AAAAAAAAAAAA  AA   A AA AAAAAAAAAAA    AAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAA    A  A    A   AA  AAAA  A  AAAAAAA AAAAA   A AAA   A  A   A   AAAAAAAAAAAA       A       AAAAAAA       AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAA  A A A      A         AA  A     AAA  A AA    A   A AAA      A   AAAA AAA  AA AAAAAAAAAAAA AAA A    AAAAA        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAA           AAAAAAA          AA  AA AA AAA AAAAAA   A A        AAAA  AAAA AAAAAA AAA   A AAAAAAA   AAAAA   A AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAA A AA A      AAAAAA  A  A       AA  AA  AAAAA AAAAAAAAAA A        AAAA  AAAAAAA AAAAA AAAAAA AAAAAAA   A      A AA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAA A A       AAAAAA AA AA A A AA  AAAAAAA AA   AAAAA A A AA  A AA  A AA  AA A A AA A AAAAAA AA AAAA AA       AAA A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAA     A  A AAAAAAA       AAAA   AA AA A  AAAAA AA    A  A A  A A AA       AAAAAA  A A  A AAA  A  A AAAAAAA A  A   AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A A  AA   A  AAAAAAA     A AAAA AAAAAAAAA   AAAAAA   A A A  A AAA A  A AAAA     AAAAAAAAAAAAAA AAA A AAAAAAA    AA   AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ A    A AAA AA AA A       AAAAAAAAAAAAAAAAAAA A   A  AAAA A  A     AA AAA  A    AAAAAAAAAA   AA AAAAAAAAAAAA AAA   A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AA      A AAAA  AAAA     A AAAAAAAAAAAAAAAAAA  AAAAAAAA     A       AAAAAAAA AAA  A A  AA    AA AAAAAA     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVV V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V  VV  VVVVVV
+   A    AA AAAAAAAAA        AAAAAAAAAA AAAAA AA  AAA A    AAA AA A AAAAAA AA A   AA   AAA   AA AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A A  A  AAAAAAAAAAAAA A      AAAAAAA AAAAAAA A   AAAAAA   AA  AAA  AA AAAAAAAAA  AA A AA AA AAAAAAAAAAAAAAAAAAA A AAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+   A A AAAAAAAAAAAAAAA A   AAA AAAAAAAAAAAAAAAAA   AA AA A AA AAAAA A    AA    A   AAA  AAAAAAAAAA AAAAAAAAAAAA A AA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+   A AAAAAAAAAAAA AAAAAA  AAAAAAAAAAAAAAAAAAAAAAAA   AAAAA AAA A  A AAA A AAAAAAAAAAA AAAAAAAAAAAAAAAA AAA AAA   A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V
+    AAAAAAAAAAAA A  AAAA A AAAAAAAAAAAAAAA AAAA AAAA   A AAAAAA  AA  AA    AA AAAAAAAAAAAAAAAAAAAAA AAAAAAAAA          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAA AAA  AAAAA AA AA  AAAAAAAA AAAA AAAAAAAA  AAAA A   AAA AA         AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+  AAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAA AA AAAAAA AAAA AA  AA  AAAAAAA AAAA A  A AAAA AAAAAAAA AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV
+AAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAA      A A    AAA A A AAAAA A   AAAAA AAA   AA      A A A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAAAAAAAA      AAAAAA AAAAAAAAAAAAAAA    AAAAAA AAAAAAAAAAAAA A AAAA  A A  AAAAAA  AAA AAA    AA AA            AA    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A AA AA A        AAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA   A AAAA AAAAAAAAAAA AA      A  A A AAAAA A  AA A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVV   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAA         AAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAA A AAAAAAAAAA  A AA AAAAAAAAAA AA  AAA  A   AA AAAAAAA AAA AA A   AA A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVV   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ A A           AAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA AAAAAA A AAA AAAAAAAAAAAAAA AA A A  AAAAAAAAAAA  AA   AA    A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  V  VVVVVV   V  VVVVVVVVVVVVVVVVVVVV
+A A          AAAAAAAAAAAAA AAAA  AAAAAAAA AAA  A A AAAAA A A            A AAA                          A  A A AAAA    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVV  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+            A AAAAAAAAAAAAA AA   AAAAAAAAAAAAAAAAAA  AA AA A   AAA AA A   AA AA A  A  AAAA AA     A A AAA AA A     A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A        AA AAAAAAAAAAAAAAA A AAAA  AA AAAAAAA   AAA AA A     A AAA A  A AA A  AAAA AA  A AAAA   A AAAA    A A A    A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ A        AAAAAAAAAAAAAAAAAAA  AAAAAAA AAAAAAAAAAAAAAAAA   A  AAAAA AA  A  AAAA AAAA A A A  AAA  AAAA  AAA  A   A A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVV VVVVVVVVVVV VVVVVVVVV VVVVVVVVVVV V VVVVVVV
+       AAAAAAAAAAAAAAAAAA A    AAAAAAAAAAAAAAAA A A A         A                 AAAAA                            A  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVV
+   AAAAAAAAAAAAAAAAAAAAAAA AA AAAAAAAA  AAAAAAAAAA A  A A    AA AAAAAA  A  AAA    A A       A   A AAAA          AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+    AAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAA  AA  AAA  A  AAA A A     AA    A AAAAA   A AAAA  AA  A AAAAA AAA AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAAAAAAAAAAAAAA    AAAAAAAAAAAAAAAAAA  AAAAA AA AAAAAA  AAAA    AA AA  AAA  AAA  A  AA A AA  AAAAAA  AA AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV   VVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAAAA AAAAAAA AA   AAAAAAAAAAAAA AAAAAAA A AAA  A  A    A              A        AA AA   AA  AAAA   AAA  AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAA     AA AAAAAAA      A  AA  AA AAA AAAA A AAA A AAA AAA   AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAA  AAAA           A A        A    A A A A A AAA AAA AA  A   AA AAAA   A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VV VVVVVVVVVVVVVVVVV  V  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA                             A      AA           AAAAA      AAA A A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VV
+AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAA A     A  A   AAAAAAA  AA AA AA A A A AAA AA  AAA AA    A AA AA A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+ VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VV
+  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAA  AA   AA A      AA  AAA AA   A A       A A  AA   A A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ .......................................................................................................................
+ =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V  VVVVVVVVVVVVVVVVVVVV
+   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA A    AA A AAA   AA AAA AA  A                         A AA         A A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ......................................................................................................................
+  =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA    AA  A  AA AA AAAAA   AA   A  A        A   A   A AAAAAA AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ .......................................................................................................................
+ =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+    AAAAAAAAAAAAAAAAAAAAAA A  AAAAAAAAAAAA AAAAAAAAA A AAAAA AA AAAAAAA       A A  AAA  A  AAA  AAAA  AAAAAAA AAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+ VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVV  VV
+ AAAAAAAAAAAAAAAAAAA A   AA  AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAA AAAAAAA    AA AA  A A  A           A       A A A AAAA  A
1
 OOOO+--1OOOOOOOOOOOOOOZA)=)OOO+-=  -)+OOOOOOOOOOOX--- -  --  XOO--ZOOOOOOOOOOO)OOOOOA-ZOOXZ-   +MOOOOOOOOOOOOOOOOO)==---
+XXX+    -+XXXXXXXXXXXX     +X+        +XXXXXXXXXX             X-   +XXXXXX+++- -++XX   ++        ++X+XX++XXXXXXXX+
+''''     '''''''''''''     '''        '''''''''''             '    ''''''''''   ''''   ''        '''''''''''''''''
+....     .............     ...        ...........             .    ..........   ....   ..        ................
+HHH=      HHHHHHHHHHH-      H=        =HHHHHHHHHH             -    =HHHHHH= =   = -H              =-=--==--------
+BCB       CBBBBBBBBCC       C          BBBBBBBBBC                   CBCBCC         C
+            V V VVV                     VV  VVVV
 OOOOZ--AOOOOOOOOOOOOOOAAOOOOOOOZ- -1+OOOOOOOOOOOOOO---   =  -MOZ   OOOOOOOOOOO-XOOOOOMOOOM)-- -MOOOOOOOOOOOOOOOOOOZ=--
+XXXX    ++XXXXXXXXXXXX  -++-++=      -XXXXXXXXXXXX-           X    =XXXXXXXXX-  +++X+ -X+       +XXX+X+XXXXXXXXXX+
+''''    ''''''''''''''      ''        ''''''''''''            '     '''''''''   '''''  ''       ''''''''''''''''''
+....     .............      ..        ............            .     .........   .....  ..       .................
+HHHH     =HHHHHHHHH---                HHHHHHHHHHH-            -     HHHHHH--H   ===-=  -        =---=-=--------H-
+BBBC      BBBBBBBBB                   CBBBBBBBBBB                   CBCBBC  C                                  C
+            V VVVV                          V VV
 OOOOZ=+OOOOOOOOOOOOOOOZOOOOOOOOO--1MZOOOOOOOOOOOOOO1Z+   -  -OO1--=AOOOOOOOOOO)OOOOOOOOOOA=   1OOOOOOOOOOOOOOOOOOOZ=- --
+XXX+   -+XXXXXXXXXX++X -+XX++-++     +XXXXXXXXXXXX-          -X     +XXXXXXXX+ =+++++-+X+      ++XX++++XXXXXXXXXX+
+''''    ''''''''''''''  ''''' '      '''''''''''''            '     ''''''''''  ''    '''      '''''''''''''''''''
+....    ..............  ..... .      .............            .     ..........  ..    ...      ...................
+-HH=    =HHHHHHHHH-==-   -H=  =       HHHHHHHHHHH-            -     =HHHHHHHH   ==     -=      ==--====---H-H-HH-=
+ CC      CBBBBBBBB        B           BBBBBBBBBBB                    BBBBCCBB                             C C CC
+           V VVV V                     VVVV  V VV
 OOOO)=)MOOOOOOOOOOOOOOZOOOOOO=+=- -1OOOOOOOOOOOOOOZ+==-   -- OO+ +OOOOOOOOOOOOOOOOOZ1OOOOZ= --OOOOOOOOOOOOOOOOOOOO)-  --
+++++    +++XXXXXXX++++ -+++X+       +XXXXXXXXXXXXX           =+   +++XXXXXXXXX=+X++  -+++     -+X+++++++X+X+XXXXX+
+' ''    ''''''''''''''  ' '''        '''''''''''''            '   ' '''''''''' ''''   '''      '''''''''''''''''''
+  .     ........... ..  .  .         .............            .      ......... ....   ...      ...................
+  =      ==-HHHHHH   =     -         HHHHHHHHHHHHH            =      -HHHH-HH-  -=     =       =-=======-=-=---HH
+            BBBBBB                   CBBBBBBBBBBBC                    CCBC BB                                  CC
+            VVVVV                     V V VV VV
 OOAMX=)OOOOOOOOOOOMOOOOOOOOOO--- - 1OOOOOOOOOOOOOOOOXMZ)-- --OO=-MOOOOOOOOOOMMOOOOOOOOOOO) - +OOOOOOOOOOOOOOOOMOOO+-- 1O
+--     -+++++XXXX+ -+X++XX++-       +XXXXXXXXXXX+XX+         ++   X+=XXXXX+=  =+++--=+++-     +++++++++++++++- +X+     -
+         '''''''''  ''''''''        ''''''''''''''''          '   '' '''''     '''   '''       ''''''''''''''  '''
+         .........  .......         ...............           .   .. .....     ...    ..       ..............  ...
+          = =HHHH=  =-  --           HHHHHHHHHHH=HH           =   -= -HHH-      =              ===== == =====   -
+             BBBB                    BBBBBBBBBBC CC                   CCB
+               V                       VVV VVVV
 OOMX1+=+XZMOOOOOOOXOOOOOOOOOOOO---=OOOOOOOOOOOOOOOOOOOOO---  OO=-AOOOOOOOOO1--==++++ZMAXZ=--)OOOOOOOOOOOOOOOO)-1OOO+=1OO
++-         ++XXXX+ =+++XXXX+=-+    -XXXXXXXXXXXXXXX++++-     =+   +++XXXXX+                  =++++++++X+XXX++   ++-   -+
+'          '''''''  ''''''''  '     ''''''''''''''''''        '   '''''''''                   '''''''''''''''    '     '
+            ......  ........  .     ................ .        .   ........                    ...............    .     .
+            =HHHH   ===-HHH         HHHHHHHHHHHHHH-           =     =-HHHH                     =======-=---==
+             CBBB       CBC         CBBBBBBBBBBBCC                    BBBB
+                V                    VV VV    VV                      VV
 OAZ)MXZ+11=AOOOOOOOOO1OOOOOOOXM- -)OOOOOOOOOOOOOOOOOOXOO1=   OO--=AOOOOOOOOZ- --  --====---=OOOOOOOOOOOOOOOOO+- =MOM1ZMO
+-           ++XXXXXX+ -+++XX+      +XXXXXXXXXXXXXXXX+ ++     -+    =+++X+++                 =+++++++XXXXXXXX+     +    +
+            '''''''''  '''''       '''''''''''''''''' ''      '     ''''''                   ''''''''''''''''     '    '
+            .........  .....       .................          .     ......                   ................          .
+            ==HHHHHH=   = --        HHHHHHHHHHHHHHHH          =       =-                     =======--HH-HHH
+              CBBBBC                BBBBBBBBBBBBBBCC                                                  CC CCC
+                VV                   VV    V   V
 MA1)XZ111+-+OOOOOOOOOA)OOOOOA- -- +OOOOOOOOOOOOOOOOOOMOOO)-  MO=--+)MOO1)++= --   - -    --OOOOOOOOOOOOOOOOOO=   +OOXXOO
+            =++XXXXXX  +++++       +XXXXXXXXXXXXXXXX+ =--     +      +=                    -+XX++XX+XXXXXXXX+     =-  -+
+              '''''''   ''''       ''''''''''''''''''         '                             '''''''''''''''''          '
+              .......   ....       ..................         .                             .................
+              =-HHHHH   == =       =HHHHHHHHHHHHHHHH=         =                             =--==--=H-H--H-H=
+                CBBBC               BBBBBBBBBBCBBBBB                                                C C  C C
+                 V                    V  V      VVVV
 M)++=)+))--XOAOOOOOOOOOOOOOO1-   -+OOOOOOOOOOOOOOOOOOOO-))- -MO) ----==--- -    --  --    +OOOOOOOOOOOOOOOOOO+---+OOMAAO
+            + ++XXXXX+=++XXX       -XXXXXXXXXXX+XXXXXX+       +                            +XXXXXX+++XX+XXXX+     -=   -
+              ''''''''  ''''        '''''''''''''''''''       '                            ''''''''''''''''''
+               .......  ....        ..................        .                            ..................
+               =-HHHH   =HH-        HHHHHHHHHH-=-HHHHH        =                             ------===--=--HH
+                 CBCB    CC         CBBBBBBBBB   CBBBB                                                    CC
+                                       V  VV
 )+)+--==)--+OXOOOOOOOOMMOOOOMXM -=1MOOOOOOOOOOO)=OOOOOOM=1= -MOZ---  -  --- ---=-- --     ZOOOOOOOOOOOOOOOOOOZ- -=MOOOOO
+            - -+++XXX+  +++X        XXXXXXXXXXX  +XXXXX       X                            ++++++X+++XXX+++XX      +++++
+               '''''''   '''        '''''''''''  ''''''       '                            ''''''''''''''''''      ''' '
+                ......    ..        ...........   .....       .                            ..................       ..
+                ==HHH=    =-        -HHHHHHHHH-   HHHHH       -                             =====-===---===H-
+                  CBC                BBBBBBBBB    CBBBB                                                    C
+                                      VV VVVV      VVV
 ==+==-=-=- -MZOOOOOOOOOOOOOOOXA- -ZOOOOOOOOOOOO) ZOOOOOO=+-  XOX--    - --     --=----    1OOOOOOOOOOOOOOXXOOO--))AOOOOO
+              ++-+++++=++++X+      -XXXXXXXXXXX   XXXXX+      +                            ++++XXXXXXXXX+  ++=     ++++X
+                 ''''' ''  '        '''''''''''   ''''''      '                            ''''''''''''''  ''      '''''
+                  ....     .        ...........   ......      .                            ..............  ..      .....
+                  ====     -        HHHHHHHHHH-   -HHHH=      =                             ===---------=   =       ===-
+                                    CBBBBBBBBB     BBBB
+                                     V V VVV        VVV
 --=---- -- -11OM1OOOOOOOOOOOX-  - ZOOOOOOOOOOOO1 -OOOOOOOOA--)OO--- - --   -- -  ---A)-   -OOOOOOOOOOOOOO+-)OO11MOOOOOOO
+              -  +++X++XXX++       +XXXXXXXXXXX   +XXXXX+-    +-                           +++XXXXXXXXXX+   =+   -+XXXXX
+                  ''''''''''       ''''''''''''   '''''''     '                             '''''''''''''    '    ''''''
+                  ..........        ...........   .......     .                             .............         ......
+                  = -==-HH==        HHHHHHHHHHH    HHHHH=     =                             ==--------HH           --HH-
+                        CB          CBBBBBBBBBC    BBBBB                                              CC             BC
+                                      VVVV VVV      VV
 ===----  -- -++-)OOOOOOOOOOM+ZO- )OOOOOOOOOOOOOZ  XOOOOOO=+- )OO-    - -- --       -OO=    ZOOOOOOOOOOOOO-- -ZMOOOOOOOOO
+                 ++++++++X+   -   =+XXXXXXXXXXX    XXXXX+     ++                    --      +XXXXXXXXXXX+      -+-+XXXXX
+                 ''''  ''''        ''''''''''''    ''''''     ''                            '''''''''''''         ''''''
+                 ....  ....        ............    .....      .                             .............         ......
+                  ===  ==-=        =HHHHHHHHHH-    -HHHH      =                             =--HHHH--HH-=         =HHHHH
+                                    BBBBBBBBBB      BBBB                                       CCCC  CC            CCCBB
+                                      V   VVVV       V V
 =-=-- ---  ---=-)OOOOOOOOOOOOOO+=OOOOOOOOOOOOOOA---OOOOOOX=---OO=-   -=-+M1--  - -- )+)    =OOOOOOOOOOOOO=-- -1OOOOOOOOO
+                 =++++++==++=++  -++XXXXXXXXXXX    +XXXXX     ++                            +++XXXXXXXXXX      +++XXXXXX
+                  ''''''  ''  '   '''''''''''''    ''''''     ''                            '''''''''''''      '''''''''
+                   .....  .   .   .............    ......     ..                             ............        .......
+                    =  =  =        =HHHHHHHHHHH     HHHH-      =                             ==---H--HHH-         -HHHHH
+                                    BBBBBBBBBBC     CBBB                                          C  CCB           CBCBB
+                                     VVV V  VV        VV
 )==-----    --=-=1XOOOOOOOOOO+--  OOOOOOOOOOOOOO  -MOOOOOOOZ- OOZ-  - -ZOO-    - -   -+=-   MOOOOOOOOOOOO) -  -OOOOOOOOO
+                   -++=+XXX++     =XXXXXXXXXXXX-    XXXXXX+   +X        ++                   +++++XXXXXXX      -++XXXXXX
+                    '' ''''''      ''''''''''''     '''''''   ''        '                    ''''''''''''       ''''''''
+                    .. ......      ............     ......     .                             ............       ........
+                       =---        -HHHHHHHHHHH     -HHHHH     -                                ==-HHHHH-         -HHHHH
+                                    BBBBBBBBBBC      BBBBC                                         CCCBC           CCBBB
+                                    V V VV  VV         VV
 ))+-------  ---- --1XZXMOOOOMMM--=OOOOOOOOOOOOOO---XOOOOOAA1- OOO-    1OOX  - ==-- ------   =AMOOOOOOOOOOA-    XOOOOOOOO
+                        =+++      +XXXXXXXXXXXX+    XXXX+     -X+      ++                      -=++XXXXXX       ++XXXXXX
+                         ''        '''''''''''''    '''''      ''      ''                        ''''''''       ''''''''
+                          .        .............    .....      ..      ..                        ........       ........
+                                   HHHHHHHHHHHH=    -HHH=      H        =                         =HHHHHH        =-HHHHH
+                                   BBBBBBBBBBBB      BBB       C                                   CCCCBC          CCBBB
+                                     VVVV VVV
 +)+==--  - ---- ---- ------)XMO--=OOOOOOOOOOOOOO1 =MOOOOOOOZ  +OOZ--  -A)-   -)OOZ - ---- -  -)MOOOOOOOOOO=    1OOOOOOOO
+                              -   -+XXXXXXXXXXXX    +XXXX+=    +X              =+               ++XXXXXXX+      ++XXXXXX
+                                   '''''''''''''    ''''''     ''               '                '''''''''      ''''''''
+                                   .............    ......     ..               .                .........      ........
+                                   =HHHHHHHHHHH-     HHHH=     =H                                 -HHHHHH         HHHHHH
+                                    BBBBBBBBBBB      CBBC       C                                  CCBCBB         CBBBCB
+                                     V VVVVV V        V
 Z1))+=--=---==--=----=------=--- -1OOOOOOOOOOOOOM- -OOOOOOOO1 -ZOO1 --   - -----MOO-   -=--  -+MOOOOOOOOOOX--  =OOOOOOOO
+                                   ++XXXXXXXXXXX    -XXXXXX+    ++               +-             ++XXXXXXXX      ++XXXXXX
+                                   '''''''''''''     '''''''    ''               '               '''''''''       '''''''
+                                   .............     .......    ..               .               .........       .......
+                                    =-HHHHHHHHHH     HHHHHH=    ==               =               =--HHHHH-       =-HHHHH
+                                      CBBBBBBBBB     CBBBBC                                         CCBBB          CBBBB
+                                       VVV             V
 MMXZ1)++-==-=-=-=++++-==--- ---- +1OOOOOOOOOOOOOO  -XOOOOOOO1- -OOO1- -     -----OOO--  --     =1OOOOOOOOOO)- - 1OOOOOOO
+                                   -+X+++XXXXXXX+    +XXXX++    +X+              =+=             -++XXXXXX+      +++XXX+
+                                    '''''''''''''    ''''''      ''               '                ''''''''       ''''''
+                                    ............     .....       ..               .                .......        ......
+                                    =-===HHHHHHH     =HHH-       H=               =                =-HHHHH         =HH-=
+                                         CBBBBBB      BBB        C                                   CCBBC          CB
+                                            V V
 OOOMZ111+=)++---=XZZ1)-++==- -  -=)MOOOOOOOOOOOOM-  1OOOOOOOO=- -OOOA-    --     -MOM   ----     -)MOOOOOOOA=--=-)OOOOO1
+==-                                 +++++++XXXXX     +XXXX++=    =XX               +                +XXXXX+       -+++-
+                                    ''''''''''''     '''''''      ''               '                '''''''        '''
+                                    ............     .......      ..               .                .......        ...
+                                     === ==HHHHH     =HHHH==      H-               =                =-HHHH=         =
+                                           BBBBC      CBBB        C                                   BCBB
+                                             VV        V
 OOOOMAAZ1)+++=)=-)OMMOM1Z1+=-  ---==MOOOOOOOOOOOA   -OOOOOOOOA--  OOOO1------ - -  OOA  ---   -    XOOOOOOOO)=ZO+-+ZX1+=
++++-              -  -               +++X+++XXXX     -XXXXXX+     -+X+             -X               ++XXXXX+   -
+''                                   ' '''''''''      '''''''      '''              '               ''''''''
+..                                      ........      .......      ..               .               .......
+                                        -== -HH-      -HHHH-=      =-               -                =HHHHH
+                                             BB        BBBB                                           CCBBC
+                                                        VVV
 OOOOOOOOMXXZ))1))=ZOOOOOMMXZ)+=-----+ZOOMOOOOOOOO----1OOOOOMZ1-   -=1Z=-------  ----XOA-- -        =OOOOOOOOOOOOO= -----
+++===-+=           ++++=              =- =+++XXX-     XXXXX                          +              =+XXXXX++-+X+
+'                   '''                   ''''''      '''''                                          '''''''' '''
+.                    ..                    .....      .....                                          ........  .
+                                           = -HH      -HHHH                                           -HHHH=   -
+                                              BB       BBBB                                            CCCB
+                                              V         VV
 OOOOOOOOMMAZ)1))+==ZOOOOOOOMZ1+---- -=1AOOXMOOOOO+- -+OOOOOOOOO----  --  ---  ---  - =)=-  -   -   -XOOOOOOOOOOOOZ-----
+++++++==            +++++--             +-  =+XX+     +XXXXX++=                                      =+XXXXXX++XX
+'                    '''                     ''''     ''''''''                                        '''''''''''
+.                    ...                      ...     ........                                        ...........
+                     ==                       -H=      HHHH-==                                         -HHHH- =H-
+                                               B       CBBB                                             CBBC   B
+                                                          V
 OOOOOOOOOOMOMZ)==-=-)OOOOOOOOA1+---  --+ZOOMXMOOOO  -=OOOOOOOOO1- ---     --  =MOM11=--- ---        )XOOOOOOOOOOOO++Z-
+++++++++== -         +++++++-            -=   -++-    =XXXXX+++                 -                     -+XXXXXXXXX-
+''''''                ''''                     ''      ''''''''                                        ''''''''''
+.. .                  ...                      ..      ........                                        ..........
+=                                              ==      -HHHH  =                                         -HHHHHHHH
+                                                        BBBC                                             CBBBBCBC
+                                                         VV                                                    V
 OOOOOOOOOOOOOOZ+))+=-=OOOOOOOMZ+----- - -1XMOOOMOO=   1OOOOOOOOOZ-  -        1OOOOOOZ+--  =-  -     =ZAOOOOOOOOOOOXMOA
++++++++++++++-        ++=+++-               =-+ ++     +XXXX=+++              =+X++-                   =+XXXXXXXX+  +
+''''''''''            '' '''                    ''     ''''' '''               ''''                     ''''''''''  '
+......                 .  ..                    ..     ..... ...               ....                     ..........  .
+===                                                    =HHHH ==                =-=                      =-HHHHHHH=
+                                                        BBBC                                              BBBBBBC
+                                                          V
 OOOOOOOOOOOOOOMZ)=+===MOOOOOMMA1)- =  -- -Z+ZMOOOO1-   OOOOOOOOOOX---      -AOOOOOOOOZ=------       -)ZOOOOOOOOOOOOOOO)
+XX+++++++++++-         ++++=                  +=++     =XXXXXXXXX            +XXXXX++                  -++XXXXXXXX++++
+''''''''''''           ''''                   ' ''      '''''''''            ''''''''                    '''''''''''''
+...........            .. .                      .      .........            .......                     .............
+--=  ===  =            =                                -HHHHHHHH             -HH--=                     =HHHHHHH-  =
+                                                         BBBBBBBC              CC                         CBBBBBB
+                                                           VV
 OOOOOOOOOOOOOOOOX1+---=MOOOOOOOAMZ==------=)11ZOOOZ--  ZOOOOOOOOOOO=       AOOOOOOOOOO1=- ---   -   --+)1MOOOOOOOOOOOOO)
+X+++++++++++-+--        ++-=++=                --+      +XXXXXXXXX-         +XXXXXX++-                    +XXXXXXX+XXX=
+''''''''''''            ''  ''                   '      ''''''''''          '''''''''                     ''''''''''''
+............            ..                               .........          .........                     ............
+-   == = ==                                              HHHHH--H-          =HHHHH- =                     =-HHHHHH=---
+                                                         CBBBC  C            CCCCC                          CBBBCC
+                                                            V
 OOOOOOOOOOOOOOOOOA)+=---ZOOOOOOOOMZ)+= - ---)Z+ZOOM=----=OOOOOOOOOOOZ-- -+OOOOOOOOOOOOOA--   -  -- - -- )MOOOOOOOAOOOOOX
+++++++++++++++++-        =-=+++==               -=       +XXXXXXXXX+      -+XXXXXXXXX++                   +++XXX+ -++++
+'''''''''''''''             '''                           ''''''''''       ''''''''''''                   ''''''   ''''
+............ .              ...                           ..........       ............                   ......   ...
+= = ==== ===                                              HHHHHHHHH        =HHHHHHHH-=                     = HH-   ===
+                                                          CBBCCCBBB         CBBCBBCC                         CB
 OOOOOOOOOOOOOOOOOMM1)=--=)XOOOOOOMMZ1=- -----=+-+XO)=-   XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=-    -  --    -111XOOOO--MOM--
++++++++++++++++=-          +++++-                 -       +XXXXXXXXXX+++++XXXXXXXXXX++X+                     ++X=   +
+''''''''''''''             '''                            ''''''''''''''''''''''''''''''                     '''    '
+............ .              ..                            ............. ................                     ...
+ ==========                                               =HHHHHHHHHH=  ==HHHHHHHHH- =-=                      =H
+                                                           CBBBCCCCBC     CBBBBBBCB                            C
 OOOOOOOOOOOOOOOOOOOXX1)1)+XOOOOOMMZ)1)=--    -=- )X+-   -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA-   - -       ---- =OOOO=1OO)
+++XXX++X+++++++++=-        +++==                          -XXXXXXXXXXXXXXXXXXXXXXXXXXX+++                     =+X-  ++
+'''''''''''''' ''          '''                             ''''''''''''''''''''''''''''''                      ''   ''
+............               ...                             ..............................                      ..   .
+==---==-=                   =                              -HHH-HHHH----HHHHHHHHHHHHH-===                      =-
+                                                            CCC CCCC    CBBBBBBBBBBBC
+                                                                              V
 OOOOOOOOOOOOOOOOOOOZZ+1Z11MOOOOOMMMZ++===-  -- -- 1)---  -=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+   ------   -  -- =OOOM1OOO-
++X+++X++++++++++++-        +++++                           -+++---++++XXXXXXXXXXXXXXX+=+++                     +XX  +X-
+'''''''''''''''''          '''''                            ''     ''''''''''''''''''' '''                      ''   '
+.................          ....                             ..     ................... ...                      ..   .
+=-===-== == =               ==                                     ===-HHHHHHHHHHHHHH   =                       --   -
+                                                                       CCBBCBBBBBBBBB
+                                                                         VV   VV   V
 OOOOOOOOOOOOOOOOOOOMM)++-)1OOOOOOOMA)+=--- --   -----  -   -Z1=---+MOOOOOOOOOOOOOOOOOOOOOOOOA)=---  -- -  -)= -1OOOAOOO)
+XX+++XX++X+++++++++        ++X+++=                                  ++XXXXXXXXXXXXXXXX+XXXX+                    +X+ -XX
+''''''''''''''''''         ''''''                                   ''''''''''''''''''''''''                    '''  ''
+.................          .....                                    .......................                     ...  ..
+--===--==-=======          ==-=                                       -HHHHH--HHHHHHHH=-H--                     =H=  --
+                                                                       BCBCC  CBBBCBBC  C                        B
+                                                                                V
 OOOOOOOOOOOOOOOOOOOOOX))= =OOOOOOOOMMZ)- --     ---  - -   -- --- )XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX-- --    OO--=OOOOOOOO
+X+++XXX+XX+XX+++++++-      -+++++++                                 ++XXXXX++++XXXXXXXX+XXXX+++--          -+   -XX+-+X-
+'''''''''''''''''''         ''''''                                  ''''''''''''''''''''''''''              '    ''' ''
+..................          .....                                    .......  ................                   ..  ..
+-===-H-=--=--=== =          ===                                       HHHHH=   HHHHHHHH=HHHH=                    -H  =-
+     C                                                                CBBBB    CCBBBCBC CCCC                      C
+                                                                        VV         V
 OOOOOOOOOOOOOOOOOOOOM1)=--1OOOOOOOOOMMZ==-- ---   -    -  - -- - -)MOOOOOOOO1=1OOOOOOOOOOOOOOOOOOOOA-      MOO- +OOOOOOO
+XXXXXXXXX++X+++++++=       -+X++++++                                ++XXXXX+   ++XXXXXXX++XXXXX+XX+         ++   +X+++X+
+'''''''''''''''''''         '''''''                                 ''''''''   ''''''''''''''''''''         ''   ''' '''
+.................           .......                                 ........    ...................         .    ... ...
+--H------==-==               -===                                   ==HHHHH=    =HHHHHH-==----H=--          =     H= =H
+  C                                                                   BBBBB      CBBBBC       C                   C   C
+                                                                         V
 OOOOOOOOOOOOOOOOOOOOMZ1+=--)MOOOOOOOOOMZ)=-----  - --  --   -- - --AOOOOOOOO= -)OOOOOOOOOOOOOOOOOOOO+  --  1OOO--MOOOOOO
+XXXXXXXX+X++++++++==         ++++++++-                              +XXXXXX+    -+XXXXXXX+XXXXX++XX+        XX=   ++++X+
+''''''''''''''''''           '''''''                                ''''''''     '''''''''''''''''''        ''    '' '''
+................             .......                                ........     ...................        ..    .. ...
+-HHH----=-=== =               =====                                  -HHHHH      =-HHHHH-=--HHH==-H=        --    == =-=
+ BBC                                                                  BBBBB        CCBBC    CCC   C
+                                                                        VV
 OOOOOOOOOOOOOOOOOOOOOMX)-- )MOOOOOOOOOOM1=---  -      - --        =MOOOOOOOO-   =ZOOOOOOOOOOOOOOOOOOO-     )OOOO-ZOOOOOO
+XXXXXXXXX+++++++++++-        ++XX++++--                             +XXXXXX+      +++XXXXXXXXXXX++XX+       +XX-  ++++XX
+''''''''''''''''''           ''''''''                               ''''''''       '''''''''''''''''        '''   '' '''
+................ .            .......                               ........       .................        ...   .. ...
+HHH--HH--=== =                =H-==                                  HHHHHH         =HHHHHHHHHH-= -H        =HH   ==  --
+CCC  CC                        C                                     CBBBBB          CBBBBBBBBC    B         BC
+                                                                                      V
 OOOOOOOOOOOOOOOOOOOOMAZ)=---XOOOOOOOOOOM+)+-   - - - -  --   --  --MOOOOOOOO-  -  =ZOOOOOOOOOOOOOOOOO= ---  OOOO1)OOOOOO
+XXXXXXX+++++++++++++         ++XXX++++=                             +XXXXXX+        ++XXXXXXXXXX+++++       +XX+  ++++XX
+'''''''''''''' ''''           ''''''''                              ''''''''         '''''''''''' '''       ''''  ''''''
+.............. ....           ........                              ........         ............ ...        ...  ..  ..
+HH--H--=== =                  =---==                                 ---HHH=         =HHHHHHHHHH= ===        -H=  ==  --
+CC  C                                                                   CBB           BBBBBBBBBC              B
+                                                                                       V
 OOOOOOOOOOOOOOOOOOOOOXZ)+--==XOOOOOOOOOMMZ+==-- ----      -   ----)OOOOOOOOO=  -11XZMOOOOOOOOOOOOOOOOA -    1OOOMZOOOOOO
+XXXXXX+++++X++++++++-         ++XX+++--                            +XXX+++XX         +XXXXXXXXXXX++++        +XX  +X++XX
+'''''''''''''''''''            ''''''                               ''''''''         ''''''''''''''''        '''  ''''''
+...................            ......                               ........         ............. ..        ...  ... ..
+H--H--=====-=====              =--==                                -H-=  -H          HHHHHHHHHHH=            H-   -  -H
+C  C                                                                 C     C          CBBBBBCCBBC             C        C
+                                                                                         V
 OOOOOOOOOOOOOOOOOOOOOAXZ)++)=XOOOOOOOOOMMZ)== - - --- -       ----1OOOOOA)OOM-+OOOOOOOOOOOOOOOOOOOOXMM-  -   1OOOAOOOOOO
+XXXXXXXXXXXXX+++++++=         =+XX++--=                            +XXX+  -+   -++++=+XXXXXXXXXXXX-           +++ +X+++X
+''''''''''''''''''''           '''''                               '''''   '    '''' '''''''''''''             '' ''''''
+...................            ....                                .....   .    ....  ............             .  ... ..
+H----------H-=====              --=                                 HHH=   =      =   -HHHHHHHHHHH                 -  =-
+C          C                                                        CBC                CBBBCCBBBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOAXZ1)=---   --  ---  -  -=MOOOOOO- XOMOOOOOOOOOOOOOOOOOOOOOA)1-        =AMOOOOOO
+XX+XXXXXXX+XX+++++++++++--  --+++X+++++=                           XXXXX-   + =++XXX++XXXXXXXXXXXX+               +++++X
+''''''''''''''''''''''        '''''  '                             '''''       ''''''''''''''''''''               ''' ''
+......................          ...                                .....        ...................               ... ..
+--=-------=--==== =              -=                                -HHH-        =---  -HHHHHHHHHHH=               ==  =-
+                                                                    CBB                CBCCCCCBBBC
+                                                                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZ1+--- -  -  - -- -  --OOOOOOO   ZOOOOOOOOOOOOOOOOOOOOOOO= =   -     -XOOOOOO
+XXX+XXXXXX++++++++++++++++++++++++++++++-                         =XXXXX+    +++++XX++XXXXXXXXXXXXX=              ++++++
+''''''''''''''''''''''''''''''''''''''''                           ''''''    ''''''''''''''''''''''               ''''''
+......................................                             ......    ... ..................               ... ..
+---=------============ == ==  == ==                                -HHHH         =HH= -HHHHH-HHHHH-                =  ==
+                                                                    BBBB          CC   CCCBC CCBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZ))-- -  -  -   -  --OOOOOOO- -ZOOOOOOOOOOOOOOOOOOOOOOOOMO+- --    -XOOOOOO
++XX+XXXX++XXXX++++++++++++++++++++++++++++=-                      -XXXXX+    +++++XX+++XXXXXXXXXXXX+- -           +X++++
+'''''''''''''''''''''''''''''''''''''''''                          ''''''    '''''''''''''''''''''''              ''' ''
+.........................................                          ......     ......................              ... ..
+=--=H---==----==  = ===  ========= = ==                            -HHHH         =--= =HHHHH-HHHHHH=               H= ==
+    C                                                               BBBB               CCCCC CCCCCC                C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMA1+=-    -  -    )OOOOOOO+--MOOOOOOOOOOOOOOOOOOOOOOOZ)M1  ----- +MOOOOOO
+XXXXX+XXXXXXX+++X+++X+XX++++++++X++++++++++++-                    =XXXXX+    ++++++X++XXXXXXXXXXXXX+              +X++++
+''''''''''''''''''''''''''''''''''''''''''''                       ''''''     ''''''''''''''''''''''              ''' ''
+............................................                       ......      . ...................              ... ..
+--HH-=----H--= =-===-=--========-========                          -HHHH=         =-= -HHHHHHH-H-HH=               H  =
+  CC      C                                                         BBBB               CCCBCBB C CC                C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA)--     - -   1OOOOOOOO)OOOOOOOOMMOOOOOOOOOOOOOOOO)XZ--  --  =MOOOOOO
+XXX+++++X++XXXXXXX++++X++++++++++++X++X+X+++++-=-                 -XXXXXX- -++++++=  +XXXXXXXX+++XXX-             +X++++
+''''''''''''''''''''''''''''''''''''''''''''''                     ''''''   ''''''   '''''''''''''''              '''''
+.............................................                      ......   .. .      ..............              ... .
+---=====-==-H-----====-==== =======-==-=- ==                       -HHHH-    =        -HHHHHH-= =-HH               H=
+            C                                                       CBCC               CBBCCB     CC               C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)-       - =--OOOOO1MOOOOOOOOO   ZOOOOOOOOOOOOOOOOO) -  --  =MOOOOOO
+XX+++XXX+XXXXXXXX+X+X++++++++++++X++XXXXXXXXX+++++-               -XXX+  =++XX+X+-    +XXXXXXX+++XXX+++           +X+++-
+''''''''''''''''''''''''''''''''''''''''''''''' '                  ''''   '''''''     ''''''''' ''''''            '''''
+...............................................                    ....    ......     ......... ......            ..  .
+H-===---=--------=-=-==== = =====-==---------==                    -HH     =--=H=     =HHHHHH-= =-H-==            =-
+C                                                                   BB         C       BBBBBC     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)---    ----+MOOOO  =OOOOOOO1   +OOOOOOOOOOOOOOOAA- -  =X-- 1OOOOOM
+X+X+XXXX+XXX+X+++++X++++++++++++++++++XX+XXXXXX++++-               +XX=   +XXXXXX     +XXXXX++++XXXX-             ++=++
+''''''''''''''''''''''''''''''''''''''''''''''''''                 '''    '''''''     ''''''''''''''              ''  '
+..................................................                 ...    .......     ..............               .  .
+-=-=----=-HH=-=====-== =  ===  =======--=---H--=                    HH     HHHHH-     =HHHH-== =-HH-
+          CC                                C                       CC     CCCCB       CCCC      CB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+-- -      ZOOOOO  =OOOOOOO=   -OOOOOOM1OOOOOOO=- --ZMOOO)- =1ZOOA
+++++XXXXXXXXX+X++++++++++++++++++++++++++XXXXXXX++++-             +++++   +XXXXXX     ++X+++  =XXXXX=       =++      ==
+''''''''''''''''''''''''''''''''''''''''''''''''''''               '''    '''''''     ''''''   '''''         ''
+...................................................                ...    .......     ......   .....         ..
+====----H----=-==== = =    == ==   =  ===----H--=                   ==     HHHHH-      =-==    -HHH-
+        C                                    C                             CBBBB                CBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)-      - )OOOOO  )OOOOOOO=   -OOOOOO)+OOOOOOOM= =OOOOOOO--- +OXZ
+++++XXXXXXX+++++++++++++++++++++++++++++++++XXXXXX+++-            =++++   +XXXXX+     =+++++  +XXXXXX    -+XXXX+     -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''              '''    '''''''      '''''   ''''''     ''''''
+.....................................................               ..    .......      ....    ......     .....
+====--H----=====  === = = =    = =    = ====-HHH--==                ==    =HHHHH=      =       -HHHH-      --HH
+      C                                      CCC                           CCBBB                CCCC         CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-- -    -ZAOOOO  ZOOOOOOO-  -1OOOO1=+MOOOOOOOOM=AOOOOOOOZ  -)OMM
+++X+XXXXXX++X+++++++++++++++++++++++++++++++XXXXXXX+++=            -+++   +XXXXX+     -+--    +XXXXXX+   +XXXXX+     -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''              ''    '''''''             ''''''''   '''''''
+......................... ...   .  ...................              ..    .......             ........   .......
+ =-=-HH---==-======== =                 = ==----HHH==               ==    =HHHHH=             =--H-H-    =HHHH-=
+     CC                                         CCC                        CCBBB                 C C      CBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)--      =A1OOO- XOOOOOOO+  =OOOO+--ZOOOOOOOO=-)OOOOOOOOO  -MOOO
++XX+XXXXX++++++++++++++++++++++++++++++++++++++XXXXX+++=            +++   +XXXXXX    -+++    +XXXXXX=   +XXXXX++-    +++
+'''''''''''''''''''''''''''''''''  ''''''''''''''''''''              '    '''''''     '''    '''''''     '''''''     '''
+..............................     .  .................              .    .......     ..     .......     .......     .
+=--=-----======== == =  =                ======-H-H-==               =    =HHHHH-      =      HHHHHH     -HHH-==
+                                                C C                        CCBCB              CBBBCC      BBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOO+--      =1ZOO= XOOOOOOOA  )OOOOX-)OOOOOOOOO- +OOOOOOOOO= -1OOO
+++XX+XXXX+++++X++++++++++++++++++ -+++==+++++++++XXXX+++-            ++   +XXXXXX    +XXX   +XXXXXXX-   +XXXXXX++    =++
+'''''''''''''''''''''''''''''''         ''''''''''''''''             '    '''''''     '''    '''''''    '''''''''     ''
+.............................           ...............                   .......     ...    .......    ........
+==--=HH--=====-==== =                    = === ==-HH-=                    =HHHHH-     -H-    -HHHHHH     HHHHH-=
+     CC                                           CC                       CCBCC       C      CCBCCC     CCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=--    - +1OO1 ZOOOOOOOO==MOOOOO=1OOOOOOOOO=-ZOOOOOOOOO+ --=+=
+++XXXXXXX++X+++++++++++++++++++++=-=====+++++++XX+XXX++++            -+   +XXXXXX+   +XXX-  +XXXXXX++   +XXXXXXX+
+'''''''''''''''''''''''''''''''         '''''''''''''''''             '   '''''''    ''''   '''''''''   '''''''''
+..............................            ...............             .   .......    ....   .........   .........
+==-------==-== ====  =                     ====--=--H===                  =HHHHHH     -H-   =-HHHHH=    =HHHHH--
+                                                    C                      CBBCBC      C      CBCCC      BBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOOOOOOOOOOOOOOOOOO+-- - -  -)MOO)1OOOOOOOOMXOOOOO+ XOOOOOOOO-  MOOOOOOOOO+=1X+-
+++XXXX+XX++++++++++++++++++++++++== --= -+++++++XXX+XX+X++            -+  +XXXXXXX  -+XX+   +XXXXXX-    +XXXXX+++
+'''''''''''''''''''''''''''''''           ''''''''''''''''                ''''''''   ''''   '''''''     '''''''''
+............................ .             ..............                 ........   ....   .......     .........
+==----=--===== ==== == =                      ==---=--=-=                 =HHHHH--    -H=   =H--HH-     =HH---==
+                                                                           CCBBB       C     C  BB       CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMMMOOOOOOOOOOOOOOOOOOX=      --)OMOO=XOOOOOMX)+OOOOO- 1OOOOOOOM   MOOOOOOOOOZ=OOOM)
+XXXXXXXX++X+++++++++++++++++++++++ -    --++++++++XXXXX+X+           - +-  +XX++    -XXX=   +XXXXXX     XXXXXXXX+  -++
+'''''''''''''''''''''''''''''''' '          ''''''''''''''             '   '''''     '''    '''''''     '''''''''   '
+...............................             .............                  ....      ...    .......     .........
+----H---==-===========                         ===--H--=-                  =-H=      -HH    =HHHH--     -HHHHH--
+    C                                               C                        C        BB     CBBC        BBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAXMMOOOOOOOOOOOOOOOM+-      --MXOOO-+MOO)--- MOOOO==OOOOOOOOO-  MOOOOOOOOO)))++--
+X+XXXXXXXX++++++++++++++++++++++++=-       ==+++++XXXX+X++             ++-   +=      XXX+  =XXXXX++=    XXXXXX+++
+'''''''''''''''''''''''''''''''''            '''''''''''''                   '       '''    '''''''     ''''''''
+................................              ............                           ...    .......     ........
+-=--H-----==========                            ==----=-==                           -HH    --HHH=      -HHHH-=
+    C                                                                                 CC      CCC        CBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXAOOOOOOOOOOOOOOOOOO)=- -    -Z)OOOM- -+--  -OOOOOOOOOOOOOO1=- -OOOOOOOOOXZMM1---
+XXXXXXXXX+XXX++++++++++++++++++++++--    ---==++++++XXXX++-            +++          +XXXX+=+XX++++     =XXXXXXX+
+'''''''''''''''''''''''''''''''''             ''''''''''''             ' '          '''''  '''''''      ''''''''
+................................               ...........               .           ....  .......      .......
+-H-------=---==== == ==      =                   ===--HH==               =           -HH-  =--===       HHHHHH-
+ C                                                    CC                              BC                CBBBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMXAMMMMOOOOOOOOOOOOOOM+  -    +=)OOOOO       ZOOOOOOOOOOOOOOZ- -)OOOOOOOOOZOOOOXZO
+XXXXXXXXXX+XXX+++++++++++++++++++++- -       -=+++++XXXXXX+            ++++=        +XXXX+++XXX+=+     +XXXXXXX+ -++=  -
+'''''''''''''''''''''''''''''''''               '''''''''''              ''         '''''''''''' '     '''''''''  ''
+................................                ...........              ..         ............ .     .........  ..
+--H-------=---========= =                         ==--H---               ==         =HHH-===---=       =HHHHHH-
+  C                                                   C                              CBB                CBCBCC
+                                                                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOAAMMMMAOOOOOOOOOOOOOOX=-     =Z)OOOOOO1- - -OOOOOOOOOOOOOM)Z--MOOOOOOOOOO1XZ)--+O
+XXXXXX++XXX++X+++++++++++++++++++++=  -       -=++++XXXXXX++           ++++X+      -+XXX++++++++      +XXXXXXXX=       -
+'''''''''''''''''''''''''''' ''''               ''''''''''''           ''''''       ''''''''''''      '''''''''
+...........................  ...                 ..........             .....       .....  .....      .........
+------==---==-=====            =                   =-HH---               ==H        =-HH=    ===       -HHHHHH-
+                                                     CC                    C          CC                BBBBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAXAMOAMAMOOOOOOOOOOOOOO)-      M+OOOOOOOOOAAOOOOOOOOOOOOOOO   ZOOOOOOOOOOZ---   -1
+XXXX+XXXXXXX+++++++++++++++++++++++=      -    -+++++XXXX++++          -+++XXX+-  -+++++++++++++=    +XXXXXXXX+
+''''''''''''''''''''''''''''''''                 '''''''''''            '''''''    ''''''''''' '     ''''''''''
+...........................  ..                   ..........            ......     ...... ..   .     ..........
+----=-------=============                          ==-HH-==              ==HH-      ====              HHHHHHHH=
+                                                      CC                   CB                         CCCBBBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXZAAMMOMOOOOOOOOOOOOOM-     -=++OOOOOOOOOOOOOOOOOOOAXOOXX1  MOOOOOOOOOOZ----   =
+XXXXXXX+XXXX+++++++++++++++++++++++=--        - -=+++XXXXX+++           =++==+++++XXXX++++=  ++      +++XXXXXX+
+'''''''''''''''''''''''''''''''''                 '''''''''''            '   '''''''''''''           ''''''''''
+...............................                   ...........            .    ...........            ..........
+-------=----===========                            ==HHHH-                    ====----==             = =-H--HH=
+                                                     CCCC                                                C  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXX1)ZXZXXMOOOOOOOOOOOOO+       --1OX  -ZOOOOOOOOOOOO   -=  -+OO+ZOO+)OOO)-      -
+X+XX++++XX+XX++++++++++++++++++++++=-            ++++XXXXX+++=           +     +XXXXXXXXXX+         =-  ++  -++
+''''''''''''''''''''''''''''''''''                '''''''''''            '     ''''''''''''             '    ''
+.................................                  ..........            .     ............             .    ..
+-=--====--=--========= =    =                       =-HHH-                      HHHHHHHHHH
+                                                      CCC                       CCBBCBCCBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXAZX1))11OOOOOOOOOOOOOZ-  -     +OO- -AOOOOOOOOOOOOA-  -   1O+ 1OA  1OM- ---   -
+X+X+XXXX+XX++++++++++++++++++++++++=--           -+++XXXXX++++           ++    +XXXXXXXXXXX         -   +    +
+''''''''''''''''''''''''''''''''''                 '''''''''''           ''    ''''''''''''             '    '
+...........................  .....                 ..........            .     ............             .
+-=-=----=--=========   ===                         ==-H-H- ==                   HHHHHHHHHHH
+                                                      C C                       CCBBCCBBBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXAAM1111XOOOOOOOOOOOOOA=       -=OO1-+OOOOOOOOOOOOOOM)-)= +OM--AO+  1M) ---
+XXXXX++++++X+++++++++++++++++++++++++---         -+++XXXXX++++           ++   -+XXXXXXXXXXX+       -    +
+''''''''''''''''''''''''''''''''''                ''''''''''''            '    '''''''''''''            '
+................................ .                 ...........            .    .............
+-----======-======= ==    = =                       =-HH--==                   =HHHHHHHHHHH=
+                                                      CC                        CBCBCCBCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAAMA1)Z1ZOOOOOOOOOOOOOO=-   -   =MOZ-1OOOOOOOOOOOOOOO+=1)+AOO--OO= -1)- -- -  -+
+X+XX++++++X+++++++++++++++++++++++++-            -+++XXXXXX+++-           +   =+XXXXXXXXXXXX+      +-  =+
+'''''''''''''''''''''''''''''''''' '               '''''''''''            '    ''''''''''''''      '
+.................................                  ...........                 ..............      .
+-=--======-=========== =     ===                    =----H-=                   =-HHHHHHHHHHH
+                                                         C                       CCCCCCCBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOAXA)1+11MOOOOOOOOOOOOO=     -  =1OM=MOOOOOOOOOOOOOOO--+11OOO=)OO--)1==-=- -  ==
+XX+++XX+X+++++++++++++++++++++++++++=-  -         =+++X+XXXX++-           +   ++XXXXXXXXXXXX+     -++  ++
+'''''''''''''''''''''''''''''''' ' '               '''''''''''            '   ''''''''''''''       '   '
+................................ .                 ...........                ..............       .   .
+--===--=-========  =                                 =-=----=                  =HHHHHHHHHHHH       =
+                                                                                CBBBCBCBCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMXMXZZ1)+1ZMOOOOOOOOOOOOO+-       ==MZ1OOOOOOOOOOOOOOOO1)OO+)OO=1OOZ)M1))++=---  -
++X+X+XXXX+++++++++++++++++++++++++== -            ++++XXXXXX++-              -++XXXXXXXXXXXX+  +=  +=  ++
+''''''''''''''''''''''''''''''''''                 '''''''''''                '''''''''''''''      '   ''
+.................................                  ...........                 ..............      .   .
+=-=-=----==========  =      ==                       =----H-=                  =-HHHHHHHHHHH=
+                                                          C                      CBBCCBCCBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMZZZ++++1MOOOOOOOOOOOOO1-     --- =+ZOOOOOOOOOOOOOOOO- AM- MO+ZOOOMOA111++)==- +
+X+++X++X+++++++++++++++++++++++++++==-            -++++XXXXX++=              -++XXXXXXXXXXXX+       +  ++- -
+''''''''''''''''''''''''''''''''''                  ''''''''''                '''''''''''''''          ''
+................................                    ..........                ...............          ..
+-===-==-=========      ==                           ===-HH--=                 ==-HHHHHHHHHHH
+                                                        CC                       CCCCCCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZ1)=++)XMOOOOOOOOOOOOX- ---  - --)XMOOOOOOOOOOOOOOO)-1=  )OXAOOOOOMXX1)))+==-Z
+XX++XX++++++++++++++++++++++++++++++----           +++XXXXXX++-               +XXXXXXXXXXXXX+       -  ++++=
+'''''''''''''''''''''''''''''''''''                '''''''''''                '''''''''''''''          '' '
+................................ .                  ..........                ...............          .  .
+--==--=========== =    ==    = =                     =-HHHH-=                  --HHHHHHHHHHH=
+                                                       CCCC                      CCCBCBCBCBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)=+--=+)XOOOOOOOOOOOOX----  ---  )OZXOOOOOOOOOOOOOOO-1-  -ZOOOOOOOAMMX1)))1))O
+XXXXXXXX+++++++X+++++++++++++++++++=----           =+++XXXXX++=             -  ++XXXXXXXXXXXX=       -+++++=           -
+'''''''''''''''''''''''' '''' ' ' '                 ''''''''''                 ''''''''''''''          ''''
+.................... ..                             ..........                 ..............          . ..
+HHHH----=======-=                                    ==-HH--=                   =HHHHHHHHHHHH             =
+CCCC                                                    CC                       CCBCCCCCBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAXZ+=---=+XOOOOOOOOOOOOM=  -   -- --AOMOOOOOOOOOOOOOOOX1-  -ZMOOOOOOOMOMZ111ZZZO
+XXXXXXXXX++X++++++++++++++++++++++++=--            =+++XXXX+X++              - -++++++XXXXXXX+        ++++++- -        =
+''''''''''''''''''''''''''''''' '''                 '''''''''''                 ''''''''''''''           ''
+......................    ..      .                 ...........                 ..............           ..
+-HHHHHHH-==-=== =====                                ==HH--=-=                   =====HHHHHHH=            =
+ CCCBCCC                                               CC                             CCCBBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAX1+=- --=XOOOOOOOOOOOOM)     -- --=ZOOOOOOM)ZOOOOOOOOOX-  +MOOOOOO)+)MMZ1ZZAXZO
+X++XXXXXXXXX+++++++++++++++++++++++++=--           -++XXXXXX+++              ++-+++   +XXXXXXX+      -==++-            =
+''''''''''''''''''''''''  '' '  '''                 '''''''''''              '' '''    ''''''''          '
+.......................                              ..........                 ...    .......
+-==-HHHHHH--==== =  =                                 -HH---==                   =     -HHHHHH
+    CCCCCC                                             CC                               CBBBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOM1+------1MOOOOOOOOOOOO)-       1++XOOAOOO   -OOOOOOOOA) -ZOOOOOO-   -ZXMAXX11O
++X+X+XXXXXXXX+++++++++++++++++++++++=+= -           ++XXXXXX+++-             ++ +++    +XXXXXXX     +++++=             +
+''''''''''''''''''''''''''''''' '                   '''''''''''               '  ''    ''''''''      ''''
+.........................                            ..........               .  .     ........      ....
+=-=-=HHHHHH--=======                                 =-H-H--                            -HHHHH-       ==
+     CCBCCC                                            C C                               BBBCB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1Z==----1OOOOOOOOOOOOO)-   - --MAZOMOXOOX-   MOOOOOOOO+=+OOOOOOX     =XMOX==)O
+++++++XXXXXXXXXX+++++++++++++++++++++=--           -++XXXXXX+++-            - + ++      +XXXXXX=   ++++++         -    -
+''''''''''''''''''''''''''''''  ' '                  ''''''''''                 ''      '''''''    ''''''
+.........................         .                  ..........                 ..      .......     .....
+======--H-H-----=== =                                =--H--H==                   =      =HHHHHH     =====
+        C C                                             C  C                             CCCCBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZX)=-----=MOOOOOOOOOOOO)      --ZOAAZ)AOOM-   AOOOOOOOO+=MOOOOOOA      )MMX)+)M
++XXX++XXXXXXXXXXXX++++++++++++++++++++=-            ++XXXXXXX+++          -     +X      +XXXXXX+   +XXXX+
+'''''''''''''''''''''''''''' ' ''  ' '               ''''''''''                 ''      ''''''''   ''''''
+............................    .                    ..........                 ..      ........   ......
+=---==---HHHHH----==   =                             =HH-HH--=                  =H      =HHHHHH=    --H-=
+         CCCBC                                        CC CC                      C       CCBCCC       C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOAA)==----=1OOOOOOOOOOOOZ-     -=+MAM)-1OOO-   ZOOOOOOOOM-+OOOOOO1-     )OOM)+)X
+XXXXXXXXXXXXXXXXXX+++++++++++++++++++=- -           =XXXXXXXX+++                +X-     +XXXXXXX   +XXXX+        --
+'''''''''''''''''''''''''''''''''''''                ''''''''''                 ''      ''''''''   ''''''
+.............................  .   .                 ..........                 ..      ........    .....
+--H--H-H--H--H----======  =                          -HH--HH-=                  =-      =--H-HH-    -HHH=
+  C  C C  C  C                                        CC  CC                               C CC      BBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMX1)=-- -=OOOOOOOOOOOOZ--    +++OAO- +OOOMO+ 1OOOOOOOOO)=OOOOOOX    - )OOOZ+)1
+XXXXXXXXXXXXXXXXXXX+++++++++++++++++++- -           =+XXXXXXXX++          - -   +++ -   +XXXXXXX+  -XXXXX        -=-
+'''''''''''''''''''''''''''''''''''''                '''''''''''                '''     '''''''''   '''''
+.............................  .....                 ..........                 ...     .........   .....
+HHHH-HHH-H----HH---=== === =                         =HH-HHHH-=                  =      =HHHHHHH=   -HHH-
+CCCC CCC C    CC                                      CB CCCC                            CBCCBBB     BBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMM1)=---=OOOOOOOOOOOOX-     =)+XMO-  OOOOOO-XOOOOOOOOOO=)OOOOOM-  -1+ZOOOO)=+
+XXXXXXXXXXXXXXXXXXX+++++++++++++++++++---           -XXXXXXXXX++            -   ++++X=  XXXXXXXXX+  +XXXX        =++-
+''''''''''''''''''''''''''''''''''''''               '''''''''''                '''''   '''''''''   '''''
+....................................                 ...........                .....   .........   .....
+HHHHHHHHHHHHHHHHHHH==== ===                          -HHH-H-H-=                 ====-   -HHHHHHHH   =HHH-
+CCCCBBCCBBCCCCCCCCC                                   BCC C C                            CBCCCBBC    CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZ1+==+MOOOOOOOOOOOX--    -A))AA---OOOOOO)OOOOOOOOOOOM)OOOOOO=--ZOXZOOOM)=-
+XXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++==-----         +XXXXXXX+++                +X++X+ -XXXXXXXXXX  +XXXX+    -  -++
+''''''''''''''''''''''''''''''''''''                 '''''''''''                '' '''  ''''''''''  ''''''        ''
+....................................                 ...........                .. ...  ..........   ....
+HHHHHHHHHHHHH----H----=- ==== =                       HHHH--H=                   - =H   -HHHHHHHH-   -HHH
+BBBBBBBBBBCCC    C                                    CCCC  C                       C    CBCBCBCC     CCC
+   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXXMOOOOOOOOOOOX-     -M1=AO=--MOOOOOOOOOOOOOOOOOOOOOOOOOO1)OOZZOOOOX==
+XXXXXXXXXXXXXXXXXXX+XXX++++++++++++++=-=+=+++==---   +XXXXXXXX++            -    +++++-+XXXXXXXXXX+-+XXXXX-  -+  -+++
+''''''''''''''''''''''''''''''''''''                 '''''''''''                 ''''' '''''''''''' ''''''        ''
+..................................                   ...........                 .....  ........... ......
+HHHHHHHHHHHHHH-----=---====   =                       -HHHH-H-=                  =  ==  -HHHHHHH--  =HHHH-
+BBBBBBCCBBCBBC                                         CCCC C                            CCCBCCC     CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZOOOOOOOOOOOA--     ZX)+MX +XOOZ11ZOOOOOOOOOOOOOOOOOOOOOOOO1MOOOOO1-
+XXXXXXXXXXXXXXXXXXXX+X++X++++++++++===++++++++++++   +XXXXXXX+++                 ++    ++XXXXXXX++++XXXXXX++++-  -+++=
+'''''''''''''''''''''''''''''''''''      ''''''''    '''''''''''                 ''     ''''''''''''''''''''''     ''
+..................................       ........     .........                  .      .................... .
+HHHHHHHHHHHHHHH-----=-==-===  =               ==      --HHHHH==                         =HHHHHHH= ==-HHHHH=
+CCBCBCBCCCCBBCC                                         CCCCC                            CBBCBCC     BBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-=OOOOOOOOOOOM--     1OZ-AO--)OA+ =)OOOOOOOOOOOMOOOOOOOOOOOZ-XOOOOOOX
+XXXXXXXXXXXXXXXXXXXXXXXXX+++++++++===++++++XXXX++-   +XXXXXXXX++         +   =   -     ++XXXXXXX++ +XXXXX+++++   =++++=
+''''''''''''''''''''''''''''''''''    '''''''''''    '''''''''''                        '''''''''   ''''''''''    ' ''
+.................................     ...........    ..........                         .........   .........        .
+HHHHHHHHHHHHHHH-HHH------=== =         ====----=      HHH--HH-=                         =HHHHHHH=   -HHH-==
+BBBBBBBCBCCBBBB CCC                                   CBB  CC                            CCBBCCC     BBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+-)OOOOOOOOOOOX-   -  +OO)1O--+MM) -1OOOOOOOOOOOX=MOOOOMX111= 1OOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+XX+++++++++==+++++XXX+X+++    +XXXXXXXX++         -+  +         ++XXXXXXX++   ++++        =++++++
+'''''''''''''''''''''''''''''''''    '''''''''''     '''''''''''          '             ''''''''''   ''''         '' '''
+................................     ...........     ..........                         ..........   ...             ...
+HHHHHH-H-HHHHHH--H----=--== = =       ===---=-==     =HHH-H-H-=                         =-HHHHHH=     ==             ==
+BBBCCC C CBCCCB  C                                    CCC C C                             CBBCBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)+OOOOOOOOOOOOA=--     OOX)OM=-)+- -1OOOOOOOOOOOO+-1OOA+---- -=MOOOOOO
+XXXXXX++++XXXXXXXXXXXXXXX++++++=--=+++XXXXXXXXX++-  -+XXXXXXX+++         -+  -         +XXXXXXXXXX+   -=          ++++X+
+'''''''''''''''''''''''''''''''     '''''''''''''    '''''''''''          '            ''''''''''''               ' ''''
+..............................      .............    ...........                       ............               .  ...
+HHHHH-=== -HHHHHHH-H-----===          -H-------=     =HHH-H--==                         --HHHHHHHH                   =-=
+BBBBB      CCCCCCC C                   C              CCC C                               BBBBBBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXOOOOOOOOOOOOOOOOOMAOOOOOOOOOOOOM=-    --ZOM+AOO1+--  =OOOOOOOOOOOOO=- -=-   ---=AOOOOO=
+XXXXX++++++XXXXXXXXXXXX++++++=   =++XXXXXXXXXXXX++  +XXXXXXXXX++          +   +-       =+XXXXXXXXXX+              ++++-
+'''''''''''''''''''''''''''''     '''''''''''''''   ''''''''''''          '   '         ''''''''''''               '''
+............................      ...............   ............          .   .         ...........                ...
+HHHHH=== ==-HHHHHHHH-H-===         =--HHHHHHHH--     --HHHHH--                          =--HHHHHHHH
+BBBBC       CBCCCCCC C                BBBCBBCC         CCCCC                               CCCBBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOO)+)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)      --OO11OOOMM   -AOOOOOOOOOOOOO-       --+ZMOOOO+-
+XXXX++++++XXXXXXXXXXXXXX++++-   -+XXXXXXXXXXXXXXX+++XXXXXXXXX+++-         ++  +++       ++++XXXXXXXX+             -+++
+''''''''''''''''''''''''''''     ''''''''''''''''' '''''''''''''           '  '''       '' ''''''''''              '''
+............................     ................. .............           .  ...          ..........               ..
+HHH-== ===-H-HHHHHHH----===      =-HHHHHHHHHHHHH-   -HHHH-HHH==                ==          =HHHHHHHH                =
+CCC        C CCCCCCC               CBCBBBCBBBCCC     CCCC CCC                               CCBCBBBB
+                                                                                                  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOA==OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-     --MOM1OOOOOM- )ZZ-)OOOOOOOOOOO1-  -1MZ+11++MOO+
+XXX+++++++XXXXXXXXXXXXX++X++   =XXXXXXXXX+XXXXXXX+XXXXXXXXXXXX++-          +  -++-+        =+XXXXXXXX+              ++
+'''''''''''''''''''''''''''     ''''''''''''''''''''''''''''''''               '' '         ''''''''''              ''
+...........................     ................................               .. .         ..........              ..
+---=======---H-H-HH----==-=     -HHHHHHHH=--HHHHH=-HHHH---HH--=                ==           =HHHHHHHH=              ==
+             C C CC              CCBCBCBC   BCBBC  CCCC   CC                                 CBBBBBBB
+                                                                                                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOO)-1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-  -  --ZMM=1OOZ+)=-1A+ -AOOOOOOOOOOOOMOOOOMXA)  -OO1-
+XXXX+++XXXXXXXXXXXXXXXX+XX+=   +XXXXXXXX+=+++XXXXXXXXXXXXXXXXX++-              ++           ++XXXXXXXXX+ -+++       -+
+'''''''''''''''''''''''''''    '''''''''' ' ''''''''''''''''''''               ''           '''''''''''    ''        '
+...........................    ..........   ....................                .            ..........    ..        .
+-HH-===----------HH----=--=    =-HHHHHHH=   =HHHHHHHHHH--HHHH-=                              =-HHHHHHH-
+ CC              CC              BCBBBBC     CBBCCCBCCC  CBCC                                  CCCCCBC
+                                    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOM=-OOOOOOOOOOOOOZOOOOOOOOOOOOOOOOOOOOO1--      +)1-)OO=   -1O= -1MOOOOOOOOOOMAMOOOOOO+  -)O1=
+XXXXXXXXXXXXXX+XXXXXXX++X++   +XXXXXXXXXX+- ++XXXXXXXXXXXXXXXX+++              -=      -     =+++++=+++   +X++--     =
+'''''''''''''''''''''''''''    '''''''''''  ''''''''''''''''''''                              ''''' '''   '''
+...........................    ..........    ...................                               ...  ..    ...
+HH-H---H------=HHHHH--==-==    --HHHHHHH-    =-HHHHHHHHHHHHHH-==                                     =    =H=
+CC C   C       CCCCC             CCCBBBB       CCCBCCCCCCCCCC                                              C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOM--OOOOOOOOOOOOMZOOOOOOOOOOOOOOOOOOOOO1--     - -- +OO=    )O+--+=--ZAX11MO1=-+OOOOOOXZZXAM-+
+XXXX+X+XXXXXXX+XXXXXXXX+X++   +XXXXXXXXX+=  -++XXXXXXXXXXXXXXX+++              +-      +             +    +++++=
+'''''''''''''''''''''''''''   '''''''''''    '''''''''''''''''''               '                     '     ''''
+...........................   ...........    ...................               .                           ....
+----=-=-------=--------=-=     HHHHHHHHH=    ==-HHHHH-----HHH-==                                           ==
+                               CCCCCCCCC        CCCCC     CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOO--OOOOOOOOOOOOX)OOOOOOOOOOOOOOOOOOOOOA- -       -=-OO+    +OX ---- =))+=OOA=-)MOOOOOMOOOOOZZ
+XX++X++X++XX+X+XXXXXXXX++++-  +XXXXXXXX++-  -++XXXXXXXXXXXXXXX+++              ++      +            -+     ++X++ +++++
+'''''''''''''''''''''''''''   ''''''''''     ''''''''''''''''''''              ''                    '     ''''' ''''
+...........................   ..........     ....................              ..                    .     .....  ...
+--==-==-==--=-=--------===     -HHH-H--=      =-HHHHHH-H--H---==               =                            =-==  ==
+                                CCC C           CCCCCC C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOO+-OOOOOOOOOOOO1)MOOOOOOOOOOOOOOOOOOOOM+--     ---)1OO=  - -OO+----=+1Z1=AOO+=ZOOOOOOOMOOOOZM
+XXX+X+X++XX+XXXXX++XXXXX+X+=  =+XXXXX++++-   ++XXXXXXXXXXXXXXXX++              ==      +-            +-   -+++++- ++++
+'''''''''''''''''''''''''''    '''''''''     ''''''''''''''''''''                                    '      ''''  ''''
+...........................    .........     ....................                                    .      ....   ...
+---=-=-==--=-----==-----=-=    =-----=        =-HHHHHH-HHH-H---=                                              =    ==
+                                                CCBBCC CCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOO)-OOOOOOOOOOOOX1OOOOOOOOOOOOOOOOOOOOOM)---      -ZMM1  -   OOZ=--)ZMOOMZZOOZ)OOOOOOOO==ZOOMO
++XXX+XXX++X++XXXXXXX++XXXX++  -+XXXX+++++=  =+XXXXXXXXXXXXXXXX+++                      -+       --   ++  -=-=-++-   ++ -
+''''''''''''''''''''''''''''   ''''''''''    ''''''''''''''''''''                       '                     ''    ''
+...........................    ..........    ....................                                             ..    ..
+=---=---==-==-------==----     =----===      =--HHHHHHHHHHHHH-===
+                                                BCCCBCCCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOO+-XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-        =OOM=  ==  ZOO)-+ZOMA1+)ZMOOOOOOOOOOO- =OOXM
+++++++++++XX+XX+XXXX+XX+X+++   ++++X++X++++=+++XXXXXXXXXXXXXXX+++-           --         +=    -       +--++++-+++   ++
+''''''''''''''''''''''''''''   ''''''''''''  ''''''''''''''''''''                       '                '''  '''    '
+............................   ............  ....................                       .                ...  ...    .
+= ========--=--=----=--=-==     ===-==-= =    =-HHHHHH---HH-H-===                                              =
+                                                CCCCCC   CC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOO)-=OOOOOOOOOOOOAXOOOOOOOOOOOOOOOOOOOOO1--  -  ---MOM+-=))- XOOA+ZMZ=    -ZOOOOOOOOOOO1 -OOX-
+++X+X+++++X++XXX++XX+XX+X+++   -+++XX++++=-  +++XXXXXXXXXXXXXXX+++            +         ++            +++++++++X+   ++
+''''''''''''''''''''''''''''    '''''''''     '''''''''''''''''''                       ''              '''''''''    '
+...........................     ........      ...................                       ..               ........    .
+==-=-=====-==---==--=--=-=       ==--==       ==HHHHHHH--HH--H-==                                             =-=    =
+                                                CCCCCCC  CC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOO)--AOOOOOOOOOMX1ZOOOOOOOOOOOOOOOOOOOOOA-       =-ZMOAZZZZ- =OOOAOX------ -XOOOOOOOOOOO-)OOM-
++++++++++++XXX+++++XX+++X+++    -++++++++    -+XXXXXXXXXXXXXXXXX++             +        ++= -          +++++++XX+-  +X
+'''''''''''''''''''''''''''      '''''''      ''''''''''''''''''''                      ''              '''''''''   ''
+...........................       ......      ...................                       ..              .........   ..
+====  = ===---=====--===-=         ==          -HHHHHHHHHHH-----                         =               == ==H-=    -
+                                                CCBBBBCCCCC                                                   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOO) -1ZMOOOOOOOA1)1AOOOOOOOOOOOOOOOOOOOOO+--    -=-ZZOOOOOO)  MOOOA=-+1XZ1--=AOOOOOOOOOO-)OOO+
+++++++++++X+++++X++++++++++=      ++++++=     ++XXXXXXXXXXXXXXX+++-            ==----    +=-            +++++XXXX-  +X+
+'''''''''''''''''''''''''''         ''''      ''''''''''''''''''''                       '              '''''''''   ''
+...........................                    ...................                       .               ........    .
+======= ==-=====-=========                     =HHHHHHHHHHH-H--==                        =                ===-H--    -
+                                                CCCCBBCCCCC C                                                 C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOO1--+11MMOOOMX1+++XOOOOOOOOOOOOOOOOOOOOO+- --     XMMOOOOOM=--XOM- +ZMMAAX=-+MOOOOOOOO)-1OOOZ
++++++++++++X+X++X+X++++X++++        ---       ++XXXXXXXXXXXXXXX+++-             -+++=     =              ++X++X+-   ++-
+'''''''''''''''''''''''''''                    '''''''''''''''''''                                        ''''''    ''
+...........................                    ...................                                        ......     .
+=== =======-=-==-=-====-==                     =HHHHHHH-H-H----==                                         =-==H=     =
+                                                CCBCCCC C C                                                   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOZ--=++)1ZZXZZ)=++ZMOOOOOOOOOOOOOOOOOOOO+-       -)OXAOOOOOZ==ZX--=ZOOOOOX1))XZOOOOOO1=-AOOOO
++++++++++++++XXX+XX+++++++++                   +XXXXXXXXXXXXXXX+++-           -  +++++         -++=-      =+++++    ++--
+'''''''''''''''''''''''''''                    '''''''''''''''''''               '   '           '         '' ''    ''
+...........................                    ...................                                         .. ..    ..
+ =  =========---=--========                     HHHHHHHH-HH----==                                          =  =
+                                                CCBCCCCC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOZ--==)++))))))==+)AOOOOOOOOOOOOOOOOOOOO)--       =MOXOOOOOOMAM=--1OOOOOOOMZ1Z+1OOOOOOAMOOOOO
+X+++++++XX+XXXXX+XX+XXX++++=                   +XXXXXXXXXXXXXXX+++-            + =+++++       -++X+++      ++--+=  +X+++
+'''''''''''''''''''''''''''                    '''''''''''''''''''                ''''         '''''        '  '   '''''
+...........................                    ...................                ....         .....           .   ....
+-=======--=-----=--=---====                     HHHHHHHHH-HH---==                               =-==                -
+                                                CBCCCCCCC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOZ---++++=+++==-===ZOOOOOOOOOOOOOOOOOOOM1-- -   ---+OOAOOOOOOOX- 1OOOOOOOOOX1A1)))ZOOOOOOOOOO
+++++++++X+++XXXXXXXXXXXX++++                   +XXXXXXXXXXXXXXXX++             ++ +++++==    -+XXXXX++        =+++++X+++
+'''''''''''''''''''''''''''                    '''''''''''''''''''                 ''''       '''''''          '''''''''
+...........................                    ...................                 ....       .......          .........
+========-===------------===                    =HHHHHHHHHHH-----=                  ==          -HHHH=             ==-= =
+                                                CBCBCCBCCCC                                     BBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOX)--=====-=---==--ZOOOOOOOOOOOOOOOOOOOM)- -----     =--OOOOOO= )OOOOOOOOOOX1+Z1-  +OOOOOOOOO
++++++++X+XXXX+XXXX+++++++++=                   +XXXXXXXXXXXX+XX+++                 ++++++   -+XXXXXXX+         ++++XX+++
+'''''''''''''''''''''''''''                    '''''''''''''''''''                 ''''      '''''''''          ''''''''
+...........................                    ...................                  ...      .........          ........
+=======-=----=----========                     =---HHHH--H--=--= =                  =         -HHHHHH             =H-  =
+                                                   CCCC  C                                     CBBCBB              C
+                                                                                                 V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOM1=--1)++===-----=MOOOOOOOOOOOOOOOOOOOO1--  -    -   -=AOOOOZ =MOOOOOOOOOOO+-=+- --)MOOOOOOO
+X++X+++XX+X+X++++X++X+++X+++                   +XXXXXXXXXX+XX+X+X++                 ++=+    +++XXXXXX+-          ++XX+++
+'''''''''''''''''''''''''''                    '''''''''''''''''''                  '        '''''''''            ''''''
+...........................                    ...................                  .        .........            ......
+-==-===--=-=-====-==-===-=                     =-HHHHH----=--=-=-=                            =HHHHHH=            =H-  =
+                                                 CCCCC                                         CCBCBB              B
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)--AZ1=-==--==-+OOOOOOOOOOOOOOOOOOOOO)---   - -AA)ZOOZMOA+- XOOOOOOOOOOOO11MOX1)))AOOOOOOO
+++X+X+XXXXXXXXXX+XXXX+++++++                  ++XXXXXXXXXX++++++++=              -=  -     ++++XXXXXXX+   -      +XXX+++
+'''''''''''''''''''''''''''                    '''''''''''''''''''                         '''''''''''           '''''''
+...........................                    ...................                          ..........            ......
+==-=-=---HH-----=----======                    =HHHHHHH---========                           ==-HHHHH-            -HH===
+         CC                                     CCCBCCC                                         CBBBB              CB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ-=MMX+)=-=-===1OOOOOOOOOOOOOOOOOOOOO1-    -   OOOOOOX==- -)OOOOOOOOOOOOOXOOOOOOOXAOOOOOOO
++X++X+XXXXXXX+X++XXX++XXX+++-                 +XXXXXXXXXXXX++++X+++          =+++++       ++++++XXXXXX+ -++++++  +XXX+++
+''''''''''''''''''''''''''''                  '''''''''''''''''''''           '' ''        ''''''''''''  '''''   '''''''
+............................                  ....................            .. ..        ............  ....    .......
+=-==-=-HHHHH-=-==---==---==                   =HHHHHHH-----====-==            =  =             =HHHHHH   ===      -HH
+       CCCCC                                   CCCBCCC                                          CBBBBB             BC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX-=OOOM))=-=-++MOOOOOOOOOOOOOOOOOOOOOX     -   MOOOOO) - -1OOOOOOOOOOOOOOMOOOOOOOMMOOOOOX+
++++++++XXXX+++X+++X++XX++X++=-   -==          +XXXXXXXXXXX+++++X+++           ++-++      ++++++XXXXXXX+ =++XXX+  +XXX+
+''''''''''''''''''''''''''''                  '''''''''''''''''''''           ''         ''''''''''''''  ''''''  '''''
+............................                  .....................           ..          .............  ......  .....
+=======--H-===-===-==--==-=                   =HHHHHHH----=====-  =           =                -HHHHHH=   =-H-    -HH
+         C                                     BCCCCCC                                          CBBCBB      C      CB
+                                                                                                    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-)OOOMZ)+=-=-)OOOOOOOOOOOOOOOOOOOOOOM--       1OM)=-   -MOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOM-
+++++X+XXXXXXXXX++X++X+X++XX+++   +++         =+XXXXXXXXXX++++++++++           -         ++X+++++XXXXXX+-=++++X+- ++XX+
+'''''''''''''''''''''''''''''     '           '''''''''''''''''''''                     '''''''''''''''  ''''''  '''''
+.............................                 ....................                       ..............  ......   ....
+====-=-H-H-H---==-==-=-==--==                 =H-HHHH-H--====== =                         -==   -HHHHH      =-=   =HH=
+       C C C                                   C CCCC C                                          BBCBC             BC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=MOOOOM1+=--=ZOOOOOOOOOOOOOOOOOOOOOOA-              - -AOOOOOOOOOOOOOOOOOOOO1MOOX=ZOOOOOO
+X++++XXXXXXXX+++X+X+X++X++++++   +++=        +XXXXXXXXXXX++++++++++                    +++XX++++XXXXXX+--+-  ++   +XXX+-
+''''''''''''''''''''''''''''''   '''         '''''''''''''''''''''                     ''''''''''''''''      ''   '''''
+..............................   ..          .....................                     ................      ..   .....
+-====---HH---===-=-=-==-=====                =HHHHHHH----========                        =--=  =-HHHHH=           =HH-=
+        CC                                    CCCCCCC                                            CBBBC             BB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1XOOOOOOZ)==-=MOOOOOOOOOOOOOOOOOOOOOOA-             -XOAMOOOOOOOOOOOOOOOOOOOM=)OOO)+OOOOOO
+X++++XXXXXXXXX+XXXXXXXXX+XX++   ++++=-       +XXXXXXXXX++++++++++++                 =  ++XXX++++XXXXXX+=-=   =+-  -+XXX+
+'''''''''''''''''''''''''''''   '''          ''''''''''''''''''''''                    ''''''''''''''''       '    '''''
+.............................   ...          .....................                     ................       .    .....
+-====----H-H--=--H--H---=--=     =           =-HHHH-H--===  == ==                      ==HHH=  =-HHHHH=            =HHH=
+         C C     C  C                          CBCC C                                    CBC     CBBBB              BCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOX1)-==OOOOOOOOOOOOOOOOOOOOOOOA--     -  -)MOOOOOMOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOO
+++++++++X++XXXXXXXX++XXX++++- -++++++-      +XXXXXXXXX+++++++++++++              --++- +XXXX+++++XXXXX++ -+++++++--+XXXX
+''''''''''''''''''''''''''''   '''''        ''''''''''''''''''''' '                ''  '''''''''''''''''  '   '''  '''''
+............................    ...         ..................... .                ..  ......  ........       ...  .....
+========-==--------==---===      ==          --H-HHHH-==== =====                   =    -HH-=  ==HHHHH=             HH--
+                                               C CCCC                                    CC      CCCCC              CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOZ)++MOOOOOOOOOOOOOOOOOOOOOOOZ-        -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOMM
+++++XXXXXXXXXXXXXXXXX++++=  -+++++++=--     XXXXXXXXXXXX+++++++++++            ++++++--+XXXX++++XXXXXX+++=+++ -+XX++++
+'''''''''''''''''''''''''     ''''''        '''''''''''''''''''''               '''''  '''''''''''''''''  ''   ''' '''
+........................      ......        .....................               .. ..  ...... ..........  ..   ...  ..
+====-----------------==         = =         -HHHH-HHHH--======                  ==     =HHHH= ==HHHHHH=    =    --  ==
+                                             CCCC CCCC                                  CCCC    CBCBBC
+                                                                                                    V
 OOOOOOOOOOOOOOOOOOOOOOOO1--=1MOOOOOOOMMZ++XOOOOOOOOOOOOOOOOOOOOOOOO)-        -ZOOOOOOMOOOOOOOOOOOOOOOOOOOOOO)=XOOOOOOOX)
++++XXXXXXX++XXXXXX++X++=      ++++++-      +XXXXXXXXXXX+++++++++++-            ++++++ =+XXXX+++XXXXXXXX+++++   +XX++++
+'''''''''''''''''''''''       ''''''       '''''''''''''''''''''                ''' '  '''''''''''''''''' '    '''''''
+.......................       .....        .....................                ..     .................. .    .......
+===-------==------==-==          =         =HHHH--HHH--====== ==                ==     =HHHH= =-HHHHHH-=        --= =
+                                            CCCC  CCC                                   BBBC    CBBBBB
+                                                                                                 V
 OOOOOOOOOOOOOOOOOOOOOOOZ----)AOOOOOOOOMX+1OOOOOOOOOOOOOOOOOOOOOOOOO)         =)OOOOOOOOOOOOOOOOOOOOOOOOOOOOA==ZOOOOOOOOX
++++++XXXXXXXXXXXX++++++       ++++++=-    +XXXXXXXXXXXX+++++++++=+-            =+++++++XXXXXX++XXXXXXXXX+++    =+X++++=
+'''''''''''''''''''''''        ''''       ''''''''''''''''''''''                ''' ' ''''''''''''''''''''      ''''''
+.......................        ...        ......................                ...   ...................       ......
+=====----H-------=====         ===         HHHHHHHHHH--  = ====                        -HHHH-==-HHHHHHH-        =-= ==
+         C                                 CCCCCCCCCC                                   CBBC    CBBBBBC
+                                                                                                 V V
 OOOOOOOOOOOOOOOOOOOOOOO)--- =1MOOOOOOOA1AOOOOOOOOOOOOOOOOOOOOOOOOOM=-      --==AOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)--)OOOOOOO
+X+XX+X++XXXXX+X++++++++        ++++==-   +XXXXXXXXXXXX+++++++++++=              ++++=++XXXXXX+++XXXXXXXXX+++-    +++X++=
+'''''''''''''''''''''''        '''       '''''''''''''''''''''''                '''' ''''''''''''''''''''''      ''''''
+.................. ....        ..        ......................                  ..   ....................       ......
+-=--=-==-----=-==   ==                   =---HH-H--H--==== ==                          -HHHH-===HHHHHHHH-        ===-=
+                                             CC C  C                                    BBBB    CCBBBBBC
 OOOOOOOOOOOOOOOOMXOOOOO+- ---)AOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=-       -= 1OOOOMOOOOOOOOOOOOOOOOOOOOOOOOA1-+OOOOOOO
+X+X+XXXX+X+X+X++  =+++-        +==--  --+XXXXXXXXXX+XX++++++++++=-              ++== +++XXXXXX++XXXXXXXXX+++-    +++X+++
+''''''''''''''''   '''                  '''''''''''''''''''''''                 ''   ''''''''''''''''''''' '      ''''''
+................   ...                  .......................                      .....................        ......
+-=-=----=-=-=-=     =                    -HHHHH----=-- =  ==                           =HHHHHH==HHHHHHHHH=        ==-=
+                                          CCCCC                                         CCBBBC  CCBBBBBBC
+                                                                                                    V
 OOOOOOOOOOOOOOOO+-1OOOA= ----1XMMOAMOAOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-- - -   -=-1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOO
+++XXXX+XXXX+X+++   -++           -  - =+XXXXXX+XXXX+++++++++++++=               ==---+++XXXXXX++XXXXXXXXX+++=++- ++XXX++
+''''''''''''''''    ''                 ''''''''''''''''''''''''                      ''''''''''''''''''''''  ''  '''''''
+...............     ..                 ........................                       .....................      .......
+==----=----=-==                         -HHHH-=----==    ==  =                         =HHHHHH==-HHHHHHHH=        =---=
+                                         CCCC                                           CBBBBB   CCBBBBBC
+                                                                                                       V
 OOOOOOOOOOOOOOOOM=-)OO)- --+-)XMOMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-    --  -+=1OOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+    -+          -    ++XXXXXXXXXXXX++++++++++++=-               -+-= +++XXXXXXXXXXXXXXXXXX++++++++XXXXX+
+''''''''''''''''                      '''''''''''''''''''''''''                       '''''''''''''''''''''''''' '''''''
+................                      .........................                       .......................... .......
+HHH-------H----                        -HHHHHH-HH--==    =   =                         =HHHHHHH---HHHHHHH-  ===   -HH--=
+CCC       C                             BCCCCC CC                                       BCBBBBC   CBBCBCB          CC
 OOOOOOOOOOOOOOOOOOM)ZZ - ---)1AXA1AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+---      --=)MOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+XXX+++                  ++XXXXXXX+XXX++++++++++++++=-                =+ =-++XXXXXXXXXXXXXXXXXX+++X+++++XX+XX
+''''''''''''''''''                  ''''''''''''''''''''''''''                         '''''''''''''''''''''''''''''''''
+..................                   .........................                         .................................
+HHH-H------=---==                    =-HH--H-=---====  = == =                          =-HHHHHHH---HHHHHH- ==-=   =H-=--
+BCC C                                  CC  C                                             BBBBBBC   CBBBBC          C
+                                                                                                       V
 OOOOOOOOOOOOOOOOOOOOOOOX+--)AOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=-- ---   ---)MOOOOMOOOOOOOOOOOOOOOOOOOOOOOOO)1MOOOOOO
+XXXXXXXXXXXXXXXX+X++++=      ---- -+XXXXXXXXXXXXXXX++++++++++++=-                -=-= ++XXXXXXXXXXXXXXXXXX++XX+   +XX+XX
+''''''''''''''''''''''             '''''''''''''''''''''''''''                        ''''''''''''''''''''''''    ''''''
+.................... .             ...........................                         .......................    ......
+HHHHHHHHHH------=-=  =              -HHH---H-------=   ====                             -HHHHHHHH-HHHHHHHH= --    =H-=-H
+CBCCBCCCCC                           CCC   C                                             CBCCBBCC CCBBBBBB         C   C
+                                                                                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOAXOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=-- -   - -)-+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ--ZOOOOOO
+XXXXXXXXXXXXXXXXX+X++++++  -+++- -+XXXXXXXXXXX+X++++++++++++++==-                ====-+++XXXXXXXXXXXXXXXXX++XX    +X+XXX
+''''''''''''''''''''''''    ''    '''''''''''''''''''''''''''                         ''''''''''''''''''''''''    ''''''
+........................          ...........................                          .......................    ......
+H-HHHHHHHHHH-H---=-= ==            -HHHH------=-===   =  ==                             =-HHHHH---HHHHHHHH==--     H=---
+C CCCBCBBCCC C                      CCCC                                                  CCCBC   CCCCBCBC         C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)---       -+-+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM--OOOOOOO
+XXXXXXXXXXXXXXXXXXX++++++++++++  ++XXXXXXXXXXXXX+++++++++++++===                 ==++++++XXXXXXXXXXXXXXXXX++++   -+XX+++
+'''''''''''''''''''''''''  ''''  ''''''''''''''''''''''''''''                         ''''''''''''''''''''''''    ''''''
+.........................  ...    ...........................                         ........................    ......
+--HH------H-H-HH---=       =      =HHHHH-H------==    == =                             ==-HHHHHH--HHHHHHHH= ==    =H-===
+  CC      C C CC                   CCCCC C                                                CCCBCC  CCBBBCBC         C
+                                                                                                     V
 OOOOOOOOOOOOOOOOOOOOOOOZX)1MOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-----     -= +MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ
+X+XXXXXX++++++++++++===     ++= =+XXXXXXXXX+XX+++++++++++++++===                 -+++++++XXXXXXXXXXXXXXXXX+++++-++XX++-
+'''''''''''''''''''         ''   ''''''''''''''''''''''''''''                      ''''''''''''''''''''''''''''  ''''
+...................         ..   ...........................                          .........................  ....
+-=-H--H-======                   =H--HHH-H-=--====  === ==                             ==-HHHHH----HHHHHHH====   =HH=
+   C  C                           C  CCC C                                                CBCBC    CBBCCCC        CC
 OOOOOOOOOOOOOOO1===--=+-=)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=----      -= -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA--
+XXXXXXXXXX+++++            =++-=+XXXXXXXXXXXX+++++++++++++++=+=-                -=+++++++XXXXXXXXXXXXXXXXX+++X+==+XX+
+'''''''''''''''             '   ''''''''''''''''''''''''''''                       ''''''''''''''''''''''''''''  ''''
+..............              .   ................... .......                           .........................  ....
+------H--H====                  =HHHHHH------===     =====                             ==-HHHHHH-HHHHHHHHH= =-=  =HH=
+      C  C                       CCCCCC                                                   BBBBBC CCCBBBBBB        CB
+                                                                                            V
 OOOOOOOOOOOOOOOOM1--  ---1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)---  -     -= =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO++OOOOO+-
+XX++XXXXXXXX+++-           -=-=+XXXXXXXXXXX++++++++++++++++++=+                 -==++++++XXXXXX+XXXXXXXXXX+++X+  -+XX+
+'''''''''''''''                ''''''''''''''''''''''''''''                        '''''''''''''''''''''''''''    ''''
+...............                ................... ........                        .. ........................    ...
+--==--------==                 =-HH--H--HH-=====     = ====                            ==HHHHH-=---HHHHHHH===-    =H-
+                                 CC  C  CC                                               CBBBC     CCBCBBC         C
 OOOOOOOOOOOOOOOOOOMX+ZX1))OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+---   -    -= =MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1ZOOOOO)
++X++XX++X+XXXX++++        -=--+XXXXXXXXXXXXX+++++++++++++++++--                  ++++++++XXXXX+++XXXXXXXXX+++X+   +XX+=
+''''''''''''''''''            '''''''''''''''''''''''''''''                       '''''''''''''''''''''''''''''   ''''
+..................            .............................                         ...........................   ....
+=-==--==-=----==              =HHHHHH----H--====   == = ==                             ==--HHH===-HHHHHHH-= =-     -H=
+                               CCBCCC    C                                                 CCC    CCCCCCC           C
 OOOOOOOOOOOOOOOOOOOOOO1++)MOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)=  --- -       -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=
+++++++++++++++++++++=-     - ++XXX++XX+X+++++++++=+++++++++===                   +++++++XXXXXXX+XXXXXXXXXX+=+++++-++XX+
+'''''''''''''''''''          '''''''''''''''''''' '''''''''                      '''''''''''''''''''''''''' ' '''  ''''
+..................            .................    .......                       .......................... . ...  ...
+====== = = =====              =-H-==--=-=== =      =======                           = =-HHHHH-=-HHHHHHHH-         =H-
+                                C                                                        CBBBC   CCCBCBCC           C
 OOOOOOOOOOOOOOOOOOOOO1)ZZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1=-----      -- =MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+
++X+X+X+++X++++X+++++-     -+++XXXXXXXXXXXXX+++++++++++++++++--                   +++++++XXXXXXXXXXXXXXXXXX+-=-++++=+XX+
+'''''''''''''''''''         ''''''''''''''''''''  ''''''''''                     ''''''''''''''''''''''''''    ''' ''''
+...................         ...................   ........                       ..........................    ... ...
+=-=-=-===-====-==            =HHH-HHHH-----=  =    =====                          == =  -HHHHH--HHHHHHHHH-      ==  --
+                              CBC CCCC                                                   CCBCC  CCCBCCCBB
 OOOOOOOOOOOOOOOOOOOOZ))1XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX)--  ----     --=)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++X+++X+++++++=-      ++XXXXXXXXXXXXX+++++++++++++++++==-                    +++++++XXXXXXXXXXXXXXXXXX++++++X+++XX+-
+''''''''''''''''''         '''''''''''''''''''''''''''''''                        ''''''''''''''''''''''''' '''''''''''
+..................         ....................  ........                         ........................  . .... ....
+-=====-===-== ==            -HHH---HH----==      = = = =                          ======-HHHHHHHHHHHHHHHH-     =-=  --=
+                             CCC   CC                                                    CCBCCCCCCCCCCCBC
 OOOOOOOOOOOOOOOOOOMXZ1ZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX+--     -   -  -MAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+X+++++++==      -++XXXXXXXXXXXXXX++++++++++++++++++=                     -++++++XXXXXXXXXXXXXXXXX+++++=+XX++X+++
+''''''''''''' '           ''''''''''''''''''''' ''''''''''                        '''''''''''''''''''''''''''' ''''''''
+.............             ....................   ........                           ......................  .  ...  ...
+-------=-===              =-HHH--H-HHH---===     ==== ==                              ==HHHHHHHHH-HHHHHHH=  =  =H-  -=
+                            CCC  C CCC                                                  CCBCBCCCC CCBBCCB       C
 OOOOOOOOOOOOOMZXAXZ111XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)= -- ----    -  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOM1X
++XX+XXXXX+++-           ++XXXXXXXXXXXXX++++++++++++++++++++=                   --+==++++++XXXXXXXXXXXXXXX++++=  ++-++
+'''''''''''             ''''''''''''''''''''' ' ''''''''                         '   ''''''''''''''''''''' ''   ''  '
+...........              ....................   ........                             .....................  .   ..
+=--=-----==              =-H--H--H-----= ==      ==== =                                ===---H---H-HH-H--=      ==
+                           C  C  C                                                           C   C CC C
 OOOOOOOOOOOOMZ1))111)ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1+-- -- --- --- --OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXMOOOOOOMM
+X+++++++++++           ++XXXXXXXXXXXXX+X++++++=++++++++++++=                   -=++++++XXXXXXXXXXXXXXXXXXX++++  ++++++
+'''''''''''            ''''''''''''''''''''''   ''''''''''                       ''''''''''''''''''''''''' ''   '''''
+...........            ......................   ........ .                       ......................... ..   .....
+-=========              =--HH--HHH-H--=-===      = ==                               ===-HHHHHHHHHHHHHHHHH- =     = =
+                           CC  CCC C                                                    CBBBBBBBCBBBBBBCC
+                                                                                           V V        V
 OOOOOOOOOOOOOA1+=)++)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)==--   - - ----+=MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X+++++++=        -+XXXXXXXXXXXXXXXX+++++++=++++++++++++-                    =++++X++XXXXXXXXXXXXXXXXXX++++++++++++++
+''''''''''''          '''''''''''''''''''''''   '''''''''                        ''''''''''''''''''''''''''''' '''''''''
+............          ......................    ....... .                         ............................  .......
+====-=====             -HHH--H-HHH-H---=====    === ==                            ===-==HHHHHHHHH-HHHHHHH- ==   ======
+                        CCC  C CCC C                                                    CCCCBBBCC CCBBBBB
 OOOOOOOOOOOOOM1)++))MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)=--- - - ---- -++MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++        +XXXXXXXXXXXXXXXXXX++++++=++++++++++++-                    ++++++XXXXXXXXXXXXXXXXXXX+++X+++X++XX+++
+'''''''''''''        ''''''''''''''''''''''''  '''''''''''                      ' ''''''''''''''''''''''''''''''''''''''
+............         .......................   .........                          .....................................
+==========            -H-H-H--HHH-H-----==        ===                              ===-HHHHHHH-----HHHHH-= =H===-==-H=
+                       C C C  CCC C                                                    CCCCCCC     CBCCC    C       C
 OOOOOOOOOOOOOOZ)+++ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ+- ----    - -- =+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++-      +XXXXXXXXXXXXX+++X++++++==++++++++++++=                    -+++++++++XXXXXXXXXXXXXXXX+++X+++++XXXX+=
+''''''''''''        '''''''''''''''''''''' '  ''''''''' '                       '''''''''''''''''''''''''''''''''''''''
+............        ......................     ......                             .....................................
+======= =           =--HH--H-H----===-== =         =                                =====-H-H-HH-H-HHHHHH  =- ====-HH-
+                       CC  C C                                                            C C CC C CCCCCC          CC
 OOOOOOOOOOOOOOX+==AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1)--- -  -  - ---=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++-     +XXXXXXXXXXXXXXXXXXXX++++++++++++++++++-                    +++++XXXXXXXXXXXXXXXXXXXXX++++--+++XXXXX+
+'''''''''''''      '''''''''''''''''''''''''' '''''''''''                       '''''''''''''''''''''''''''''  '''''''''
+............       ........................   ..........                        .............................  .........
+= ====== ===       =-HH-------HH----H---=      ====   =                          == ---HHHHHHHHHHHHHHHHHH===   ===HHH--
+                     CC       CC    C                                                  CCBBBBCBCCBCBBBBBB         CBC
 OOOOOOOOOOOOOOX1+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)=------   - -=--ZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZMOOOOOOOOO
++++++++++++++-    +XXXXX+=+XXXXXXXXXX+X+++++++++++++++++++-                    ++++++XXXXXXXXXXXXXXXXXXXXX++-  ++XXXXXXX
+'''''''''''''     ''''''' '''''''''''''''''''''''''''''''                      '''' ''''''''''''''''''''''''   '''''''''
+............      ....... ................ .. ....... .                         ... ........................   .........
+=== ===== =        -HHH-  =-----H----=-==      =====                             == =--HHHHHHHHHHHHHHHHHH-=     =-HHHHH-
+                    CCC         C                                                      CBBBCBBCCCCCCBBBCC         BBCCC
 OOOOOOOOOOOOOOX)1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1=-- ----   -- + -MZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOO
++++++++++++++-   +XXXXXX+++XXXXXXXXXXXX++++++++++++++++++=                     +++==+XXXXXXXXXXXXXXXXXXXXX++- =+XXXXXXXX
+''''''''''''     '''''''' ''''''''''''''''''''''''''''''                       '''  ''''''''''''''''''''''''   '''''''''
+...........      ........ ................    ......  ..                       ...  ........................   .........
+====== = ==       HHHHH-=  --HH-H------===      ===                              =  =-HHHHHHHHHHHHHHHHHHH-==   =-HHHHHHH
+                  CCBCC      CC C                                                     CCBBCCCCCBCCBBCBBCB        CBBBCCB
 OOOOOOOOOOOOOMZ1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)=---  ---    - -OZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++=   +XXXXXXX+++XXXXXXXXXXX++++++++++++++++++==                   - =+++++XXXXXXX++++XXXXXXXXXX++++++XXXXXXXX
+'''''''''''     ''''''''''''''''''''''''''''''''''''''''                        ''''''''''''''''''''''''''''  ''''''''''
+..........      .............................. .......                           ...........................  ..........
+ =      ==       -HHHHHH===---H-HH----===      ===                                 ==--HHHH-= ==--HHHHHHHH==  ==-HHHHHHH
+                  CCCCCC      C CC                                                     CCCC       CCBBBCCC       CBCCCCB
 OOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)== -- --    - --MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++=- -++XXXXXXX+X++XXXXX+XXX++++++++++++++++++++=                    ===+++XXXXXXX+++++XXXXXXXXXXXX+X+XXXXXXXXX
+'''''''''''    ''''''''''''''''''''''''''''''''''''''''''                        '''''''''''''''''''''''''''''''''''''''
+..........     ............................  ........                            ............ ..........................
+ =  =           =---HHH-=-==-----=---=====      =                                 ==-H-HHHH=   =-HHHHHHHHHHH=-=--HHHHHHH
+                    CCC                                                              C BBCC      CBBBBCBBCCC     CBBCCCB
+                                                                                                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)+------      - --MOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++XXXXXXXXXXXXXXXXXXXX++++++++++++++++++++-                    +  +XXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''                       '  '''''''''''''''''''''''''''''''''''''''
+............ ................................   ....                          .  .......................................
+=====  ===   ====-HHHH--HH---HHH-HHH-=== ===                                     =----HHHH--===== -HHHHH--HHH---HHHHHHHH
+                  CCCC  CC   CCC CCC                                                  CCCC         CCBCB  CCC   CCBBCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)+==--  --      --MOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++XXXX++++XXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++--                    += ++XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''' ''''  '                       '  '''''''''''''''''''''''''''''''''''''''
+............................................. . ....                          .  .......................................
+ ===== ----====----HH---H----HHH-HH---== ==                                      ==-----HHHH---HH=-HHHHH----HHH--HHHHHHH
+                   CC   C    CCC CC                                                     CCCC   CC  BBCCC    CCC  CCCCBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ--   -      -- 1-MOOZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++XXXX+X+++XXXXXXXXXXXXXXXXXXXXXXX++++++++++++++==++=                    ++ ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''                          ''  ''''''''''''''''''''''''''''''''''''''
+............................................. .  ...                          .   ......................................
+===  ==----=-===-H-----H-H--HHH---H----=                                          =-HH-H-HHHHHH-HHHHHHHHH---HHHHHHHHHHH-
+                 C     C C  CCC   C                                                 CC C CCCCCC CCCCCBCCC   CCCCCCCCBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1)=---- -     -=1-+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++XXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX++++++++++++++++=-                    -==+++XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''  '                           ''''''''''''''''''''''''''''''''''''''
+................................................ ...                              ......................................
+=== ==-HH--------HHHHHHHHHHHH---=--H-H--=     =  = =                               =-H-H-=HHHH-HH-HHHHHH--HHHH-HH-HHHHHH
+       CC        CCBCCCCCCCCC      C C                                               C C  CCCC CC CCCBBB  CCCC BC CCBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+=--    -  -  )Z=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++XXXXX+++XXXXXXXXXXXX+XXXXX++XXXXXX+++++++++++++++=--                   =-+++XXXXXXXXXXXXX+XXXXXXXX+XXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''                           ''''''''''''''''''''''''''''''''''''''''
+.....................................................                            . .....................................
+=======H-H--===----HHHH-H--=-----==--HH--=    =                                  = -HHHHH-HHH---=-----H--=--H-H---HH-HHH
+       C C         CCCC C            CC                                             CCCCC CCC         C     C C   CC CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)= --   -    --==XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXXXXXX+X++X+XXXXXXXXXXXXXXXX+X+XXXXXX++++++++++++++-                    =+-+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''' ''''                           '''''''''''''''''''''''''''''''''''''''
+............................................. ... ..                             .......................................
+=====-H--H--=-==-=--H-------------=-=--H---=   =                                 =  -HHHH-HHHH-----HHHHHH-HHHHHHHHHHHHHH
+      C  C          C                  C                                             CCCB CBCC     CCCCBC CBBCCCCCCCCCBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM1)-----        --+MAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X+XXXX+X+++++++X+XXXXXXXX+XXXXXX++XXXXXX++++++++++=++                      ++++--+XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''   '                          '''  '''''''''''''''''''''''''''''''''''
+............................................. ...                               ...  ...................................
+ =  -=-HH-=-=======-=--------=--H---==--HH--=  ==                                ==  =HHHHHHHHHH--H----=--HHHHHHHHHHHHHH
+       CC                       C       CC                                            CBCCCCCCCC  C       CCCCCBCCCBBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZ+= ---         -=AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++X+XXXX++++++++++++++++X+XX+XX+++X+X++++X+X++++++++++==                     =+XX+++=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''' '''                         '''''  ''''''''''''''''''''''''''''''''''
+..............................................  ..                              ....  ..................................
+  =-=----======= ========-=--=--===-=-====-=-   ==                              --==  -HH--HHHHHHHHHHHHH-HHHHHHHHHHHHHHH
+                                                                                       CB  CBCCCCBBCBCCC CBBBBCCBCCBBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)-- -  -        +XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++X+++++++++++++X+++XXXXXXXX++++X+++++++++++=+=+++=-                    ==XX++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''   '                          ''''''''''''''''''''''''''''''''''''''''
+.......... .................................... .                               ........................................
+====== =-  ======  ===-===--------====-=======                                  -H= -  -H-HHHHH-HHHHHHH--HHHHHHHHHHHHHHH
+                                                                                 C      C CBCBC CBBBCCC  CBBCBBBCBBBBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ+=--   -  - -   -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++XXXX++X+++++++++++X+XX++X+XX+++++++++++++++-=++++=                    ==+XXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''     ''                        ''''''''''''''''''''''''''''''''''''''''
+.................................................                               ........................................
+==== ===-H--==-== ========-=--==-=--==== ====  ==                               =-H-==  =HHHHHHHHHHHHHHH-HHHHHHHHHHHHHHH
+         C                                                                        C      CBBCCCCCCBCCCCC CCBBBBBBCBBBBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOMZ++-- -- -         +OOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++X++X+++++++++++X++X+X++++++++++++++++++++=  ==--                     -+XXXXX+ =+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''' ''''''''''''''''''''''''''''''''''''''''''''''                             '''''''  '''''''''''''''''''''''''''''''
+...  ..............................................                              ......  ...............................
+  =     ==-==-====   ====-==-=-=======  ======= =                                --HHH   =HHHHHHHHHH-H---HHHHHHHHHHHHHHH
+                                                                                   CCC    CBBCCCCCCC C   CBCCCCCCCBCBCBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX1=---  -   -     --)MOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++++++++++++++++++++++---+-                       +++XXX+ ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''                              '''''' '''''''''''''''''''''''''''''''
+....................................................                              ......  ..............................
+ =======   ==========   =   =   =   ====  =  ===  ==                               =---   =--HHHHHHHHHH-HHHHHHHHHHHHHHHH
+                                                                                             CCBCCCBCBC CCCCCBBBBCBBCCBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOMX1=- -- -    -      -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X+X+++++X++++++++++++++++++++++++++++++++++++++++++++  --                       ++XXX+++-=-++XXXXXXXXXXXXX+XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''                            ''''''''   ''''''''''''''''''''''''''''
+............... .....................................                            .......     ...........................
+=-=-=====-====   ====   =  == =  ====== =  =                                      =-H-==     =--HHH-HHHHH--=--HHHHHHHHHH
+                                                                                    C           CCC CCCCC     CCCCCBCBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM11+--      --       -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++X++++X+X++++++++++++++++++++++++++++++++++++++++---                       -+XXXXXX++=++XXXXXXXXXXX++++XXXXXXXXXXX
+''''''''''''''''' ''''''''''''''''''''''''''''''''''''                            '''''''''  '''''''''''''''''''''''''''
+................  ................................ .                              .........  ...........................
+=======-====-=-=  = =   = =========== ======  =                                    ----HH     -HHHH--HHH-====-HHHHHHHHHH
+                                                                                       CC      CCBC  BCC      CCCBBBCCCB
 OOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOA))=-             - -)OMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++X++++++ ++++++++++++++++++++++++++++++++++++== --                      + +XXXXX++--++XXXXXXXXX+XXXXXXXXXXXXXX
+'''''''''''''''''' '''''''''''''''''''''''''''''''' '''                             ''''''''  ''''''''''''''''''''''''''
+.................  ... ............................ .                               ........  ..........................
+  = ==   = -=   =         =  ==== ====== =  =                                       =-HHH-=    =HH--HHHH-=-H-HH--HHHHHHH
+                                                                                      CCC       CB  CCCC   C CC  CCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)=---              -+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++X++++++++++++++++++++++++++X++++++++++++++++++---                        -++XXXXX++++XXXXXXXXXXXXXXXXXXXXXXXX
+ ''''''''''''''''''''''''''''''''''''''''''''''''''''''                              '''''''''''''''''''''''''''''''''''
+  . ............... ..................................                               ...................................
+        ===-====    = = ===  == ======-====  =                                        =HHH--== =HH-HHHHHH-HHHHHHHHHHHHHH
+                                                                                       CCC      CC CBBCCC CBBBBCBBBBBCBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMO)=+-- -  - -       - -+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=- -                        +XXXXXX++++XXXXXXXXXXXXXXXXXXXXXXX
+    ''''''''''''''''''''''''''''''''''''''''''''''''''''                              ''''''''''''''''''''''''''''''''''
+     ...................................................                              ..................................
+        =  == == ==  === =    ================ = =   =                                 -HH---====-HHHHHHHHHHHHHHHHHH-HHH
+                                                                                        CB        BBBBBBCBCBCBBBCCBB CCC
 1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)===-   -- -          -AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -+=-=+++=+++++++++++++++++++++++++++++++++++++++++++++++++==-                         +XXX+XX++++XXXXXXXXXXXXXXXXXXXXXX
+      ' ' ''''''''''''''''''''''''''''''''''''''''''''''''                             '''''''''''''''''''''''''''''''''
+        .  .............................................                               .................................
+           ===       ==== =      =  ====== = = ===    =                                =---=HH== =HHHHHHHHHHHHHHHHHHHHHH
+                                                                                            CC    CCBCCCBBCBBBBCCBCCCBBC
 XXOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+-----  -  -  -        1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  =--- -=+=++++++++++++++++++++++++++++++++++++++++++++++++++==                         ++++XX++X++XXXXXXXXXXXXXXXXXXXXX
+         ' ''''''''''''''''''''''''''''''''''''''''''''''''                             ''''''''''''''''''''''''''''''''
+           .................. ............................                              ................................
+               =====      =     = === = ========== =   =                                == =HH==- =HHHHHHHHHHHHHHHHHHHHH
+                                                                                            CC     CCCBCBCBCCCBCCCCCCBCC
 O1ZAMMOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)=-==- -- -      -     =AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-     ---- =+++++++++++++++++++++++++++++++++++++++++++++++++++=                          ++XX+XXX+XXXXXXX+++XXXXXXXXXXX
+            ''''''''''''''''''''''''''''''''''''''''''''''''''                            ''''''''''''''''''''''''''''''
+              .. ......................................... ..                              .............................
+                               =  =   = =======  =   =  =                                  =--=-HH=-HHHHHH===HHHHHHHHHHH
+                                                                                                CB  CCBBBC   CCBCCCCCCBB
 AZ=1ZMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+--==-- -  -    -       +MOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       -- --=+++++++++++++++++++++++++++++++++++++++++++++++++++=                           +++XXXX+XXXXXX++XXXXXXXXXXXX
+                 ''''''''''''''''''''''''''''''''''''''''''''''                             ''''''''''''''''''''''''''''
+                  ....    .. ..................................                             ............................
+                              =  == ==== ==   ==== ====      =                               ==-HHH=-HHHH-==-HHHHHHHHHHH
+                                                                                                CBC  CCCC    CCCCCBCBBBC
 ZX)=AAMOMOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)++=------  -            1OMOOOOOOOOOOOOOOOOOOOOOOOOO
+       - --  =-=++++++++=+++++++++++++++++++++++++++++++++++++++++                           - +XXXX+XXXXXXXXXXXXXXXXXXX
+                   '''     ''''''''''''''''''''''''''''''''''''''                              '''''''''''''''''''''''''
+                             ............................      ..                              .........................
+                              =     === == =     =    =                                        =-HH-=-HH---HHHHHHHHHHHHH
+                                                                                                 CC   CC   CCCCCCCCBCBCC
 ==1-=XAXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)=+)=--     -           XAOOOOOOOOOOOOOOOOOOOOOOOOO
+         -=---====++++++++++++++++++++++++++++++++++++++++++++++++-=                           -++XX++XXXXXXXXXXXXXXXXXX
+                        '  '  ''''''''''''''''''''''''''''''''' '                               ''''''''''''''''''''''''
+                                ............................                                    ........................
+                                 =  ===  ===  ===        =                                      ==-- =HH-HHHHHHHHHHHHHHH
+                                                                                                      CC CCCCBBBCBBCCCCC
 ---- +1ZAOOMMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1))+==-    - -          ZOOOOOOOOOOOOOOOOOOOOOOOOO
+         --   -- ----=+==-----++++++++++++++++++++++++++++++=++++=+--                          =++XX++XXXXXXXX+X+XXXXXXX
+                               ' ''''''''''''''''''''''''''  ''                                 ''''''''''''''''''''''''
+                                  .....................  .                                       .......................
+                                         = ==                                                    =-H==-----H--=-=-HHHH-H
+                                                                                                   C       C      CCCC C
 =-  - ++AOOOMOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXX)===---- -            -+MOOOOOOOOOOOOOOOOOOOOOOO
+         --- ---- - ---=------+=+==+++++++++++++++++++++++++++++-====-                           ++X++XXXXXX+++XXXXXXXXX
+                                    ''''''''''''''''''''''                                       '''''''''''''''''''''''
+                                    . .......  .....                                             .......................
+                                                                                                 ==-==-HHHH-===-HHH-HHHH
+                                                                                                       BCCC     CCC CCCC
 )-     +ZOMOOOMMXAAMMMMOOMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOMOOMX+====--- -             1OOOOOOOOOOOOOOOOOOOOOO
+         - ---         -- --- -=====+++++++++++++++++++++== --=+=-=-= --                          ++++XXXXXX+++XXXXXXXXX
+                                     ''''''' '''''''                                              ''''''''''''''''''''''
+                                                                                                   .....................
+                                                                                                    ==-H---H===-HHHH-H-H
+                                                                                                       C   C    CCCC C C
 M)-    =XMOMOMMMAAMAMAMOMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOMMOOOMOX)=+)--- --   -         -)OOOOOOOOOOOOOOOOOOOO
+          - -          -  - -----+++++-++++++++++++++++++-=-- ==- -  --- -                          +XXXXXXXXXXXXXXXXXXX
+                                         '' ''                                                      ''''''''''''''''''''
+                                                                                                    ....................
+                                                                                                     --HHHHH---HHHHHHHHH
+                                                                                                       CBBBC   CCCCCCBBC
 ZA+     )MMOOOMMMMMMXXAMAAMAMOMMMOOOOOOOOOOOOOOOOOOOOOOOMOOMOMMOMMAAMXZZ1Z11))====-------           =OOOOOOOOOOOOOOOOOOO
+           ---               -   +=-+==++++++=+=-======- -- -  -                                     -++XXXXXXXXXXXXXXXX
+                                                                                                      ''''''''''''''''''
+                                                                                                       .................
+                                                                                                       =-HHHHHH-H-HHHHHH
+                                                                                                         CCCCCC C CCBCBB
 X1X=    +MOOMMMMMAMMAAMMAAAMAAMMOOOOOOOOOOOOOOOOMOOOOOOOMOOOOMOOMMAXX11+11)=-+==---  - -            -+MOOOOOOOOOOOOOOOOO
+          --                    --+----=+====+== -=----- ---- --                                       +++++++XXXXXXXXXX
+                                                                                                         '''''''''''''''
+                                                                                                         ...............
+                                                                                                          ====--HHHHHHHH
+                                                                                                                CCCCCBCB
 O)=1-   -AOOOOMOOAOMMAAMAXXZ1XAXMMOMOOOOMOOMOOOOMMOMMMOOMMMMOMOOAAAAA11111)==+==----- -     -   -    =OOOOOOOOOOOOOOOOOO
+-         -=-- -- -               - ---- -- ----  -   --    - --                                      +++-+XXXXXXXXXXXXX
+                                                                                                      ''' ''''''''''''''
+                                                                                                       .. ..............
+                                                                                                       =   H-HHHHHHHHHHH
+                                                                                                           C CCBBBBCBBBB
 OM=+--   =MOOMOOMMMAXAMAA1XZ)ZZXZMXXMMMMAMXXAAAMAMMMAAMMMZXMAMMMXAMZAAZ1)Z1))+==----- -    -          -OOOOOOOOOOOOOOOOO
++          +- --                                                                                       -++++XXXXXXXXXXXX
+                                                                                                        ''''''''''''''''
+                                                                                                        ................
+                                                                                                        ==  -HHHHHHHHHHH
+                                                                                                             CCBBBBCCCCC
 OMZ=--   -XOMMMOOMMOMMMXAAXA1ZZ11ZZ1ZZXXAAXXZXZZXAAXZAAXMMAMMOOOOMXOMOMMZZXXZ11)++===---- -- --        =OOOOOOOOOOOOOOOO
+=          -   --  -                                         ----  - -                                  +++++XXXXXXXXXXX
+                                                                                                         '''''''''''''''
+                                                                                                         ...............
+                                                                                                         ==  -HHHHHHHHHH
+                                                                                                              BBBBCBBBBC
 OOA)=- -  ZOMMOMOMMOOOMMMMMX11++)111111)111+)ZZZ)1ZZZZX1ZAMMMMMMOMMOOMMOMOMMXAX111))++==---- - -        +OOOOOOOOOOOOOOO
+==         -  - -  ---                                          -  --  - -                               -++++XXXXXXXXXX
+                                                                                                           '''''''''''''
+                                                                                                           . ...........
+                                                                                                              -HHHHHHHHH
+                                                                                                               CCCCCCCCB
 +MO)+---  =OMMMMMMMMMOMMMAAX))+++++)))))++))+))11Z11ZAZZ1ZXXMMOOOOMOOOOMOMMOMMMZXA111)+==-==-- -    -      -)1MOOOOOOOOO
+  -        -         -                                        ---- ---= -  -                                   -++XXXXXX
+                                                                                                                ''''''''
+                                                                                                                ........
+                                                                                                                 =-HHHHH
+                                                                                                                   CCCCC
  -O1= -   =MMMMMMMOAAAMMMMAX11++++=+++==++===+)=+)+)))Z11XAAMMOMOOOMOOOOOMOMOOMOXA1ZZ1)+)=)+=-=--      - --     --)ZOOOO
+  -               -                                           - --- -+--- - -- -                                    =++X
+                                                                                                                     '''
+                                                                                                                     ...
+                                                                                                                      =-
  -MA--- - =AMAMAMMXAAMMMMMXXZ1)+=-===+===+=====+=+)1+)ZZXZAMOMOOOOOOOOOOOOOOOOOOOOMAAXZZ)ZZ1+)++=-----        =----- --)
+                                                            - +==+===+=====-==----
 --1M= -- --ZAAZZAAXZXMXAXXXZZ1)=+========-===-===+))++)ZAAMMAOOOOOOOOOOOOOOOOOOOMOOMMMX11ZZZ1)=)==---     -- -+++))==+)1
+                                                             -==+++++++++++====- --
+                                                                     ''''
+                                                                      ..
+                                                                       =
 - =A+---- +ZAAXZZZAZZX1Z1111Z1+===---=--==----==-+=)))11ZXOMMMOOOOOOOOOOOOOOOOOOOOOOOOMOMAAAZZ1))===----------)1XMOA1ZAM
+                                                          -   ===++++++X+++++++---=--- -                          -
+                                                                    '''''''
+                                                                      ....
+                                                                      =-=
 --=Z1- ---+1ZXXZZZX)11ZZ1))+)1+)===-======-----===++++)+)1ZAMMOOOOOOOOOOOOOOOOOOOOOOOOOMXMAXXXZZ)))+-===------ -1MOOOAXX
+                                                              -=++++++++++=++++++++===-                           -+-
+                                                                   '''  '   ''                                     '
+                                                                     .
 -=+ZM------ZZZ)Z1)ZZ1)Z)1)1++=+=--===--======---=++=+)1)1AAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMAAZZZ1=++=-------==ZXOOOMM
+                                                             --=++++++++++++++++++++++++--  -                      ---
+                                                                  ''''''''''  '''
+                                                                    ..... ..
 ==)ZO1  -- )ZZ11))111)11))))+====-=--=--==--=---=+===+))11ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMAAMZ)+++==--=---=)11ZMMM
+    -                                                        --=+++++++++++++++++++++++===--- -
+                                                                  '''''''''''''''' '
+                                                                   .......... .
+                                                                       =
 +==XO1-----=11)))+)))=))++++=-==--------=--===--=+=-++=++)ZAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOMAZZ)1=-=+=---=--=)1Z1
+    -                                                         -+++++++++++++++++++++++++++====  --
+                                                                  '''''''''''''''''''''''
+                                                                    .... .. .   ..
+                                                                         =
 ===ZM1- ---))))+++)1+))))+=++-+--- --=--=--===-=-=========+OZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZXZ11+==++=-=--=--=-+
+                                                           -   -==++++++++++++++++++++++++=---==-
+                                                                   '''''''''''''''''''''''
+                                                                    ......... ..... .....
+                                                                            =    =
 )==XOZ----++))))+=+)))))+=+===-=----------=-)=+=+++=====+1ZZAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAAX111)++====------
+    -                                                          ++++++++++++++++++++++++++++++++===-
+                                                                  '''''''''''''''''''''''''
+                                                                   ................  ....
+                                                                     = =  =     ==   =
 )=)XOZ---=+))1)+))+++))+1++===-==---- ------=-=++++====-=+11ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ1Z))+=+===-=---
+    -                                                         --=+++++++++++++++++++++++++++++++++=---
+                                                                  '''''''''''''''''''''''''' '  '
+                                                                    .................... .
 ))ZOOX---=++)))++)))+))+)++==---------- - --=-==+===-=-=+=+MXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXZZ1)))==--=---
+   --                                                          -=++++++++++++++++++++++++++++++++++===-
+                                                                  '''''''''''''''''''''''''''''''
+                                                                    ........................ .
+                                                                     =         =           =
 )1XOMX=--=++++))==+)))=++==-------- O- -- ---=-=+===---==))X))OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZMX)11===--=--
+   =                                -                         --=++++++++++++++++++++++++++++++++++=++==-
+                                                                    '''''''''''''''''''''''''''''''
+                                                                      ....................... ...
+                                                                           =      =      = ==
 1ZMOM)=-=)+=+==++++)))=)))+++=-----1M=---------++-========)Z1ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAAZ111+==---
+   =                                                           ---=++++++++++++++++++++++++++++++++==-==-
+                                                                    ''''''''''''''''''''''''''''''
+                                                                     .......................... .
+                                                                         = =  ==     =      =
 ZMOOM1--=+)++)++))))+)+++++=+=----- ----- ------=========+)Z11XMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAZ111))==-
+  =+                                                             -=++++++++++++++++++++++++++++++++++=++---
+                                                                     ''''''''''''''''''''''''''''''
+                                                                     ........................... .
+                                                                         == =  ==  = =     ==
 XMOOM+=-+)=)+1++)+=+)))))++===-==-- -----------=+-++=+=+=++11ZXXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMZZ1))++=-
+  +-                                                             --+++++++++++++++++++++++++++++++++++==-=
+                                                                     ''''''''''''''''''''''''''''''
+                                                                     ..............................
+                                                                      =   = ==  ==
 )OOOZ+===)+1)))1))=))+))))=====------------ -----=-=++=++==Z)+ZAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMXZXZ+)+==
+ -=-                                                              --++++++++++++++++++++++++++++++++++=+++-- -
+                                                                     ''''''''''''''''''''''''''''''''
+                                                                      ................... ...........
+                                                                         = ==== = == =     =  ==
 -AOX)=-)+)11X)+1111)1)))+=+=-===-=----------------====)))1)Z11XAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAXXZZ+))
+  -                                                              -==+++++++++++++++++++++++++++++++++++++++--
+                                                                      ''''''''''''''''''''''''''''''''  '
+                                                                       ............................
+                                                                            == === ==  == =
  )AZ=++111ZZX)1Z)1)1)1))+++++===-===--=-------------==)+11111ZAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAXAZ))+
+                                                                --=+=++++++++++++++++++++++++++++++++++++=+==-
+                                                                      '''''''''''''''''''''''''''''''' '
+                                                                        ............................
+                                                                          =    === = ==   =    ===
 --Z)+)+ZZZZZZZ1ZZ1)+1)++)+==+=-===------   -----  ---=+=++)11ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMXZ1+
+                                                                --==++++++++++++++++++++++++++++++++++++++++==--
+                                                                       '''''''''''''''''''''''''''''''''''
+                                                                         ......................... ...
+                                                                           =  ===       ==  ==
 ---+))1AMXZZZZX1111)11)11))+=-====------------ --- ---==+=+Z1XMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMXAAZ
+                                                                 -==+=+++++++++++++++++++++++++++++++++++++++=-- -
+                                                                      '' '''''''''''''''''''''''''''''''''
+                                                                         ...............................
+                                                                           == = ==  ===         =
 =--+1ZXMMOAMMAXXZXXZZZ1))++)+=+=-==----- -- --      ----=1+1XXMOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAAX1
+         -                                                     -   -=+=++++++++++++++++++++++++++++++++++++++==--
+                                                                       '''''''''''''''''''''''''''''''''''''
+                                                                         ....................... .......  .
+                                                                               =      ===      = =
 -=-=1AMMOOMMMMMMMMAXZZ111)))+=)+-==------- --- -    ----+)++1ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAX
+        --                                                      -----==++++++++++++++++++++++++++++++++++++++++=----
+                                                                         '''''''''''''''''''''''''''''''' ''''
+                                                                         ................................
+                                                                                 =  =  ==   ===
  =--)MOOOOOOMMMMOMXAAZZXXZ+)++===-----=-- -  ---     ---=++)1ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMZ
+      ==----    -                                               -------==+++++++++++++++++++++++++++++++++++++==--- -
+                                                                           ''''''''''''''''''''''''''''''
+                                                                               . ... ........ ... ....
+                                                                                               =
  +==XOOOOOOOOOOMOMMMOXXAX11))+=---=--=--- -  --- - -- --=+)XZAMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMM
+     -++==+-=-- -   -                                          --= -=-===++++++++++++++++++++++++++++++++++++++--=--
+                                                                           '''''''''''''''''''''''''''''''
+                                                                               ..........................
+                                                                                =  =  =   ====    = =
  -))ZOOOOOOOOOOOOMMMOAXXMX1))1+=-=+--==---- - - - - ----=++1XXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+     -=+++=+++=+-   -                                          -==+====-=+=++++++++++++++++++++++++++++++++++++==------
+        ''                                                                  ''''''''''''''''''''''''''''''''
+                                                                              ..........................
+                                                                               = ==== ====    = = = ==
   1M)OOOOOOOOOOOOOOMOOMXMAZ1Z1=+-+-==-=-- --  --     --===)1)XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+     ==++++++++=--- --                                         --+=++==+-+-=+++++++++++++++++++++++++++++++++=++++-----
+       '''                                                                   ''''''''''''''''''''''''''''''''
+                                                                              ............................ ..
+                                                                                   ===  === ==    =    =
 --1OMOOOOOOOOOOOOOOOOMMMMMM1Z1)+-++--=--=-- ---  --- -  -+)11XXMOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   = -++++++++++=----                                           --==++===- -+++++++++++++++++++++++++++++++++++++++==+--
+      ''''''' '                                                               ''''''''''''''''''''''''''''''''''''
+       .. . .                                                                  ...............................
+                                                                                  = === == =   ===   =  =
 --MOOZOOOOOOOOOOOOOOOOMOMMMXX1+1)=--=----- -  ---  -  - --=+))Z1MOXOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMO
+   == +++++++++++++=-- -                                         - -=-=--  --=+++++++++++++++++++++++++++++++++++++++= -
+      ' '''''''' '                                                              ''''''''''''''''''''''''''''  ''' '
+        .  .  .                                                                   .........................
+                                                                                   =   =    == = = ==   =
 --OOOMOOOOOOOOOOOOOOOOOOOOOMMZZ1)++==------ -- --- -    -=-+111AOOMOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM
+  -++ +++++++++++++++===---                                     -- --+--- --==+++++++++++++++++++++++++++++++++++++-=-
+   '' '''''''''''' '                                                             '''''''''''''''''''''''''''''''''
+   ..   ..... ...                                                                .......................... ...
+           ==                                                                        =======  =      =  =
 - OOOOOOOOOOOOOOOOOOOOOOOOOMMXX1)+++-=-------   -   -   --=++11ZXMOMOOOMOMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -+++++++++++++++++++--=--                                       - --- - -  --==++++++++++++++++++++++++++++++++++=+=--
+   ''  '''''''' ''' '                                                            '''''''''''''''''''''''''''''''''
+    .   .... .                                                                    .............................
+           =                                                                          = ==    == =  =     =  =
 = 1OOOOOOOOOOOOOOOOOOOOOOOOMMMA1)1)++-===---- ---       -=-===)1ZZMMMOOOOMMOMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   ++++++++++++++++++++===-                                          ----  -  - -=+++++++++++++++++++++++++++++++++++==-
+    ''''''''''''''' '                                                             ' ''''''''''''''''''''''''''''''' '
+    .   ......  .                                                                     ............. ............
+         ===                                                                              ==          =     =
 + )OOOOOOOOOOOOOOOOOOOOOOOOOMAAZZZ))+))----- -- --    ------=-)+1AMMMOMOOOMMXAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   +++++++++++++++++++=+=+--                                         - ---        -+++++++++++++++++++++++++++++++++++=-
+    ''''''''''''''' ''                                                               ''''''''''''''''''''''''''''''
+    ... ........... .                                                                 ........................... .
+              =   =                                                                     == == =  ====  = =  =
 )--OOOOOOOOOOOOOOOOOOOOOOOOOOOMAXZZ)1++------- -- - -   -- - -==+)ZAMMMMOMOMXMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   ++++++++++++++++++++++++=--                                          - -       -==++++++++++++++++++++++++++++++++-=-
+    '''''''''''''''''' '                                                               ''''''''''''''''''''''''''' '
+    ...............  .                                                                 ......................  . .
+    = =   = ==   =                                                                          = =  =   =
 1-=OOOOOOOOOOOOOOOOOOOOOOOOOOOOAAXX111+===-- ---- -     ------===+1ZMMXMOOOMXOMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   =+++++++++++++++++++++=++---                                         ---  -   ----==+++++++++++++++++++++++++++=+=---
+    '''''''''''''''''''''                                                               '''''''''''''''''''''''''
+    ...................                                                                 .....................  .
+     = ====== =  =                                                                          == = = == =    =
 Z-ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXAZZ)+)-===----------   ---=-=---)ZAMXMMMMMMOMOMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -++++++++++++++++++++++++++-                                              - - -  --==+++++++++++++++++++++++++++++=+-
+    ''''''''''''''''''''''                                                               ''''''''''''''''''''''' ' '
+    ....................                                                                 ..................... .
+      =====  = == = =                                                                         =  =    = =
 1-XOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMX1Z1++==--- ----  -------------==)1MMOAMMOOMOZMMMAMOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   +++++++++++++++++++++++++++=                                        -   -- -      - - =+++++++++++++++++++++++++=++==
+    ''''''''''''''''''''' '                                                                '' '''''''''''''''' ''
+    .....................                                                                     ....... ..  ..
+     = == === ===  ==
 )=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMZZ1)==+==-- - - ---  --- ------+=1XOMOAOOOMMAAAAXAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM
+   ++++++++++++++++++++++++++-= -                                     - - ---          ----=+++++++++++++++++++++++==-
+   ''''''''''''''''''''''''                                                                   ' ''''''''''''''
+   ... ...................                                                                      . . . ... ..
+        === == =   =   ==                                                                           =
 Z=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX1Z))=+==--- -- ----     -----===))1AMOOOMOOOMMAMXAMMAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOMA
+   ++++++++++++++++++++++++++++---                                       --- -=-           -+++++++++++++++++++++++++-
+   ''''''''''''''''''''''''                                                                     ''''''''''''' ''
+   .......................                                                                         .....  ..  .
+    ======   == ==== =
 O=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZZ1)++==-- ---- --  - -  -=--====))XMOMOMOOOOMMAAAXAAAMMOOOOOOOOOOOOOOOOOOOOOOOOOOMA
+-  ++++++++++++++++++++++++++++==-                                       - - =-+-           --==+++++++++++++++++=+=--
+   '''''''''''''''''''''''''''                                                                   ''''''''''''''
+   ........................                                                                          .... .
+    ===== ========  =
 O=+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZZ1)))++-=--- ----- - ------=--==+)1ZMMOOOOOOMOMAXAX))XAMMOOOOOOOOOOOOOOOOOOOOOOOMXM
+=  ++++++++++++++++++++++++++++-=--                                        --+--- -           -+++++++++++++++++-=---
+   ''''''''''''''''''''''''''''                                                                      '  '''''''
+   ........................ . .
+     =============== ===
 O1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ))+===----   ---  ------ ----++++)1AMOOOOOMOMAAXXAX11AAMMOOOOOOOOOOOOOOOOOOMAXXZZ
++  ++++++++++++++++++++++++++++++==-                                        --=+- -             -===++====+=++----
+'  '''''''''''''''''''''''''''
+.  ...........................
+    === ============== = ==
 O)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAA)))+====--- -     ---  ---=-----===ZXXOOOOOOOMMMMAAZZ1MMMOOOOOOOOOOOOOOOOMMMAZZ)+
++  +++++++++++++++++++++++++++++=--                                          -------            -====++=+-==-==-
+'  ''''''''''''''''''''''''''''
+   ..........................
+    ============== ===== ==
 O-MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAM1))+=+==----- -   -  ------=-=-=--==1ZZMOOOOOOMOMAXZAAAAXOOOOOOOOOOOOOOOOMMXZ1+++
++  ++++X++++++++++++++++++++++++=--                                            ------ -         -------==--=----
+   '''''''''''''''''''''''''''
+   ..........................
+    ===-====== ========  ===
 O)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXMOAAX1))===----     - --- ----=-=-=-----=)ZMOOOOOMOMMMMZZZX1XMOMMMOMOOOOMMOMMMXZ++)-=
+- +++X+X+++++++++++++++++++++++=    -                                          ---=- -           -   - ----  -
+   ''''''''''''''''''''''''  '
+   .......................
+   ==-=-========= ==
 M)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMMAMA111)++-----        - --  --=---------=1ZXMOOOOOAMMAMAZXXZAMMMMMMAMMMAZXAXXZ1++=--
+  +++X++++X+++++++++++++++++=+= -                                                -=-=-
+  '''''''''''''''''''''''''
+   ........................
+    =-====-==============
 OZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXMMMAAXMAZ1))==-- -   - -     - --==--- --- --==1ZAMOOMMOMMMAZZX1AXAMMMXZXAXX1XZZ11))+=--
+= +++++++++++++++++++++++++++--                                                    --  -
+  '''''''''''''''''''''''''
+  .........................
+   ========= ==== ===== =
 OZOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXXMMAZXMAXZ1)+=---         - -  - -=-=----- --==+1AMMOMMOOMMAXZZXXXZXAMAXX1X1))1)))+==--
+- +++++++++++++++++++++++++=-                                                       -  --
+  '''''''''''''''''''''''''
+  ........................
+  ================= ====
 OOOOOOOOOOOOOOOOOOOOOOOOOOMXXMZ)+)1Z1)AAZZ1)+=-- -   -    -     ---=-=------ ---=)ZXMXOOAMAAAXZXAMZZXAXX1)1Z1))+==+=-=-
+--++++++++++++++++++++++=+                                                            --
+  ''''''''''''''''''''''
+  ......................
+  =========== =   =   =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOM11ZZ)+))Z11ZX1)Z)==-- --     - -- - ----- --- -   ---=1ZXAMOOOMMMMMZXZZAXAMXZX1Z1)+=+======-
++=+++++++++++++++++++++++=+                                                            ---
+' '''''''''''''''''''''''
+  .......................
+  ========  = = ===== =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOM)=1))))ZZZZ11ZZ1=+==--   ---     -   - --- --- -  --=+)XXMOOOOMOOMMMAAAAMAAAMZZ1)+++)====--
++++XXXX+++++++++XX++++++++++                                                           -=-= --
+' '''''''''''''''''''''''''
+. .........................
+  =----== ======--====== =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-=1))+1ZZZXMA111)=+-- --   -   ---- ---=-- -- -  ---=+1AMOOOOOOOOMAMMMMMMAXMXZ11))+)++-+=-
++++XXXXXX+++++X++XXXXX++++++=                                                          -+=+==--
+  '''''''''''''''''''''''''                                                               '
+  .........................
+  =------=====-==-----=
 OMOOOOOOOOOOOOOOOOOOOOOOOOM+X1=-+)+=)ZAAAXAZ1++==----- - -      - - --==---- -  -  -)1MOOOOOOOOMMMMMMMMMMZXZ)-+)++=====-
+= ++++++++++++X+XXXXX+X+==                                                             -=====--
+  ''''''''''''''''''''''
+   .....................
+   ===========-=-----=-=
 OMOOOOOOOOOOOOOOOOOOOOOOOOO=--=+)=))11AMMMZMX1)===---- - -  - --  =--=-==----- -   ==1MOOOOOOOOOOOOOMMMMMOMMZ11+)=++-==-
+- ++++++++XXXXX+++XX+XX++++                                                            -=+++++-+==--     -
+  '''''''''''''''''''''''''                                                              ' '
+   ..................... ..
+     = ===-----===--=--
 OOOOOOOOOOOOOOOOOOOOOOOOOOO)--1Z1=+=1XAMMOXMMZ1)=+--- - -  -     -----===--  -  -  --+ZMOOOOOOOOOOOOMOOMOOMOMZ1)+++==-==
+---+++++++++XX+X+++++++++++              -                                              =+++++++-=-= -- -- -
+   ''''''''''''''''''''''''                                                                 ''
+      .....................                                                                  .
+       = ===--=-======  ==
 OOOMOOOOOOOOOOOOOOOOOOOOOOOA+1AXZ))11ZAMOOOMMZ1+++=---  -   --    --==+=--=---  -- --=1MOOOOOOOOOOOOOOOOOMOOMX11)+))-==+
+++- --+++++++++++++++++++++             ---                                             =+++++++++-+=+=-- --
+'      ''''''''''''''''''''                                                               '''''  '
+.        . ................                                                                 . .
+            = = ==     = =
 OOOOOOMMMOOOOOOOOOOOOOOOOOOOMOOX))1XAAOMOOMMMM1Z)==------ -   - - -=---==---- - -- ---+ZMOOOOOOOOOOOOOOOOOOMMAZZ1+)+)))=
+++++=-   =++++=-+=++++++XX++ =+       - --                                               -+++++++++++-=---+
+'''        '''     ''''''''                                                                 ' ''    '
+...        ..      . ......
+=                      =--=
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)1XMOOOOMOOOOMXZ)+==- -- --  --  --====+=====---    --+ZOOOOOOOOOOOOOOOOOOOOOOMOX1ZZ))))
+X++++++=----=++++++++++XX+++=++-    ---= ----                                           -=++++++++++++==+=-+=- -
+''''''          '''''''''''' ''                                                           ''''''''
+......            .......... ..                                                            . ....
+-=                 ====-H==
+                        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOOOOOOOOOMAXZ1+==--- - ----  - -====++==+------ - --)MOOOOOOOOOOOOOOOOOOOOOOOMMAXXZX1
+XX++++++++++++++++++++XXXX++++++   --=====--                                             -++++++++++++++++=++=+-
+'''''''''''' '''''''''''''''''''                                                           ''''''''''''
+........ .      ...............                                                            ...........
+H-=====         ======----   =                                                                   =
+C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM1Z)=+------  -  ----=++)))+))+== - -- --+XOOOOOOOOOOOOOOOOOOOOOOOOOMMMAAX
+XXX++X++X+++++++++XXXXXXX++++++++=+=-++++===-                                            -++++++++++++++++++++++--
+''''''''''''''''''''''''''''''''                                                           '''''''''''''''''''
+...............................                                                             ...........    .
+---==-==-=========-----H-====                                                                ==    =
+                       C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMZ1)+=--- - --    - -+=)1))11))=---- --  -)MOOOOOOOOOOOOOOOOOOOOOOOOMMMMMA
+XXX+XXXXXXXXXXXXXXXXXXXXXX++++++=+++=+++=+-=                                              -+++++++++++++++++++++--
+''''''''''''''''''''''''''''''                                                             '''''''''''''''''''
+..............................                                                              ........... .. ...
+---=---H---HH-----H-HHH-H-= =                                                                  ==
+       C   CC     C CCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMX1)+-=------ -  -----+)))1Z)1)==--   - --=XOOOOOOOOOOOOOOOOOOOOOOOOOOOMMM
+XXXXX+XXX+XXXXX+X+XXXX+X++++++++++++++++++++                                              -=++++++++++++++++++++++---
+''''''''''''''''''''''''''''''''' '' '' ' '                                                 '''''''''''''''''''
+..............................  .                                                            ..................
+-----=---=-----=-=----=-===                                                                   = =    ==  = =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA1Z+===-- - -   - --=+)1)ZZ)1+=+-- --- ---+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+XXXX++XXXXXXXXXXXXXXXXXXXXX+++++++++++++++++=-                                             =++++++++++++++++++++++++++-
+''''''''''''''''''''''''''''''''''''''''                                                    '''''''''''''''''''''
+................................  .    .                                                     ...................
+---H==----------H----------=  =                                                                 ==  = ===
+   C            C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM1))+==-- -  ------+)111XZZZ)))+=-----  -=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++=--                                            =+++++++++++++++++++++++++++=
+'''''''''''''''''''''''''''''''''''''''''''                                                 '''''''''''''''''''''''''
+........................................                                                     ....................
+HHHH---------HHH-HH--H-H--=== ==                                                               ======== == =
+CCCC         CCC CC  C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXX)))----- -- ----=)1ZZZZX)X11)=------ --==ZOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+XXXXXXXXXXXXXXXXX++XX+++++++++++++++++==                                              -++++++++++++++++++++++++++=
+'''''''''''''''''''''''''''''''''''''''''''                                                   ''''''''''''''''''''  ' '
+........................................ .                                                     .................
+HH---=-----H-----H-HH--==--====     =                                                               = ==== = ==
+CC         C     C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMX11)=== ---- - --=)1XXAAMZXZ)1+=+--   -  -1MOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++=-                                               +++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''                                                    ''''''''''''''''''''''''''
+.........................................                                                     .....................   .
+-H-HH------H--HHHHHHHH---=======     =                                                            =  === =   ==
+ C CC      C  CCCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMZX1)===-----  --=)ZXMMMOMMZ111)=----- --=)1MOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX++XXXXXXXXXXXXXXX+++X+++++++++++++++=-                          -                    ++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''                                                   '''''''''''''''''''''''''
+.........................................                                                      ..................... ...
+HH--H----==H--H-HH--HH----===-= = === ==                                                        ====== == ====
+CC  C      C  C CC  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAXZ1+=--- ----==+1AMOMMMMMXZ1Z)==--- - ---+MOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++=+-                       -                       =+++++++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''                                                     ''''''''''''''''''''''''
+.........................................                                                        .......................
+H--HHH-----HHHHHHHHHHHH----====  === = =                                                         =========== ===    =  =
+C  CCC     CCCCCCCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAX111+++=--=--=)ZZMOMOOOMOAXAM)))+----  --=1MOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX+++++++++++++++---                    - -== -                   =+++++++X++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''                                                   ''''''''''''''''''''''''
+...........................................                                                      .......................
+H-H-HHH-----HHH-HHH---H---=-=--===== =                                                              ===-======== ====
+C C CCC     CCC CCC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXAXX)1)=--- - =-=)1ZOAOOOMMMXZZZ))++=--  ----)AOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++=---                     - ---                      -++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''                                                        ''''''''''''''''''''''
+.........................................                                                          .....................
+-H-H-HHH---H---H-H---------==   = ===                                                               ========= = =
+ C C CCC   C   C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX1))==------1)1ZMOMOOOMOOMAZZ1)++=-- - ---=)XOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXX++XXX+XX++++++++++++++++=---                   - -=- --                    -=++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''                                                         '''''''''''''''''''''
+.........................................                                                          .....................
+-H---H-HH--H---HH-HH-==---=--====== == =                                                              ==== == ==       =
+ C   C CC  C   CC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMZ))+==---=-))ZAMMOOOOOOOOAXZZZ1)==--- -- -=ZMOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX++X+X++++++++++++++=- -                   ==++==--                    =++++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''                            '                          ''''''''''''''''''''''
+..........................................                                                          ....................
+HHHHH-HH-HHHHHH--H---------==-=-==== = =                                                               ==========  ==
+CCCCC CC CCCCCC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAZ++=--=-=ZZXMOOOOOOOOOOMXAZZX1++==-  ---=)ZOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX++X+++X++++X+++++++++++++++-+-                 -=+++=-==-                    -++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''                                                      ''''''''''''''''''''
+..........................................  .                                                       ....................
+H--H-HHHH---H-H-H---==-===-====-===   ==                                                               =========  = =  =
+C  C CCCC   C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAXXZ1+===))ZXAOOOOOOOOOOOOOMMMMAZ1)++==--==+)1MOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXX+XX+++XX++++++++++++++++==-               -==++++++++==                    -+++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''' '''                       '''''                         ''''''''''''''''''''
+.........................................                             ..                            ....................
+HHHH-HH-HHHHHH---------=--===--==== == =                                                              ============ === =
+BCBC CC CCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXX1)++)1ZXMMOOOOOOOOOOOOOOOOMMZ11+==---====)ZAOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXX++XX++X+X+X+++++++++++++=--              -+++++++++=+----                  -++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''                     ''''''                          ''''''''''''''''''''
+.............................................                       ..                               ...................
+HHHHHHH-HHHHHHHHH-HH----==--==-=-=-====    =                         =                                 ========== == ==
+BCBCCCC CCCCCCCCC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXXZ))+)1ZMOOOOOOOOOOOOOOOOOOMOXZ1))===-=--=+1XMOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX+XXXXXXXXXXX+++X+XXX+X+XX+++++++++++++++=----          --+++++++++++==--- -                 ++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''                    ''''''''                           '''''''''''''''''''
+.............................................                     .......                            ...................
+-HH-----=-HHHHH-HH--===-=---=-=--====  = =                           =                                   ===============
+ CC       CCCCC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZ1Z1XMOOOOOOOOOOOOOOOOOOOMOMAZ11+)=-==---=+1XMOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX+++++++++++++++++=--        =+++++++++++++++==- -                   =++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''' '              ' ''''''''''                            '''''''''''''''''
+...............................................                    ......                              .................
+HHH--H--HH--HH---H-H--------==---======== ==                                                            ======== ==== ==
+CCC  C  CC  CC   C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMAXZAMMOOOOOOOOOOOOOOOOOOOMMOMMXZ1))+=--=---=+1XOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+X++X++X+X++++X++++++++++=+-- -       --=++++++++++++++=-  -                   -++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''                 ''''''''''''                           '''''''''''''''''
+............................................                     ....... .                             .................
+HHHHHHHH-----HH-------=-==-==-=-====- == =                                                               ========= ====
+CCCCCCCC     CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMZXMMOOOOOOOOOOOOOOOOOOOOOOOOMMAX11++++==-=-))1XOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXX++XXX+X+XXXXXX+X+++++++++==        ==+++++++++++++++++=----                   -+++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''                '''''''''''''                           ''''''''''''''''
+..............................................                  ...........                             ................
+HHHHHHHHH-HHHHHHH-------==---=-=------=-=====                      ====                                   ======= ======
+CBCBCCCCC CCCBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMAMOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMZZ)+++-==---))1AOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX+++X++XX+X+X+X+X+++++++++++++++=  -   -=++++++++++++++++++=+=---                    -++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''' ''           '''''''''''''''''                           ''''''''''''''''
+.............................................                ...............                             ...............
+HHHHHH--H-H-H------===-==--=-=-=-=-=====                         ==   = ==                                 ===== = ====
+BCCCCC  C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOAMZ))+)=---=-)))XMOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXX+XX+X+XX+X+XXX++++++++++++=- - --+++++++++++++++++++++++++-=- -                  +++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''          ''''''''''''''''''' '                         '''''''''''''''
+............................................. ..            ................                               .............
+HHHH-H-H--H--H-H-H------=--=-=H-=-=---====                        === ==                                     ===== === =
+CCCB C C  C  C C C            C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOMXZ11)=+)++=+)1XMOOOOOOOOOOOOOOO
++=++XXXXXXXXXXXXXXXXXXX+XXX+XXXXXXX++X+++++++++++++-- -=+++++++++++X++++++++++++- ==----                 +++++++++++++++
+'  ''''''''''''''''''''''''''''''''''''''''''''' '      '''''''''''''''''''''  '                          ''''''''''''''
+   ............................................           ..................                              ..............
+   =-----HHHHHH-HHHHH--=---=-------==-=====                  = ====- = ===                                   ======== ==
+         CCCCCC CCCCC
 M)=XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZZ11)=++=+))1AOOOOOOOOOOOOOOO
+    +XXXXXXXXXXXXXXXXXX+XXX++XXXXXXXXXXXX+++++++++==--=+++++++++++++++++++++++++=+===----                -++++++++X+++++
+    '''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''                            '''''''''''''
+    ............................................        ......................                             .............
+     -HHHHHH-HH-HHH----=---==------------===               = ===============                                == ===-=====
+      CCCCCC CC CCC
 A---ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZ1Z1+==+=-+-=+ZMOOOOOOOOOOOOO
+     +XXXXXXXXXXXXXX+X+++X++++XXX++++++++++++++++++==+++++++++++++++++++++++++++==-------                  -++++++++++++
+     ''''''''''''''''''''''''''''''''''''''''''''    '''''''''''''''''''''''''''                             '''''''''''
+     ..........................................        ......................                                ...........
+      --HH--H-H-----=-===-====--- ======= =             =   =================                                    =  = ==
+        CC  C C
 O= -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMAZ)11)===++=ZXMOOOOOOOOOOOO
++    -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++++++++++++++++XXXX++XXX++++++++++++++++++-==+- -                ++++++++++X+
+'     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                            ''''''''''''
+      ...........................................  .............................                             ...........
+      -HHHHHHHHH-H---HHHHH----HH-----==-====== =   =  = ==----==---==== ==                                    ========-=
+       CCCCCCCCC C   CCCCC    CC
 OM+-=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXAZ1)1))+)+==))XOOOOOOOOOOOO
+X    -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+++++++++++++++++++++X+++X++++++++++++++++==+===-                  -++++++X++++
+'     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                             '''''''''''
+.     .........................................................................                               ..........
+H     =HHHHHHHHHHHH-H--HHHH--H----H---=--====       ==========-===-======                                      = ==-===
+C      CCCCCCCCCCCC C  CCCC  C    C
 OOX1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOMMMMZXZ1Z))===--=+AMOOOOOOOOOO
+X+   +XXXXXXXX+XXXXXXXXXXXXXXXXXXXX+X+++++++++++++++++++++++++++++++++++++++++++++=+- ----                    ++++++++++
+''    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '                               '''''''''
+.     ......................................................................                                    ........
+H     --HH----=---H-HHHHHH---------=-========= =    =   ==== =  === ===  =                                       == ==
+C       CC        C CCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMMAZZ1+===-=-=ZZMOOOOOOOOO
+X+--=+XXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++X++++X++++++++++++++++++=++==----  -                 +++++++++
+''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                '''''''''
+..   .........................................................................                                   .......
+-     -HHHHHHHHH=--H-----------H---------=================-====-====== ==                                        =   = =
+       BCCCCCBCC   C           C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMXXZ1+=+-==+=ZXOOOOOOOOO
+X++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++XXX+X++++XXX+XX++XX+X++X++++++++++++++++++++++++==                   =++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                          ''''''''
+............................................................................... .  .                             .......
+H=  =HHHHHHHHHHHHHH-HHHHHHHHHHH-H-H---=-==---=-====---=--==--=-==-===== ==                                        =====
+C    CBCCCCBBCCCBCC CCCCCBCCCCC C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAAZ11++++==1XAOOOOOOOO
+X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++X++XX++X+X++XX+++++++++++++++++++++++++++------                =+++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''                            '''''''
+.................................................................................                                 ......
+- ==-HHHHHHHHHHHHHH-HHH--HH-H--HH-H-HH-------====-==--==-=-==--=========   ===                                     ==  =
+     CBBCCCCCBCCBCC CCC  CC C  CC C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZZ++===-=1ZMOOOOOOO
+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++XXXXXXX+XXXX+++++XX+++++++++++++++++++=++++++=+==--              =++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '                          '''''
+..................................................................................                                 .....
+-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH--=--==-------=----=====--=======  ==  =                                  =   =
+    CCCCBCCCBCCCBBCBCCCCCCBCCCCCCCCCCC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAA1)==+===+ZZAMOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXX++++++++++++++++++++++++++=++++++++---                +++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '                           ''''
+..................................................................................                                   ...
+----HHHHHHHHHHHHHHHHHHHHH-HHHHHHH-HHH------------=-----------============ ===                                         ==
+    CCCBBBCCCCCBCBCCBCCCC BCCCCCC CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAZ+++---=++ZMMOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXX+X+XX++XX++X++++XX++X++++++++++++++++++++++++++++=+++--                ++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                               '''
+.................................................................................  ..                                 ..
+---HHH--HHHH-H-HH-H-------H-HH-H----H-=--=---=-=--==--==-====--==-====  =====
+   CCC  CCCC C CC C       C CC C    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO11)+===-==+MAMOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+X++++++X++++++++++++++++++++++++++++++=+++=---              =++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '                         ''
+.................................................................................   .    .                             .
+--HHHHHHHHHHHHHHHHHHHHHH-HHHHHH--HHH-HH-------------==--=-======-=======  =
+  CCCCCCCCCCCBCBCCCCCBBC CBCCCC  CCC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ1++-=+-+AXMOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXX+XXX++XX+X+++++++++++++++++++++++++++++==--              -=+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''' '  ' '                      '
+..................................................................................  .. .        .
+HHHHHHHHHHHHHHHHHHHHHHH--HHHHHHH--H-------------==--HH---H--=---==--=-=======
+CCCBBBBBCCCBBCBBCCBCCCC  CCBCCCC  C                 CC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZ11)===++A11ZMO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+X++++++++++++++++++++++++++++++=                -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''' '''''' ''
+.................................................................................   .  ..     ...
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH-H-H-HHHH--H--H----=----=-====  =
+BCCBCBBCCCBCCCBCBCBBCCCCCCCBCCCC CCCCCCCCCCCCC C C CCCC  C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZX11)=+MZ))11ZX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX+++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................ ........ . . ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHH-H--H-=-H-H---H---HH-H-----HHHH--H------=-=--====          =        =
+CBCCCBCCCCBBCCCCCBCBCCBCCCC C  C   C C   C   CC C     CCCC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM1))+===-1)1X
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX++++++++++++=+++++++++++++++=---
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''' '
+.................................................................................. .    .. . .  . .
+HHHHHHHHHHHHHHHHHHHHHHHHHH--HH-HH----HHHHH-HHH---HHH-H---H--H--HH----=----== ===
+BBCBCBBCCCCCCCCCBCCCCCCCCC  CC CC    CCCCC CCC   CCC C   C  C  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX1)+==-=++)1
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+X+++++++++++++++++++++++++++++++=--
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '' ''''''''''''''
+..................................................................................      ....  .. . .
+HHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH-HH-HHH-H--H--HH-H-HHH--H-=-H-H-H-H-=-========
+CCBBBCBCCCCCCCCCCCCCCCBCCC CCCCCCC CC CCC C  C  CC C CCC  C   C C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZ+)+=-=+++
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++X+++++++++++++++++++++++++++++++++===
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................     ............ ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-----H-H----HHHHHHHH-HH-H---------=====-====
+CCCBBCCCBBCBBCCCCCCCCCCCCCCCCCCC     C C    CCCCCCCC CC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1)==-===+
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XXXXXXXXXXXXX++X+++++++++++++++++++++++++++++++++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................   .... ....... ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHH--H--------HH---H--HH----H=---=H-----H------==-==
+CCCBCBCBBBBBCCCBBCBCCBCBBCCC  C        CC   C  CC    C     C     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZ1+)+===
+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++=--
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................... .... ............ .
+-H=HHHHHHHHHHHHHHHHH-HHHHHHHHHHH---HH----H---H--HHHHHH-H-HHHH-HHHHH--------======
+ C CCBBCBBBCBBBCBCCC CBCCCCCCCCC   CC    C   C  CCCCCC C CCCC CCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1Z)==-
+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+++++++++++++++++++++++++++++++++=---
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................... .... ..............
+-==--HHHHHHHHHHHHHHHHHH-HHHHHHH--H--HHHH-H-HHHH--HHHHHH----HHH-HHHH-----=--====                  =    ==
+     CCBBBCBBCCCBBCCCBC CCCCCCC  C  CCCC C CCCC  CCCCCC    CCC CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM1))++=
+X++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX++++++++++++++++++++++++++++++++++++=-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................................................................
+-====--HHHHHHHHHHHHHHHHHHHHH-HH-HHH--HHH---H-H--HH-HHH-H-H----HHH-HH=-----====== = =    ==  = ==      = =
+       BCBBBBCBCCCBCBBCCCCCC CC CCC  CCC   C C  CC CCC C C    CCC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAXZ)=-
+X+++++++XXXXXXXXXXXX+++X++++XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXX+++++++++++++++++++++++++++++++++++=-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................................................................... .
+-=  ====H---HH------===-====-------=---H------H-H----H-HHH----H--H-=-H------====  = = =   =  = =  = ==
+        C   CC                         C      C C    C CCC    C  C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAA1+)
+XX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++=-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................................................................
+--==  ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-HHH-H-HH---------==    =            = =  ===  ==
+          CBCBBCCCCBCBBCCCCCCBCCBCCBCCCCCCCCCCCCCCCCCCC CCC CCC C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX1+
+XXX++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXX+XXXX++++++++++++++++++++++++++++++++++++=-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......  ......................................................................................................
+HH-=     ==-HHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-H-HHHH---HHHHH-HHHHHH-=--=---=----===    =       =  ====  ===   =
+CC          CCCCBCCCBBBCCBCCCCCCBCCCCC CCB C CCCC   CCCCC CCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ
+XX+++++=+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++++++++++++++++++++++++++++++++=-
+''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......   ........................................................................................................
+--====    =-HHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHH-HHHHHHHHHHHHHHHHHH---H-H-H---=-====    =  = ==   = =====   = = ==
+            CCBCCCCCCCBCCCCCCCCCB BCCCCCCCCC CCCCCCCCCBCCCCCCBC   C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA
++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++=-
+''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......  .........................................................................................................
+====      =-HHH-HHHHHHH--HHH-HHHHHHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHH-HHH--------===== = ==     = =  === == =====  =
+            CCC CCCCCCC  CCC CCCCCCCCCCC C CCCCCCCCBCCBCCCCCCCCCC CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++=-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................................................. .
+-==     =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHH-H-HH-H-HH-----=== ==== == =  ===   =========  = =
+           CCBBBBBCBCCCCCCCCCCCCCCBCCCCBCCCCBCC CCCCBCCCCCCCCCB C CC C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++++++++++++++++++++++++++++++++++++++==
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................................................................. .
+-= = ===-HHHHHHHHHHHHHHHHHH-HHHHHH-HHHHHHHHHHHHHHHHHHHHHHH-H-H-HH---H-H----=-=-== === =    ======= ===== =======
+         CCBBCCBCBCCCCCBCCC CCCCCC CCCCCCCCCCCCCCBCCBCBCCC C C CC   C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X++++++++++++++++++X++XX++X++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................................
+-=  ==-HHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHH--H----H- ==-==   =   = =======-==--==-====   =
+       CBBBCBBBCCBCCBCCC CBBCCCBCCCBCCCCCCCCBCCCCCCCCCBCBCCC  CCCCC  C    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................................................... .
+-     =-HHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHH-HHH---HHH--HHHHH-H--HHHHHH---HH--H--=====   ===  =  ============= = ====
+        CCBCBCCCCCCCBBCCCCCCCCCC C CCCCCC CCC   CCC  CCCCC C  CCCCCC   CC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXXXXXXXXX+XXX+X+XXXXX+XXX+++++++++++++++++++++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+... ..................................................................................................................
+==     --HHHHHHHHHHHHHHHHH---H-H-H-------=--=----------=---=-=-----=---=========  == =     ===  ============  == == =
+         CBBBCBBCCCCCCCCCC   C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++XXXXX+++X+++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..... ..................................................................................................................
+==  =   ==HHHHHHHHHHHHHHHHHHHH-HHHHHHHHH--HHHH-H-HHHHHHHH-H-HHHHHHH--HHHH---------== = =============-----===-======= =
+          CBCBBCBCCCCBCCBCCCCC CBCCCCCCC  CCCC C CCCCCCCC C CCCCCCC  CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++++++++++X+XXX++++X+++++++++++
+''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....   ................................................................................................................
+--       ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHH-HHHHHHHHHHH----H---=-====== ===========-=---====-======== =
+           CCBBBBBBCBBBBCCCBCCCBCBCCCCCCBCCC CCCBCBCCCBCCCC CCCCCCCCCCC    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++=++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+++++++++++++++++X+++XXXX++X+++++++++++++
+''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......    ..............................................................................................................
+====        =-HHHHHH-HHHHH-H--H-HH---HHHH----H-HHHHH-HH-H-----H-HH-H-------==--======== == = ===-===----==-= ==========
+              CCBCBC CCCCC C  C CC   CCCC    C CCCCC CC C     C CC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++XXX+XXXXXXXXXX++X+++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....... . ..............................................................................................................
+-H--==       =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H---H-----======  ======---=----------==-=======
+ C             CBBBBBBBCBBCCBBCCCCCCCCBCCCBCCCCBCCCCBCCCCCBCCCBCBBCCCCC C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++X+XXXXXXXX+XX+XXXXX+++X+X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+H----        ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHH-HH----======  = ===-=--------=--=-----===-=-
+C                BBBBCCCCCCCCCBBCCCBCCCCCCCCCCCBCCCCBBCCCBC CCCCCCBCBBCCCCC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++X+XX++X+XXXXXXXXXXX+XX+X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......... .............................................................................................................
+HHHH--  =     = =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHH-H--========= ======-=--==-=-H-----H---=--=-
+BBBC             CCCCBBBBBCCCCCCCCBBCCCBBCCCCBCCCCCCCC CCCCCCCCCCCCCCBBBCCCC C                           C     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+++++=++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+++++++X+XXXXXXXXXXXXXXXXXXXXXX+XX
+''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........   ...........................................................................................................
+HHHHHH== =    ====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHH---HH-----==-=======-=--------H--H-H--H-H---=--
+BBBCBC             CBBCBCBBCBCBCCCCBCBBBCCCCCCCCCCCCCBCCBCCCCCCBCCCC  CCC   CC                         C  C C  C C
+  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++X+XXXXXXXXXXXXXXXXXXXXX+
+'''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........   ..........................................................................................................
+HHHHHH-==       = =-HHHHHHHHHHHHHHHHHHHHHHHHHH----H-HHHHHHHHHHHHHH-HHHHH-H-----H---======== ====-=----H---H------------=
+BBBBBB              CBBBBBBBCCCBBCBCBCBCBCCCCC    C CCBCCBCCCCCCCB CCCCC C     C                      C   C
+ V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX+++++=++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++X++++++++X+XXXXXXXXXXXXXXXXXXXXX
+'''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........   ..........................................................................................................
+HHHHHHHH==        ==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH-HHHH---=--==-== =====-=-------HH-H------H---
+BBBBBBCC              BBBBCCCBCCCCBCBCCCCCCBBCCBCCCCCCCCCCBBCCCBCCBC CCCCCC CCCC                          CC C      C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+X+++++XXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........... . ..........................................................................................................
+HHHHHHH-===      =====HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-------=-=-=-=====------H-HH-H----H---H-
+BBBBBCC               CCBBBBCCBBCBCCCBBBBCCCBBCCBCBBCBBBBBCCCCCCCCCCCCCCCBCCCC C                        C CC C    C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+++XXXX+X++XXX+XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHH---=== ==       =---HHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--H----=--===----=-==---=--H--H--------H-
+CCCCCC                    CBBBCBCBCCB CBCCBCCBCCCCCCCBBCBCBBBCCCCCBBCBCCCBBCC C  C                        C  C        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXX+XXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+H-HH-------======  =  = =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----=-HH--H--=-HH-HHHHHHHH--HHHHH
+C CC                       CCCCBBBBBBCCCCCCCCCCBCCBBCBCBCBBCCCCBCCCCCBCCCCCBCCCCBCCCCCC      CC  C    CC CCCCCCCC  CCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXX++XXXX++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=-----==---H====== =       =HHHHHHHHHHHHHHHHHHHH--HHHHHHHH--HHHHH--H-=--HHHHHHHHHH--HHH--H----H-====--------H---H-HH----
+           C                CCBBBCCCCCCCCCCCCCCC  CCCCCCCC  CCCCC  C    CCCBCCCCCC  CCC  C    C             C   C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXX+XXXXXX++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................   .............................................................................................
+= = =---=-HH--H======       =HHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-------------HH---H-HHH-H-H
+          CC  C              CBBBCCCCCCCCCCCC BCCCCCCCCCCCCCCBBBCCCCCCCCCBCCCCCCCCCCCCCCCC CC             CC   C CCC C C
 OMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+- -=+++++XXXXXXXXXX+X++++=+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+    ''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    ....................    ............................................................................................
+    =====------H---=-==     =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-------H--------H-H-H-HH-HHHHH--
+               C              BBBBCBBBCCCBBCCBCCCCBCCCCBBCBBBCCCBCCCCCCCCBBCCCCCBCCC C C       C        C C C CC CCCCC
 ZZZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    ++++++++++XXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ..................... .............................................................................................
+     =========H-HHHHH---==   =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHH-HHHHHHHHHHHH------H-------HH-HHHHHH-HHHHH
+              C CCCCC         CBCCBBCCCBCCCCBBBBCBCBBBBCBBBCCCBCC CCCCCCCCCCBC CBCCCCCCCCCC      C       CC CCCCCC CCCCC
 )+)1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -+++++++++XXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX
+     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ...................................................................................................................
+     ======   --HHHHHHHH--= ====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHH--HH-H---=----H--HHHHHHHHHHHH
+                BBBBBCCC         CBBBCCCCCCBCBCCCBBCCCCCCBCCCCBCCCBCCCCCCCCCCC CCBCCCBCCCCC  CC C        C  CCCCCCCCCCCB
+                  V
 )==1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -+++++++++++XXXXXXXXXXXX+++-=+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+     ''''''' '''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ......  .................   .......................................................................................
+      =====    =-HHHHHHHHH--==   =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH-HHHHHHHHHHH--H-H------H---HH-HHHHHHHH
+                 CBBBBBBCC         CBBBCCCCCCBCCBCBBCCBCBCCBBCCBCCBCCCCCCCC CCCCCC CCCCBCCCCCC  C C      C   CC CCCCCCCC
+                     VV
 +==ZOOOOOOOOOOOOOOOOOOOOOOOOOOOZ==OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -+++++++++++++XXXXXXXXXX++-   +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+XXXX+++++XXX+++X++++++XXXX++XXXX+XX
+     ''''''''  '''''''''''''''     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     .......   ..............      .....................................................................................
+      === =      =-HHHHHHHH-=      -HHH-HH-----HH---HH------H-----H--HHH--H-=--H-HH-=--H-=====---===-======----==----=--
+                   CCBCCBBC         CCC CC     CC   CC      C     C  CCC  C    C CC    C
 Z1XMOOOOOOOOOOOOOOOOOOOOOOOOOOM1+=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    +++XXX++++=+++XXXXXXXXXXX+     +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+     ''''''''' '''''''''''''''     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     .........  ..............     .....................................................................................
+      =---=     ==-HHHHHHHHHH      =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHH--HH------H---H--H-HH-HHHHHH-HH
+                   CBBBBBBBBB       CCCCCBBBCBCCBBCCBCCCCBCCBCCCCCBBCCBBCCBCCCCC CCCCCCCC  CC      C   C  C CC CCCCCC BB
+                      V   V
 OAOOOOOOOOOOOOOOOOOOOOOOOOOOOOO111MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+- --+++++++++++++++XXXXXXXXXXX+    +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+    ''''''''''''''''''''''''''      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    ........... ..............      ....................................................................................
+     =========   ==-HHHHHHHHH-      -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHH-HHH--H-H-H----HH---HHH-HH-HHHH
+                    CBBBBBBBB        BCBCCCCCCBBCCBCCCBCCCCCCCCCCBBC  CBCCCCCCCCCCCCCCCCC CCC  C C C    CC   CCC CC CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++-=+++XXX+X+++++++XXXXXXXXXXXXX+=-++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'   ''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ...........................   .....................................................................................
+     =---=-=== = =-HHHHHHHHHHHH=   =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--HHHHHHHHHHHH--HHHH-H-HHH--H-HHHH-HHH-HHHHH
+                   CBBBBBBBBBBC     CCBBBCCCCBBBCCBCCCCCCCBCCBBBBCCCCCCBBC C  CCCCCCCCCCCC  CCCC C CCC  C CCCC CCC CCBCC
+                         V
 OOMXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++-    +XXXXXXX+XXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.     ..................................................................................................................
+      =HH-HH--=--HHHHHHHHHHHHHHHH=-HHHHHHHHHHHH-HHH-HH-HHH-HHHHHHHH-HHHHHH-H-HH-H---H-HHHH-HH----H------------H-----HH-H
+       CC CC     CCCBBCBBCBCBCBCC  CBBBBBCCCCCC CCC CC BCC CCCCCCCC CCCCCC C CC C   C CCCC CC    C            C     CC C
 OA1111OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++     -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       .................................................................................................................
+       =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-HHHHHH-HHHHH-H-HHHHHH-H--HH---HH--H-HH--HHHHHHH-HH
+        BBBBBBBBBBBBBBBBBCBBCBCCCCBBCBCCCBCCCCBCCCCBCCCBCCCCCCC CCCCC CCCCCC CCCCC C CCCCCC C  CC   CC  C CC  CCCCCCC CC
+                 V VVVV
 OZ1ZXZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++      +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       .................................................................................................................
+       =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-HHHHHHHHHHH-HHH-HHHHHHHH---H-HHH-HHH-HH-HH--H-HH-H-H
+        CBBBBBBBBBBBBBBBBBCCBBBBBBCBCCBBBCBCBCCBCCBCBCCCBCCBBCC C C CCCBCCCCCCC CCC CCCCCCCC   C CCC CCC CC CC  C CC C C
+         V VV V  V
 OX1)XXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++      +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.       ................................................................................................................
+        HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH-H--HHHHH-H--H-H-HHH-H-HHH-HHHH--HH--HHH
+        CBBBBBBBBBBBBBBBBBBBBCBBBBCCCBCCBBCBCCBCCCCCCBCCCBBCCCCCCCBCCCCBC CCCCCC C  CCCCC C  C C CCC C CCC CCCC  CC  CCC
+          VVVVVVVVVVVVV
 OOX1Z1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++     =+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.       ................................................................................................................
+=        HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-H-HHH-HHHHHHHHHHHHH-H-HHHH-HHH--HHH-H
+         CBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCBBBCCBCBCBCCCBCCBCCCBBCCCCCCCCCCCCCCC CC C CCC CCCCCCCCCCCCC C CCCC CCC  CCC C
+           VVVVV VVVVVVVVVV
+            A A     A AAAA
 OOOOAXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++-   =-++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...       ..............................................................................................................
+==         -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH-HHH-HHHHH------HHH-HH-H
+            BBBBBBBBBBBBBBBBBBCBBCBBBBCCBCCCCBCBBCBCCBCCBCCCCCBCCCCCCCCCCCCCBCCBBCCCCBBCCCC CCCC CCC CCCCC      CCC CC C
+             VVVVVV VVVVVVVVV
+              A          AA
 OOOOOMOMMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++- -   -++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....        ............................................................................................................
+-==         =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHH-HHHHHH--HHHHHHHHH-HHHHHH-HHHHHHHHHHHHHHH-H--H-H-HHH-H
+             BBBBBBBBBBBBBBBBBBBCBBCBBCBBBCCBBBBBCCCCCBCC BCCCCBCB CCCBCC  CCCCCBCCC CCCCCC CCCCCBBBCCCBCCC C  C C CCC C
+              VVVVVVVVVVVVVVV
+               A
 OOOOOAXXZ+)ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X++        +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....          ..........................................................................................................
+==-=          HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH--H-HHHHHHHH-HHHH-----H-----H-
+              CBBBBBBBBBBBBBBBBBBBBBCBBCBBCBBBBCBBBCCCCCCCCCCBCCCBCCCCCCCCCCCBCCCBCBC CCCC  C CCCBCBCC CCCC     C     C
+               VVVVVVV    VVVVV
 OOOOOOX)++))1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++-        +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....          .........................................................................................................
+====           HHHHHHHHHHHHHHHHHHHHHH---H------HHHHHHHH-HH-H-HH-HHHHHHHHHHHHHHH-HH-----HH-HHHHHH-HHHHHHHH--HH--HH--H--HH
+               CBBBBBBCCCBBBBCCCCCCCC   C      CCCCCCCC CC C CC CCCBCCCCCCBBBCC CC     CC CCCBCC CBCCCCCC  CC  CC  C  CC
+                VVV       V
 OOOOOOOM)-+1)1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X+++++        +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......        .........................................................................................................
+=-====          HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHH-HHHHHHHHHHHHHHHH--H-HHHHHHHH-HHHHH---H-HH-H--HH--
+                CBBBBCCBBBBBBBBBBBBBCBBCCCBCCCBCCBCBCBCCBCCCCB CC CCCC CCCCCBCCCBCCCCCC  C CCCCCCCC CCCCC   C CC C  CC
+                  VV   VVVVVV    V
 OOOOOOOOO)))11MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++-      ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........        ........................................................................................................
+=======         =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHH-HH--HHHHHHHHHHHHHHHHHHHH-HH--HH-H--
+                 CBBBBBBBBBBBBBBBBBBBCCCCCBCCCCBCBBBBCBCCCBCCBCCCCCCC CCCCCCCCCCCCCC CC  CCCCCCBCCCCCCCBCCCCC CC  CC C
+                      V V V V VVVVV
 OOOOOOOOOOX11AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++-    =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........      .........................................................................................................
+== =====        =--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHH
+                   CBBCBBBBBBBBBBBBBBBBCBCBBBBCCBCBBBBCBBBCBBBBCBCCCBBCCCCCBBCBBCCCCCBCCCCCCCCCCCCBCCCBCC CCCCCCCCCCCCCC
+                          VVV  VVVVVV
+                                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++---+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........    .........................................................................................................
+== = = =       ====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHHHHHHHHHHHH-HH-H-HH-
+                    BBBBBBBBBBBBBBBBBBBBCCCCBBBCCCBBBBCCBBBBBBCBBCBCCBCCBCCBCCCCBCBCCCCCCCCC CC CCCBCCCCCBCCCCC CC C CB
+                       VVVVVVVVVVVVVVVV
+                          AA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............. ..........................................................................................................
+=====  = ===      =-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H--H-H---H-HH-HHH-HHHHHHHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHH-HH-HHHH
+                     CBBBBBBBBBBBBBBBBBBBBBBBCBCCCCCBCC  C  C C   C CC CCC CCCCCCCCCCCC C CCCCCCCBCCCCCBBBCCCCCC CC CCCC
+                      VVVVVVVVVVVVVVV VVV
+                       AAAA  A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+======= ===== =  ====HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH-HHHHHHHHHHHHHHHHHHHHH-HH-H-HHHH
+                     CBBBBBBBBBBBBBBBBBBBBBBCBBCCCCBBCBBCCBCCCCCCCCCCCCCCCBBBBBCCCC BBCC BCCCCCCCCCCCCCCCCCCCC CC C CCCC
+                      VVVVVVVVVVVVVVVVVVV
+                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+===   =  ===== =  =-HHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHH
+                    CBBBBBBBBBBBBBBBBBBBBBBBC  BCBCCCCBBCCBCCCCCCCCCCBCCBBBBBCBBCCCCCCCCCCCCCCCCCCCCBCCCCCCCC CCCCCCCCCC
+                       VVVV  VV  VV VVV VVV
+                                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++X+++++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+======= -=====-==-HHHHHHHHHHHHHHHHHHHHHHHHHH- =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHH-HHHHHHHHHHHHHHHH
+                  CBBBBBBBBBBBBBBBBBBBBBBBBB    CBBBBCBBBCBBCCCCCCCCCCBBCCBBCBCCBBCCCBCCCBC BCCCBBBCBCB CCCCCCCCCCCCCCCC
+                     VVVVVVVVVVVVVVVVVV VVV
+                       AA A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++X++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+======-==========HHHHHHHHHHHHHHHHHHHHHHHHHH======-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                 CBBBBBBBBBBBBBBCBBBBBBBBBC       CBBBBBBCCCBBBBCBBBBBBCBBCCCBCCBBCCCBCCBBBCCCBCCCCCBCCBCCCBCCCCBCCCBCCC
+                    VVVVVVVVV     VVVVVVVV
+                        A AAA      A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXX++++=++++XXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........   ..........................................................................................................
+=====---==     ==-HHHHHHHHHHHHHH-HHHHHHHHH=====  =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                  CBBBBBBBBBBBCC BBBBBBBBC         CCBCBCBBCBCBCBCBCBBBBBCCBCBBCCCBCCBCCBCBCCCCBCBBBCBBCBCCBCCCBCBBBCCCB
+                   VVVVVVVVVV     VVVVVV
+                    A    A             A
 OOOOOOOOOOMZ1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X+++XXX++     -+++XXXXXXXXXXXXXXXXXXXXXXX+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........        .......................................................................................................
+=-===---=         =HHHHHHHHHHHHHHHHHHHHHH-===========-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                   BBBBBBBBBBBCCBBBBBBBBC             BCBBCBBBCCBBBCBCCCCCBCCBCCCBBBCBCBBBCCCBBBCCCBCBBBBBCCCCCBCCCCCCCC
+                    VVVVVVV  V   VVVVVV
+                     AAAA
 OOOOOOOOOX)+-----=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++XXXX+          =XXXXXXXXXXXXXXXXXXXX+++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........            ...............................  ...................................................................
+--==----            -HHHHHHHHHHHHHHHHHH-===========    -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                     BBBBBCBBCBBBBBBBBB                 CBBCBBBBBCCBBBCBCBBBCBBBBCCCCBCBCBBCCCBCCBCCCCCCCCBBBCCCCCCCBCCC
+                     VVVV      VVVVVVV
+                       A
 OOOOOOOOO1=---     =MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++X+-            +XXXXXXXXXXXXXXXX+X+++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........             ...................................................................................................
+======-=             =HHHHHH-HHHHHHHH-=-=    == = =    ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH--HHHHHHHHHHHH-HHHHH-HH-
+                      BBBBBB CBBBBBBB                     CBCCCBCCCBBCBBCCCCCCCCCBCCCCCCCCCC CCC  CCCCCBCCCCCC CCCCC CC
+                       V  V    VVVVV
+                                A
 OOOOOOOOOZ+--       -XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X+++XX=             +XXXXXXXXXXXXXX+++++X+++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........              ..................................................................................................
+==-===--               HHHHHHHHHHHHH-=====-===       =  ==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHH-
+                       BBBBBBBBBBBBB                       CBBBBBBBCBBBBCCCBCBBCCCBCBCCCCCCCCCCBCCCC CCCBCBBCCCCCCCCCCC
+                        VVVV  VVVVV
+                               A A
 OOOOOOOOOM)=         -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++              +XXXXXXXXXXX+XX+++++X+++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''              '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........              .................................................................................................
+========               =HHHHHHHHHH-=--=====-==      ===   ===HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                        BBBBBBBBBB                           BCBBBBBBCBBBCCCBBBBBBBCBCCCBCBBBCBCCCBBBCCCBCCBCCCCCCCBCCCC
+                         VV VVVVV                                 V
+                            AA A
 OOOOOOOOOO1--          XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++X++-              +XXXXXXXXX++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........               ................................................................................................
+ =====-==               =HHHHHHHH-== ======  =  === = ===    =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HH
+                         BBBBBBBC                              BBBBCCBCBBBBCBBBBBBBBCBBBBCBCCBCCCCCBBCCCBCCCCCCCCB CC CC
+                          VVVVVV
+                             AA
 OOOOOOOOOOZ+-          -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++=               XXXXXXXX++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........                ...............................................................................................
+========                 -HHHHHH-================ == ==========-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHH
+                          BBBBBC                                CBBBBBBBBCBCBBBBBBCBBCBBCBBBCBBCBCCCC CCCCCBCCCCCBBCCCCC
+                           VVV                                    VV
+                            A
 OOOOOOOOOOX1+-=         -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++-               -+XXX+X+++X+++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........                  ..............................................................................................
+=======                   =HH-=-===-=====    == === =============HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                           BB                                    CBBBBBBBBBBBBBBBBBBBBCBCCBBCBBBCBBBBCCBCCCCCBBCCBCBBBCC
+                                                                   V V
 OOOOOOOOOMXZ1)++)=     - =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X+++++=                 +XXX+++XXX+++++++++++++++++X++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''                   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........                   .............................................................................................
+==-====                    ---===---=== = == =  =====-====== ==  =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                                   CBBBBBBBBBBCBBBBBBBBCBBCBCBCBBCBCBCBCCCCBBBCBBCCBCCCB
+                                                                         V   V V                  V
 OOOOOOOOOOAAZXAOOO1-      1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+++X+++-     -==         +XXXXXX++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''                   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........                   .............................................................................................
+--== -=                    =------ = =  =====  = ==== ======= ======HHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHH-HH-
+                                                                    BCBBBBBCBBBBBBCBBCBBBBCC CBBBCBCBBCCBBCCBCCBCCCC CC
+                                                                       V      V
 OOOOOOOOOOMXXMOOOOO)      -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX++++++=    =++++        +XXXX+++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''      '''          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........      ...          ............................................................................................
+---===          =           -H--======== =========== = ========== ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                             C                                        BBBBBCBBBBBBBBBBBCCCCBCCCCCBCCCCCBCBCCCCCCBCCCCBBC
+                                                                             V
 OOOOOOOOOOOOOOOOOOOO)-    -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX++++++++++++++       -+X+X++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............. .....         ............................................................................................
+-HH---===     =====         =-=-===== =========== =========== =  =====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+ CC                                                                    CBCBBBBCBBCCBBBBBCCBCCBBCCCBCCCCBCCCCCBCCBCCCBCBC
+                                                                             V
 OOOOOOOOOOOOOOOOOOOOO) - --XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX++++++++++X+++       +++X+++++XX++X+X++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................        ............................................................................................
+-----H-====== ===-==        = =-=====--==-=-========================= ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+     C                                                                  BBCBBBCCBBCCBBBCCBBBBBCCBBBCBCCBBBCBBCCCCCCCCCCC
 OOOOOOOOOOOOOOOOOOOOOM=---=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXXX++++++++++++       +++X+++++X+X+X++++X+++XX++X++++++++XXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................        ...........................................................................................
+=====HHH-= ==  ======        ==-=====-=-=-====-===--==-========------===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+     CCC                                                                 BBBBBBBBCBBBBBBCBCCCBBBBCCCBCCCBCCCCCCCCCBBCCCC
+                                                                             V
 OOOOOOOOOOOOOOOOOOOOOOX+=-=)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++XXXX+++++++++X+      =+XX+++X++XXXX+X+XXXXX++X++++XX+++X+XXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............... ......       ...........................................................................................
+===   =HH--=     ===-         --===-==----=-=-----==-====--===-=--------=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+       CC                                                                 CCBCBBCBBBBBBBBCBBBBBBCBBBBBCBCCBBCCCCBBCCBCCC
 OOOOMMOOOOOOOOOOOOOOOOO))+=)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++-  -+XXX++++++++X++-      +++XX+X+XXX+XXXXXX+XXXXXX+XXX+X+XXXXXXXX+XX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''    '''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..     ......    .....       ...........................................................................................
+==      HH-=      =-==        ==--=-=---=---H--=------=---=-=------H-=--==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+        CB                                  C                      C      CCBBBBBBCBBBBBBBCBBCBBCCBBBBBBCCBBBCBBCCBCCCBB
+                                                                                   V       V
 OOOX11)AOOOOOOOOOOOOOOOX)++)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++-     +XXX+++++++++++      ++X++X+XX++X++++XXX+XXXXXXX++XX+XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''      ''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..      ..... .  .....        ..........................................................................................
+==       HH-       ===        =-==-=--==-====---=-------==--=----=---------HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+         CC                                                                BBBBBBBBBBBBBBBBCBCCCBCCBCBBCCBBCCBCBCBBBBCBC
+                                                                            VV V  VV   V
 OOO)+)ZZOOOOOOOOOOOOOOOA))=++MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+-     =+XX+++++++++++       +++XX+++++++++++++X++++XXXX+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''       '''''' '''''''       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..       ......   ....         .........................................................................................
+-=       =HH==     = =         ==--=============-====----=-=-=--H-HH--H-H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+          CC                                                    C CC  C C  CCBBBBBBBCBBBBBBCBBBBBBBBBBBBBCBCBBBBCBCBBBCB
+                                                                              V V            V
 OOOX)1)ZOOOOOOOOOOOOOOOM)++=+1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++     =+XXX++++++++++       -++++XXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''      '''''''' '''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...      ......    ....          .......................................................................................
+==        HHH=      = =           =-------=====---------HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+          CBC                                           CCCBCCCCC CCCBCBBCBCBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCBBBBCBBCCBCCBC
+                                                                               V     VVVV
 OOOOMAXOOOOOOOOOOOOOOOOM1+))))MMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++   -++XXX++++=+++++          -++XX+XXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''     '''''''''  ''''           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...     ........     .            ......................................................................................
+==       =HHH=                     =--=---------=-=-----HHHHHHHHHH-HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+          CCC                                           CCCBCCBCCC CC CCCCCCCBBBBBBBBBBBBBBBBBBBBCBBBBBBBCCBCBBCCCBCBCCC
+                                                                               V  V       V V  V
 OOOOOOOOOOOOOOOOOOOOOOOOZ1)))+1ZXXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++XXXXX+++==++++=           =+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''   '''''''''   ''              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....   ........                    ....................................................................................
+===     =--H-H==                     == =====------H--HH----HHHHHHHHHHH-HH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+           C C                                     C  CC    CCCBBCCCCCC CC  BBBBBBBBBBBBBCBBBBBBCBCBBBBBBCBCCBBBBCCBBBCC
+                                                                              V V VV
 OOOOOOOOOOOOOOOOOOOOOOOOO1)1Z11ZZZZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX++++++++XXXX+++++++++-           -++++++++++++XXXXXXX+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''                   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................                    ...................................................................................
+H--==    ==-HH-=                        = ==  ===-------=-==H-----H-HH---H---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+C           CC                                              C     C CC   C   BBBBBBBBBBBBBBBBBBBBBBCBCBCBCCBBBBCBCCCCBBC
+                                                                                            V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOMAXXA11)ZXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX++++++++XXX++++++++++            =++X+XXXXXXXXXX++X+X+XXXXXXX+XXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''' ''''''''''''''''             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...... . .........     .              ..................................................................................
+HH-- = =   =-HH==                      =-=-----HH---==-=-=-------=--------===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BC           CC                                CC                             BBBBBBBBBBBBBBBBBCBBBBBCBBCBBCBBCBBCCCCBBB
+                                                                              VVVV VV V VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOMAMAZ))1XMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+++++++++XXX+++++++++==           +++XX+XXXXXXXXX+XXX++X+++X+XXXX+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''' '''''''''' '''''              '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........  .........   .                .................................................................................
+HHH-==     ==---=                       =--=---------=---==-===-=----======= =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBB                                                                           BBBBBBBBBCBBBCBBBBCBBBBCBBBCBBBCBBBBCCBBCC
+                                                                                  V V             V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZZ11XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++++++++XXX++++++++++=--       +++++++XX+X+X+++XXXXXXX++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''' ''''''''''''  ''''           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........   ........    ..              .................................................................................
+HHHH-===   ===HH-=                     =====--=-=-===-------=  ============ ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHH-
+CBBB          CC                                                              CBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCBC  CCBC
+                                                                                 VVV    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZXXXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+++++++++XX++++++++++++-       ++++XXXXX+++++++++XX++++++XX+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''  ' '            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........    ........                  .................................................................................
+--HHH-==     ==--==                      -----=========--======--======  == = -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  CCC                                                                          BBBBBBBBBBBBBBBBBBBBBBBCBCBBBBCCCCCCBBCCC
+                                                                                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXX+++++++++X+X++=++++++++   -++++++++++XX+XXXXXXX++++++++++++++++X+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''' ''''''''   '''''       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........  .......       ..         ......................................  ..........................................
+=-HHHH-==     ==-=-                       ==--=--H----==  ===== == ===-====   -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  CCBB                                           C                             BBBBBBBBBBBBBBBBBBBBBBBCBBCBBCBCCCCBBBBBB
+                                                                                V  VVVV  VVVV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXX+++++++++++++++++++++++ --+++++++++++++++++X++X+X++X+++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''  ''''''''  '''''''    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........   .......   ......     .....................................................................................
+==-HHHH-=     =====         ==      ==== == = =====-==-=-==-=== == == = =  =  =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+   CCCC                                                                        BBBBBBBBBBBBBBCBBBBBBBBBBBBCCCCCBBCCBBBCB
+                                                                                VV   V    V     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXXXX++++++++X++++++++++++++++++XXXXX+X+++++X++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''  '''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............   .......   .. .... ..........................................  ...........................................
+= =-HHHHH==    ==-==         =     =-----=-=====-====== = ===========          HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    CCBBC                                                                      CBBBBBBBBBBBBBBBBBBBCCBBCBBCBCBBBBBBBCBBB
+                                                                                        V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXX++++++++++++++=+++++++++++XXXXXX++XXXXXX+X++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''' '''''''' '     '''''''''''''''''''''''''''''''''''''''''''''  '  '''''''''''''''''''''''''''''''''''''''''
+............   .......         ..........................................   .  .........................................
+= ==--HHH-==     ====            ===-HH---==------=-=== === == ==  ====        =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+      CCC                            CC                                         BBBBBBBBBBBCBBBBBBBCBBBBBBBBCBBCCCBCCBCC
+                                                                                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++XXXXX+++=+++++++++++===++++++++XXXX++++++XX++X+X+X++X++++++++++++++++++= +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''  '''''''        ''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''
+..............  .......         ...........................................    .........................................
+======HHHHH=    ======           ====-H--==  ==--==-=-=-==-=           = =      HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+      CCCCC                           C                                         CBBBBBBBBBBBBBBBCBBBBBBBBBBBCBBBBCCBCCBB
+                                                                                  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++XXXXXX+++++++X++++++=-==+++++++XXXX+++++++++++++++++++++++++++++++++++++=+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''  ''''''''       ''''''''''''''''''''''''''''''''''''''''''' ''  '''''''''''''''''''''''''''''''''''''''''
+..............   .......        .................................... ..        .........................................
+======HHHHH-=    = -===            ==-HH-= = == ==   ==============            =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+      CCBCC                           CC                                         BBBBBBBBBBBBBBBCBBCBBBBBBBCBBBBCBCBCCBB
+                                                                                  V  VV    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++XXXXXXX+++++++XX++++=-=-+++++++XXXX+++++++XX++++++++++++++++++++++++=====+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''  '''''''''      '''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''
+ ..............  ........       .......................................         ........................................
+   = =--HHH--     ==H-=         =   =----=   ===--==== =   === = === =          -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+        BCC         C                                                            BBBBBBBBBBBCCBBBCBBBBBBBBBBCBBCBBCBCBCB
+                                                                                   VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++XXXXX++++++++X++++==++++++++++++++++++++++XX++++++++++++++++++++++++++--+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''     ' ''' '''''''' ''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''
+............... . .......       ..   ......   ........................  . .     ........................................
+== =====-HHH-==   ===-=         ==    ====     ===-- == ===    =                =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+         CBC                                                                     CBBBBBBBBCCCBBBBBCBBBBBBCCBBCBBBCCBBCBC
+                                                                                       V            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++XXXXX++++++++XX++++=+++++++=+++++++++++++++++++++XXXX+++++++++==+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''   '''''' '''''''''''''''''''''''''''''''''      ' '' ''''''''''''''''''''''''''''''''''''''''
+................  ........     ...   .............................         . .  ........................................
+========-HHH-=     ==--=         =    =====       =======-H--                   =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+         CCB                                              C                      CBBBBBBCBBBBBBBBBBBBBBBBBBBBCCBCCCBCCBC
+                                                                                         VV V V  V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZZOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++XXXXX++++++++XX++++==++++++=++++++++++++++++++XXXXXXX++  +++++++++++=+= +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''  '''''''''   '''''  ''''''''''''''''''''''''''   '''''''''      '''''''''''''''''''''''''''''''''''''''
+................   .......     ....  ............ ............    .......        .......................................
+===== ==--H--=      =--==       ==    ======   =    ==-HHHHHH=    =              -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+          C                                            CBBBBB                     BBBBBCBBBBBBBBBBBBBBBBBCBBBCBCBCCCBCBB
+                                                         VV                               VV  VVVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-1OOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXX++++++++XX++++==++++++++++++X++++++++=++XXXXXXXXX+   ++++++++++++-  +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''    ''''' '''''''''     ''''''''''''   ''''''''''     '''''''''''''''''''''''''''''''''''''''
+................   .......     ..... .........     ............      .. ....     .......................................
+  --HHHHHHHH-==     =--==      ====    ==-=        ==-HHHHHHHH=           =      =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    CCCCCCBB                                          BBBBBBBB                    CBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCBBC
+                                                      VVVVVVV                       VV V   V   VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXXXXXXXXXX++++-+++++++++++++++++++++XXX+++++=++XXXXXXXXX+XX-   =++++++++++++-+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''  '''''''   ''''''''''''''''''' ''''''''''''''      '  '''''''  '''''''''''''''''''''''''''''''''''''''
+................    ......      ................ ..............             ..   .......................................
+-=HHHHHHHHHHH-=     ======       = =   =---=  =  ==-HHH-----=H-                   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  CBBBBBBBCCC                                       CCC      C                    CBBBBBBBBBBBCBBBBBCBBBCCBBBBBCBCBBBBBC
+      VVV                                                                          VVV       V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1 1OOOX--MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++XXXXXXXXXXX+   +X+    +++++++++-==+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''' ' ''''''''''''''''''''''''''''   '''    ''' ''  '   '''''''''''''''''''''''''''''''''''''''
+................    .......     ...........................   ...         .       ......................................
+HHHHHHHHHHHHH-       = ===         ==  ========HHHHHHHHHHH    =-                  -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBCBBBBBBBBC                                  CBBBBBBBCBC                         BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBB
+V     VVV V                                        V  V                             V VVVV      V VV V              V
+      AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  OOOOX -XOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++XXXXXXXXXXXX=  -XX+    ++++++++-- -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''  '''''''''  ''''''''''''''''''''''''''''    '''    '''''' '    ''''''''''''''''''''''''''''''''''''''
+.................    ......     ...........................    ...     ...        ......................................
+HHHHHHHHHHHHH-         = =       =  =   ==   ==HHHHHHHHHHHH    HH       =         -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBC                                  CBBBBBBBBBBB    CC                  BBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBCB
+    V VVVV                                       VVVVVVVVV                              V VV V V V V V  V          VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-AOOOO-  ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+++++++++++++++++++++++++++++=++++XXXXXXXXXXXX   XXX+    +++++++=+==+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''  '''''''''''''''''''''   '''''''''''''''   ''''    ' '''''    ''''''''''''''''''''''''''''''''''''''
+..................    ...................     ..............   ....       ....    ......................................
+HHHHHHHHHHHHHH==         =         =           =HHHHHHHHHHHH   -HH                =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBC                                  BBBBBBBBBBBC    CC                 CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VV   VVVVVVV                                      VVVVVVVVV                          VV     V VVV V   V V V V V      V
+       AAA                                            AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMMOOOOOOOOOOOOOOOOMOOOOOX- -XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+++++++++++++++++++++++++- -   =++XXXXXXXXXXXX+ -+XX+     +++++++++-+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''  ''''''''''''''''        '''''''''''''''  ''''        ''' '  ''''''''''''''''''''''''''''''''''''''
+.................  .   .....  ........         ..............  ....               ......................................
+HHHHHHHHHHHHH-===         =          =         =-HHHHHHHHHHH=  =HH=                -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBC                                    BBBBBBBBBBB    CB                  BCBBBBBBBBBBBBBBBBBBBBBBCBBCCBCCBCCC
+V    VV  V V                                      VVVVVVVVV                                VVV   V
+                                                      AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXX11ZMOOOOOOOOOOOOOOOOOOOOOOO-  ZOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX++++++=+++++++++++++++++       =++XXXXXXXXXXXXXXXXXXX-    =+++++-- +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''    '''''''''''''''        '''''''''''''''''''''      '''''    '''''''''''''''''''''''''''''''''''''
+...................      .............         .....................      .        .....................................
+HHHHHHHHHHHHHH-==         ==    =====           =HHHHHHHHHHHHH-HHHH-               -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBC                                   CBBBBBBBBBBBC BBBB                 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBBB
+ VV VVVVVVVV                                      VVVVVVVVVVV  VVVV                  VVVV VVV V     V   V    V
+                                                    AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)+=-=ZMOOOOOOOOOOOOOOOOOOOOOOO- -XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+++++==-+++++++++++XXX++        +++XXXXXXXXXXXXXXXXXXX+    +++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''    '''''''''''''''        '''''''''''''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''
+...................       ............          ......................     .  ..  ......................................
+HHH--HHHHHHHHH-=          ========---            =-HHHHHHHHHHHHHHHHHH              -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBC  BBBBBBBBC                                     BBBBBBBBBBBBBBBBBB               BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCB
+      V VVV                                         VVVVVVVVVVVVVVVV                V    V  VVV  V  V     V
+                                                     AAAA AA  A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)==--)MOOOOOOOOOOOOOOOOOOOOOOOO  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+++++==-++++++++XXXXXXX+        +++++XXXXXXXXXXXXXXXXXX=   -+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''    '''''''''''''''         ''''''''''''''''''''''     '''''''''''''''''''''''''''''''''''''''''''''
+...................     ...............         .. ...................     .............................................
+HHHHHHHHHHHHHHH==          === -HHHHH-             =HHHHHHHHHHHHHHHHHH             =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCBBBBBBBBBC                 CCCCC               BBBBBBBBBBBBBBBBBB              BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VV    V     V                                        VVVVVVVVVVVVVVVVV                V  V VVVV VV V       V  V
+                                                      AAAA  A   AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-- -=XOOOMOOOOOOOOOOOOOOOOOOOOOO1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX++++++=+++++++++XXXXXX+        -++ +XXXXXXXXXXXXXXXXXXX+- -+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''   ''''''''''''''''         '' '''''''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''
+...................     ...............         .   ...................    .... .. .....................................
+HHHHHHHHHHHHHH--= =          ===HHHHHH              -HHHHHHHHHHHHHHHHH-            =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBB                  CCBBBC               BBBBBBBBBBBBBBBBB              BBBBBBBBBBBBBBBBBBBBBBCBBBBCBCBBBBBB
+VVVVVVVVV VV                                         VVVVVVVVVVVVVVVVV                V V V  V V  V           V
+ AA  A    A                                             A   A    AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)----+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX++++++++++++++++XXXXXXX-       -=+++XXXXXXXXXXXXXXXXXXXXXX++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''' ''''  '''''''''''          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................   ..    .........           ......................................................................
+HHHHHHHHHHHHHHH-=              =-HHHHH-            =HHHHHHHHHHHHHHHHHHHHH-= =  =    HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBB                  BBBBB              BBBBBBBBBBBBBBBBBBBBC           CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBC
+VVVVVVVVVVVVVV                     VV                VVVVVVVVVVVVVVVVV                 VV      V
+A   AAAAA A                        A                  A     AA AA  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1----+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+++++++++=---=++XXXXXX+       -=++XXXXXXXXXXXXXXXXXXXXXXX++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''  '''     '''''''''          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................     .     .........          ......................................................................
+HHHHHHHHHHHHHHH--=              =HHHHHH            -HHHHHHHHHHHHHHHHHHHHH- =   ==   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBB                  CBBBBC             CBBBBBBBBBBBBBBBBBBBB           CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBC
+VVVVVVVVVVVVVV                     VVV               VVV VVVVVVV   VVVV               V   V                  V   V
+AA A  A AAAA                                          A        A   A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMOOOOOOOOOA==-=1MOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+++++++++=    ++XXXXXXX       == +++XXXXXXXXXXXXXXXXXXXX++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''  '''      ''''''''          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................      .      ........          ......................................................................
+HHHHHHHHHHHHHHHH-=              =HHHHHH-           ==HHHHHHHHHHHH-HHHHHH-==   =    ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBCC                 CBBBBB              CBBBBBBBBBBB CBBBBB             BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+VVVVVVVVVVVVVV                     VVVV               VVVVV VVVV   VVVV                V  V  V   V    V VV V VV V   V
+   AAA A  AAA                       AA                A      AA     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOX1ZZMOOOOOOOOOZ)+)ZMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+++++++++-     ++XXXXXX+      + -=+XXXXXXXXXXXXX+XXXXXX+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''' ' '''      '''''''''          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................     ..      ........           .....................................................................
+HHHHHHHHHHHHHHHH-=               =-HHHHH            -HHHHHHHHHHHH -HHHHH=== ===  =  =HHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBC                   BBBBB             BBBBBBBBBBBC  BBBBC             CBBBBBBBBCBCC CBBBBBBBBBBBBCBBCBBCC
+VVVVVVVVVVVVVV                      VVV               VVVVVVVVVV    VV                  VV  V             VVV
+A A  A    AA                        AAA                AA   AAAA    AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOZZZZMOOOOOOOOOOOMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+++++=+++=     ++XXXXXXX+-   =+--=+XXXXXXXXXXXXXXXXXXXX+++++++++++++XXXXXXXXXXX++++++++XXXXXXXXXXXXXXXX
+''''''''''''''''''''''  ''       ''''''''          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................             ........          ................................................  ...................
+HHHHHHHHHHHHHHHH-= =             =HHHHHHH           HHHHHHHHHHHHH-HHHHH-===== =======HHHHHHHHHH-==      -HHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBB                  CCBBBBC           CBBBBBBBBBBBC CBBBB              CBBBBBBBCC          BBBBBBBBBBBBBCB
+VVVVVVVVVVVVVVV                     VVVV             VVVVVVVVVVV    VV                 V V                  VV
+AAAA AAAAAAAAA                       AAA              AAAA A AAA     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOXZZZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)=1MOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX++++==+++-     =+XXXXXXX++=-=+==--+XXXXXXXXXXXXXXXXXXXX+++++++++++++XXXXXXXXXXXX+++=     +XXXXXXXXXXXXX
+'''''''''''''''''''''  ' '       ''''''''''        '''''''''''''''''''''''''''''''''''''''''''''''''      ''''''''''''''
+...................              ..........        ................................................       ..............
+HHHHHHHHHHHHHHHHH=               =-HHHHHH=          -HHHHHHHHHHHHHHHHHH-= ===== =====HHHHHHHHHH--          HHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBC                  CBBBBB            BBBBBBBBBBBBBBBBBB              CBBBBBCBCC            CBBBBBBBBBBBB
+VVVVVVVVVVVVVVV                     VVVV              VVVVVVVVVV  VVVV                   VV                   V V
+ AAAAAAAA  AA                        AAA              AAAAAAAAAA     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOXZ1XZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)  -ZOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX+++++=++-     +++XXXXXXX+++=++=++++XXXXXXXXXXXXXXXXXX++++++++XXX+XXXXXXXXXXXXXXX++++-     +XXXXXXXXXXX
+'''''''''''''''''''''    '       '''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''      ''''''''''''
+....................             ...........       ...................................................      ............
+HHHHHHHHHHHHHHHHH-=              ==-HHHHHH=         =HHHHHHHHHHHHHHHHH-========---=--HHHHHHHHHHHHH===        HHHHHHHHHHH
+BBBBBBBBBBBBBBBBC                   BBBBBC           BBBBBBBBBBBBBBBBB               CBBBBBBBCBCCC           CBBBBBBBBBB
+VVVVVVVVVVVVVVV                      VVV             VVVVVVVVVVVVVVVVV                VV   V                  V
+ AAAAAA AAAAAA                       AAA               AAAAAAAAAA  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOM1))+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=   MOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX+++===-=      -+XXXXXXXX++++++===++XXXXXXXXXXXXXXXX+=+++++++++X+XXXXXXXXXXXXXXXXXXXX+++     +XXXXXXXXX
+'''''''''''''''''''''            '''''''''''       ''''''''''''''''''' '''''''''''''''''''''''''''''''''      ''''''''''
+....................             ...........       ................... .................................      ..........
+HHHHHHHHHHHHHHHHH-=              =-HHHHHHH==        =HHHHHHHHHHHHHHHH     ======-=-HHHHHHHHHHHHHHHHHH-=       =HHHHHHHHH
+BBBBBBBBBBBBBBBBC                  CBBBBBB           BBBBBBBBBBBBBBBB              CCBBBBBBBBBBBBCCCC          BBBBBBCBB
+VV VVVVVVVVVVVVV                    VVVV              VVVVVVVVVVVVVVV                VVVVV  V  V                   V
+   A   A A AAA                       AAA               AAA AAAA  AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOMX11ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOM=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-  )OOOOOOOOO
+XXXXXXXXXXXXXXXXXX+++==+=-      -+XXXXXXXXX++==+=++++XXXXXXXXXXXXXXXX- +   ++X+++XXXXXXXXXXXXXXXXXXXXXX++-     +XXXXXXXX
+'''''''''''''''''''''            '''''''''''       ''''''''''''''''''  '   ''''''''''''''''''''''''''''''      '''''''''
+....................             ...........       ..................  .   ....  ........................      .........
+HHHHHHHHHHHHHHHHH-=              =-HHHHHHH-=        =-HHHHHHHHHHHHHHH       =-=  -HHHHHHHHHHHHHHHHHHHHH=        HHHHHHHH
+BBBBBBBBBBBBBBBBB                  CBBBBBB            BBBBBBBBBBBBBBB             CBBBBBBBBBBBBBBBBBBBC         CBBBBBBC
+VVVVVVVVVVVVVVV                     VVVVV             VVVVVVVVVVVVVVV                VVV VV  VVVVV                 V
+  A AAAAAAAAAA                        AA               AAAAAAAA A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOMXZZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--OOOOXZOOOOOOOOOOOOOOOOOOOOOOOOOO)   =OOOOOOOO
+XXXXXXXXXXXXXXXXXXX+++=++-     -++XXXXXXXXX++==+==-+++XXXXXXXXXXXXXXXXXX=  +XXX  +XXXXXXXXXXXXXXXXXXXXXXX+=     +XXXXXXX
+'''''''''''''''''''''           '''''''''''''       ''''''''''''''''''''   ''''  '''''''''''''''''''''''''      ''''''''
+.....................            ............       ....................    ...  .........................      ........
+HHHHHHHHHHHHHHHHHH-              =-HHHHHHHH=         =HHHHHHHHHHHHHHHHH-    -H-  =HHHHHHHHHHHHHHHHHHHHHH-        HHHHHHH
+BBBBBBBBBBBBBBBBBC                 CBBBBBBC           CBBBBBBBBBBBBBBCC      C    BBBBBBBBBBBBBBBBBBBBBB         CBCBCBB
+VVVVVVVVVVVVVVVV                     VVVVV             VVVVVVVVVVVVVV              VVVVVVVV  VVVVVVVV
+AA A  AAAAAAAAA                       AA                AA AA    A  A               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1   -OOOOOOO
+XXXXXXXXXXXXXXXXXXX+++=++---  -+++XXXXXXXXXX++==+==-++XXXXXXXXXXXXXXXXXXX+++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX+     +XXXXXX
+''''''''''''''''''''''         '''''''''''''''       ''''''''''''''''''''' '''''''''''''''''''''''''''''''''     '''''''
+......................          ..............       ..................... ................................      .......
+HHHHHHHHHHHHHHHHHH-==            =--HHHHHHH-=        =-HHHHHHHHHHHHHHHHHH  =HHH-=HHHHHHHHHHHHHHHHHHHHHHHHH-      =HHHHHH
+BBBBBBBBBBBBBBBBBC                  CBBBBBB            BBBBBBBBBBBBBBBBBC   CBB  BBBBBBBBBBBBBBBBBBBBBBBBB        CBBBBB
+VVVVVVVVVVVVVVVVV                     VVVV             VVVVVVVVVVVVVVVVV     V     VVVVVV VVVVVVVVVVVVV
+AA AA A AAAAAA A                      AAA                  AAAAAA AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-   ZOOOOOO
+XXXXXXXXXXXXXXXXXXX++++++=---=+++++++XXXXXXXX+++===-+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+     +XXXXX
+'''''''''''''''''''''''       ''''''''''''''''''     '''''''''''''''''''''''''''''''''''''''''''''''''''''''      ''''''
+......................        .................      .......................................................      ......
+HHHHHHHHHHHHHHHHHH-=           == ===-HHHHHH- =       =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-      =HHHHH
+BBBBBBBBBBBBBBBBBB                    BBBBBC            BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB        BCCBB
+VVVVVVVVVVVVVVVVV                      VVVV               VVVVVVVVVVVVVVV    VVVVV VVV V  VVVVVVVVVVVV VVV
+ A AAAAAAA AA AA                       AA                  AAAAA     AA A     A              AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)   =OOOOOO
+XXXXXXXXXXXXXXXXXXXX++++=---=+++X+++++XXXXXXXX+++++==++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+     +XXXXX
+'''''''''''''''''''''''       ''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ''''''
+.......................       ...................     .......................................................     ......
+HHHHHHHHHHHHHHHHHHH-=           -    =-HHHHHH-==      =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH       HHHHH
+BBBBBBBBBBBBBBBBBBC                    BBBBBB           BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB       CCBBB
+VVVVVVVVVVVVVVVV                        VVVV             VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAA AAA A AAAAAA                        AA A             AAAAAAAA AA AAAA  AAAA      A    AA AAAAA   A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO   =OOOOOO
+XXXXXXXXXXXXXXXXXXXX++++=---+++++++=+++XXXXXXXXX++++==++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-    +XXXXX
+'''''''''''''''''''''''      '''''' '''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''     ''''''
+.......................       .....  ..............   .......................................................     ......
+HHHHHHHHHHHHHHHHHHH-=          ===    =HHHHHHHH-==     =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-     =HHHHH
+BBBBBBBBBBBBBBBBBBB                    CBBBBBBC         BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB       CBBBB
+VVVVVVVVVVVVVVVVVV                      VVVV             VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A AAAA AA AAAAA                         AAA               AAAAAAA AAAAAAA A AAAAAAA     AAAAAAAAA AAAAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)  1OOOOOO
+XXXXXXXXXXXXXXXXXXXXX+++=+--+++++++-=++XXXXXXXXXXX++- ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+    +XXXXX
+''''''''''''''''''''''''     ''''''  '''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''
+........................     .....   ...............   .......................................................    ......
+HHHHHHHHHHHHHHHHHHH--= =             ==HHHHHHHHHH-=    =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=    =HHHHH
+BBBBBBBBBBBBBBBBBBC                    BBBBBBBBBB       CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB      CBBCC
+VVVVVVVVVVVVVVVVVV                      VVVVVVVV         VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV        V
+AAAAAAA A AA A A                         AAAAA            AAAAAAAAAAAAAAAAAA AAAA A  AAAAAA   AAAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)=OOOOOOO
+XXXXXXXXXXXXXXXXXXXXX+++++=++++++++-=++XXXXXXXXXXXX++-+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+  +XXXXXX
+'''''''''''''''''''''''''    ' '''   ''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''
+.........................       ..    ..............   ........................................................   ......
+HHHHHHHHHHHHHHHHHHHH-==               =HHHHHHHHHHH-=    =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH    -HHHHH
+BBBBBBBBBBBBBBBBBBBB                   CBBBBBBBBBB       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB     BBBBB
+VVVVVVVVVVVVVVVVVV                      VVVVVVVVV         VVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVV
+A     A AAA                              AAAAAAA          AAAAAAAAAAAAAAAAAAAA        AAA   A  A     A AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+++++++++++++--++XXXXXXXXXXXX++=++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXX
+'''''''''''''''''''''''''' '   '''   ''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................        .    ...............  .................................................................
+HHHHHHHHHHHHHHHHHHHHH-=               =HHHHHHHHHHHH=    -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH= -HHHHHH
+BBBBBBBBBBBBBBBBBBBBC                  BBBBBBBBBBBC      BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC   CBBCBB
+VVVVVVVVVVVVVVVVVV                      VVVVVVVVVV        VVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVV
+  AA A A  AAAA AA                        AAAAAAAAA        AAAAAAAAAAA  AAAAAAA A  A  AA A       A A    AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+++++++++=+++-=++XXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''  '   '   ''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................          ................  .................................................................
+HHHHHHHHHHHHHHHHHHHHH-====            =HHHHHHHHHHHHH    HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HHHHHH
+BBBBBBBBBBBBBBBBBBBBC                  BBBBBBBBBBBBC    CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB   BBBBBB
+VVVVVVVVVVVVVVVVVVVV                    VVVVVVVVVV       VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ A A    AA A AAAA                        AAAAAAAAA        AAAAAAAAAAAAAAAAAAAAA AA AAAAAAAAAAA A  A A A  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO))OOOOOO
+XXXXXXXXXXXXXXXXXXXXXXX++++==---===-=++XXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  +XXXXX
+'''''''''''''''''''''''''''          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''
+...........................          ................  .........................................................  ......
+HHHHHHHHHHHHHHHHHHHHH--==             =HHHHHHHHHHHHH=  =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-   -HHHH
+BBBBBBBBBBBBBBBBBBBBC                  CBBBBBBBBBBBC     BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB     BBBB
+VVVVVVVVVVVVVVVVVVVV                    VVVVVVVVVVV       VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ A     A A AAAAAA                       AAAAAAA AA        AAAAAAAAAAAAAAAAAAAAAAAA AAAAA  A  AAAAAAA A A A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=  OOOOO
+XXXXXXXXXXXXXXXXXXXXXX++++++---+++--++XXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+   =XXXX
+'''''''''''''''''''''''''''      '   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''
+..........................           ...........................................................................    ....
+HHHHHHHHHHHHHHHHHHHHH-==              -HHHHHHHHHHHHHH ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=    HHHH
+BBBBBBBBBBBBBBBBBBBBB                  BBCBBBBBBBBBBC   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB     CBBB
+VV VVVVVVVVVVVVVVV                     VV  VVVVVVV       VVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ A    AAAA    A                         A   AAAA          AA AAAAAAAA  A AAAA     AAAA  A AAAAAAA  AAA  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+  OOOO
+XXXXXXXXXXXXXXXXXXXXXXX+++++++++++=-+++XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+   +XXX
+'''''''''''''''''''''''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''
+.................................    ...........................................................................    ....
+HHHHHHHHHHHHHHHHHHHHH--==             =HHHHHHHHHHHHHH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH     HHH
+BBBBBBBBBBBBBBBBBBBBB                  BBBBBBBBBBBBBC   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC     BBB
+VVVVVVVVVVVVVVVVVVV                     VVVVVVVVVVVV     VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV        V
+   A    AAAAAAAA A                      A  AAAAAAAA       AAAAAA AAAAAAA AAA A AAAAAA  AAA  AAAAAAAA AAA A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-ZOOO
+XXXXXXXXXXXXXXXXXXXXXXX+++++XXX++++=++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+   XXX
+''''''''''''''''''''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''
+..................................   .............................................................................   ...
+HHHHHHHHHHHHHHHHHHHHH--=  ==-H-==     -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=   -HH
+BBBBBBBBBBBBBBBBBBBBC        C         CBBBBBBBBBBBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBC     BB
+VVVVVVVVVVVVVVVVVVV                     VVVVVVVVVVVV     VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV           V
+AAA  AA AAAAAAAA A                       AAAAAAAAAA      AAAAA   AAAA       A AAA  AA A AAAA AAAAAAA AAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXX++==++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  +XX+X++XXX
+''''''''''''''''''''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''
+..................................   .......................................................................  ...... ...
+HHHHHHHHHHHHHHHHHHHHHH===--HHHHH-     =HHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH   --=-= -HH
+BBBBBBBBBBBBBBBBBBBBCC     BBBBC       CBBBBBBBBBBBBBC  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB          BB
+VVVVVVVVVVVVVVVVVVV         VV           VVVVVVVVVVV     VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV            VV
+ A  A AAAAAAAAAAA                        AAAAAAAAAA       AAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAA AAAAAAAAAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- OOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+++XXXXXXX++---++XXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+-  =++-XXXXX
+''''''''''''''''''''''''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '' '''''
+..................................    ......................................................................    .  .....
+HHHHHHHHHHHHHHHHHHHHH-===-HHHHHH=     =-HHHHHHHHHHHHH--=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH     =  -HHHH
+BBBBBBBBBBBBBBBBBBBBC     BBBBBC        BBBBBBBBBBBBB   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB         CBBB
+VVVVVVVVVVVVVVVVVVV         VVV          VVVVVVVVVVV     VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV            VV
+AA A  AA AAAAA AA           AA             A A   AAA      AAAAAAAAAA AAAAAA    AA AAAA A A  A  A AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-AOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXX+++-++XXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=   ++XXXXX
+''''''''''''''''''''''''''''''''''    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''
+..................................    ......................................................................     .......
+HHHHHHHHHHHHHHHHHHHHH-===-HHHHHHH     =-HHHHHHHHHHHHH-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=      =-HHHH
+BBBBBBBBBBBBBBBBBBBBC     BBBBBBC       BBBBBBBBBBBBB    BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC         BBBB
+VVVV VVVVVVVVVVVVVV        VVVV         VVVVVVVVVVVV     VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV           V VV
+ A      AAAAA AAAA          AAA          AAAA AAAAAA      AAAAA AAAAAAAA A A AAAAAAAAA AA A AA A      A                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--OOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXX+= =++XXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++  +XXXXXX
+'''''''''''''''''''''''''''''''''''   ''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''
+...................................   ................  ......................................................   .......
+HHHHHHHHHHHHHHHHHHHHH-===-HHHHHHH-    ==HHHHHHHHHHHHH=  =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--==    HHHHHH
+BBBBBBBBBBBBBBBBBBBBC     BBBBBBB       BBBBBBBBBBBBB    BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCBBC        CBBBBB
+VVVVV  VVVVVVVVVVVV        VVVV           VVVVVVVVVV      VVVVVVVVVVVVVVV V  VVVVVVVVVVVVVVVVVVV   VVV  V            VVV
+A A      AAAA AAA          AAAA            AAA  AAAA      AA  A   A   A A         AAA  AA   AAA    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)OOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXX++==++XXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+XXX+X+X= +XXXXXX
+''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''
+...................................   ................. .......................................................  .......
+HHHHHHHHHHHHHHHHHHHHH-===-HHHHHHHH=    =HHHHHHHHHHHHH=   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=HHHH-=HH-=-=-   HHHHHH
+BBBBBBBBBBBBBBBBBBBBC     BBBBBBBC      CBBBBBBBBBBBB    CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB CBBB  CB        BCBBBB
+VVVVVV  VVVVVVVVVVV         VVVVV         VVVVVVVVVVV     VVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVV   VV                VVV
+A A  A    AAA AAA           AAAA          AAAA   AAA          A  AAAAAA   A  A  A AAAA    A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXX++++++XXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX++++X++XXXXXX
+'''''''''''''''''''''''''''''''''''' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................   ................................................................ ................
+HHHHHHHHHHHHHHHHHHHH--==-HHHHHHHHHH=    =HHHHHHHHHHHHH==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH =HH ===H==HHHHHH
+BBBBBBBBBBBBBBBBBBBB     CBBBBBBBBC      BBBBBBBBBBBBC   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBC  BB    C  BBBBBB
+VVVVVVVVVVVVVVVVVV         VVVVVV         VVVVVVVVVV      VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVV    V
+A  A   A AAA AAAA          AAAAAA           AAAAAAAA       A    AA AA A  A   A    AA A A   AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXX++++++XXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--XXXX+XXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''
+.....................................   .............. ................................................  ...............
+HHHHHHHHHHHHHHHHHHHH--=-HHHHHHHHHHH=     -HHHHHHHHHHH  =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH  HHH-=-HHHHHHHHH
+BBBBBBBBBBBBBBBBBBBC    CBBBBBBBBBB       CBBBBBBBBBC   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB  BBC   CCCBCCBBB
+VVVVVVVVVVVVVVVVVV        VVVVVVVV         VVVVVVVVV     VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV    V
+AA  A     A AAAA           AAAAAAA          AAAAA A       A   AAAAAAAAA  AAAAAAA A A  A  A  AA AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1= 1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++--=++XXXXXX++-    +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX- XXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''    '''''''''     '''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''
+.....................................     ........      ...............................................  ...............
+HHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHH=     =HHHH--       =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH  HHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBCCC  CBBBBBBBBBBB       CBCC          BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB  CBBBBBBCCCBBBCB
+VVVV VVVVVVVVVVVV         VVVVVVVVV                       VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV   VV
+A A       A   AAA          AAAAAAA                        AAA A  AAAAAAAA A     AAAAA A  AAA  A  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+11ZMA))+----   1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXX++-                  +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''                   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................                   ...............................................................
+HHHHHHHHHHHHHHHHHHHHH==-HHHHHHHHHHHH=                    =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH= HHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBCC   CBBBBBBBBBBB                      BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB  BBBBBBBBBBCCCCC
+VVVVVVVVVVVVVVVVV         VVVVVVVVV                       VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV   VVV V
+  A     AA A AA            AAAAAAAA                        AAAAAAAAAAAAAAAAAA   AAAA    AA   AAA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZ=---- -   --     AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX+XX+XXXXXXXXXXXXX+                     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''                     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................                     ..............................................................
+HHHHHHHHHHHHHHHHHHH=--=---HHHHHHHHHH=                     HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBCCC       BBBBBBBBBC                      CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC
+VVVVVVVVVVVVVVV            VVVVVVVV                        VVVVVVVVVVVVVV V VVVVVVVVVVVVVVVVVVVVVVVVVVV   VVVV VV
+  AAA AA   AA               AAAAAAA                            A AAAAAAA     A A A   AA      A  A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)===--    - -    -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXX+++                   +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''                     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................                     ..............................................................
+HHHHHHHHHHHHHHHHHHH---=-=-HHHHHHHHH-=                      HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBC       BBBBBBBBB                        CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBC
+VVVVVVVVVVVVVVVVV           VVVVVVV                         VVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVV  VVVV V
+AAAAA A   AAAAA               AAAA                           AAAAAAAA AA     A              AAAA AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ++--- --     ----1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXX++=                   +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++ -+XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''                    '''''''''''''''''''''''''''''''''''''''''''''   '''''''''''''
+.......................................                    .............................................   .............
+HHHHHHHHHHHHHHHHHH----=-=-HHHHHHHHHH-                      =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=    HHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBC        CBBBBBBBBB                        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB     CBBBBBBBCCBC
+VVVVVVVVVVVVVVVV            VVVVVVV                          VVVVVVVVVVVVVVVVVVVVVVVV VVV VVVVVVVVVVVV
+   AAAAA AA AAA              AAAAAA                          AAAAAAAA  A  A AAAAAA      A   A A   AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX1++--  --==--= -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-    OOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX+X++XXXXXXXXXXXXXX++-                  -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+     +XXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''                    '''''''''''''''''''''''''''''''''''''''''''     ''''''''''''
+.......................................                     ...........................................     ............
+HHHHHHHHHHHHHHHHHHH-=-==--HHHHHHHHHHH-=                     HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH       --HHHHHHHHH
+BBBBBBBBBBBBBBBBBBC       CBBBBBBBBBB                       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB         CCCCCCCCC
+VVVVVVVVVVVVVVVV            VVVVVVVV                         VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAA AAAAAAAAA             AAAAAAA                         AAAAAAAA AA A AAAAAA A A A        A AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOXA1=--- ++==-  1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM     ZOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX+X++XXXXXXXXXXXXXXXX++ ++-                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''                    ''''''''''''''''''''''''''''''''''''''''''       '''''''''''
+.......................................                     ..........................................       ...........
+HHHHHHHHHHHHHHHHHH=-==----HHHHHHHHHHHH=                     -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH       -HHH-HHH-HH
+BBBBBBBBBBBBBBBBBC        CBBBBBBBBBBB                       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB        CCC CCC CC
+VVVVVVVVVVVVVVVVV           VVVVVVVVV                         VVVVVV V V VVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AA  AAAAAAAAA  A              AAAAAAA                                            AA A         AA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOZ+- -=)1))=--1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO     1OOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXX+-  =+-              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+      +XXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''                    '''''''''''''''''''''''''''''''''''''''''''      '''''''''''
+........................................                    ..........................................       ...........
+HHHHHHHHHHHHHHHHHH-=  ===HHHHHHHHHHHHH-                     -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH       =HHHHHHHHHH
+BBBBBBBBBBBBBBBBBB       CCBBBBBBBBBBB                       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB        CCCCCBCBCC
+VVVVVVVVVVVVVVVVV           VVVVVVVVV                        VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A  AAAA A A AAAA              AAAAAAA                         AAAAAAAAAA AAAAAAAAA A   A      A  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOO)= -=+1)X11+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+  --AOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXX+=- -+=-             +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+      +XXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''                    '''''''''''''''''''''''''''''''''''''''''''      '''''''''''
+........................................                    ...........................................      ...........
+HHHHHHHHHHHHHHHHHHH-  = =-HHHHHHHHHHHH-=                    =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=      =HHHHHH-HH-
+BBBBBBBBBBBBBBBBBBC       CBBBBBBBBBBB                       BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB        CBBCCC CB
+VVVVVVVVVVVVVVVVV           VVVVVVVVVV                        VVVVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVVVVVV
+ AA AAAA   A AAAA             AAAAAAA                         AAAAA  AAAAA A AA AA  AAAAAA    A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOMZ1+=)AXOMMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ- -)OOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXX+= - ==        -    +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+-=     -+XXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''                   '''''''''''''''''''''''''''''''''''''''''        '''''''''''
+.........................................                    ........................................        ...........
+HHHHHHHHHHHHHHHHHHHH=== =-HHHHHHHHHHHHH-                     HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=        =HHHHHHHHHH
+BBBBBBBBBBBBBBBBBBCC      CBBBBBBBBBBBB                      CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB          BCCCCCBBCC
+VVVVVVVVVVVVVVVVVV         VVVVVVVVVVV                        VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+ AAAA    AAAAAAA              AAAAAAA                         AAAAAAAA AAAAAAAA A     AAAA    A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMM1ZOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)Z1=-)MOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXX++=-- ---    - +++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=       +XXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''              ' ''''''''''''''''''''''''''''''''''''''''''        ''''''''''''
+..........................................              . ..........................................         ...........
+HHHHHHHHHHHHHHHHHHHH--==-HHHHHHHHHHHHHHH==                  -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH         -HHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBC     CCBBBBBBBBBBBBB                     BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB          CCCCCCCCCC
+VVVVVVVVVVVVVVVVVV         VVVVVVVVVVVV                       VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVV
+  A AA A  A     A            A AAAAAAA                        AAAAAA  A  AAAAAAAAAAAAAAA  AA AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)=+MOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++- - =+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=     ++XXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''
+............................................       ..................................................       ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=        = ====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH       =HHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBB                 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC        CBBCCCCCCCC
+VVVVVVVVVVVVVVVVVVVV      VVVVVVVVVVVVVV                   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AA  AA AAAAA AAAAAA          AAAA  AAAA                      A AA  A AA AA AA AAAAAAA  AA AAA AAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZMOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+   ++XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''''''
+..............................................    ....................................................     .............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=     =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-      --HHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC         CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB         CCCBCBCCCC
+VVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVV                VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAA A  AAAA  AAAAAAA     AAA A  A A AAAA                 AAAA A   AA  A     AAA AAA AA  AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................ ...............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--= ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=  =---HHH-HHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB      BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC        CCC CBCCCC
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV        VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+AAAAAAA AAAAAAAAAAAAAAA  A  AAA  A AAA AAAA          A AAAAAAAA A      AAAA AAA   AAAAAA A   AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=---HH---H-------
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC     CC   C
+V VVVVV  VVVV VV VV V  VVVVVVVVVVVVVVVVVVVVVVVVV   VVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+  A   A                   AA   A AAA   AA  A          AAAA AA            AAA AA   AAAA A A   AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++X+++XX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH-H-====-===--=
+BBBBBBBBBBBBBBBBBBBCC   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC  CC C
+VVVVVVVVVVVVVVVVV         VVVVVVVVVVV       VVVVVVVVVVVVVVVVVVVVVVVV VV VVVVVVVVVVVV V VVVVVVVVVVVVVV
+     A AAA   A              A                  A      A      A               A AA A           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHH-H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=-H-H------=
+BBBBBBBCBBBBBBCCCCCCC C  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBB   C C
+VVVVVV    VV              VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVV
+                              A A AAAA    AAA    AA     AA AAAA AA      A   A  AAA   A   AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXX+X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==-----H---=-
+BBBBBB   CBCCBBBCCBCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB       C
+VV                          VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+A                              AAAAAAA A AAA               A    AA  AA     AAA AA AA AAA A A   A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+=++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+XXX+++
+'' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.. .....................................................................................................................
+-  ==--=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=-----=---===
+         CBBCBBBBCBCBCCCCCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBB
+                                 VVVVVVVVVVVVV VVVVV  VVV VVVVVVV V VVVVVVVV VVVVV   VVVVVVVVVVVVVVV  VV
+                                     A A                              A      AA  A       A   AA A
 1=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX+++
+   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   .....................................................................................................................
+   =--H-HHHHHHHHHHHHHHH-----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=--H--H----===
+      C CBBCBCCCCBCBCCC     CCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBC    C  C
+                                  VVVVVVVVVVVVVVVVVV  V  V  VVVVVVVVV  VVVVVVVVVVVVVVVVVVVV VV VVVVV
+                                       A   A A   A               A  A   A AAA A A AA  AAA
1
 --- --   -   ---  -- - ----  -  -- -  --    -- - -- ---- ---  - -  -    ----- ---  -   -- --------- ----- -  -- ------ -
          - -   - --- -  -- -- --- -- ---  --- - -- -  --- -    -  ------ -  -------  -- -----------     - --  -----  - -
   -         ---  - - ------ -  - -- -  --- -   --- -      ----- - ------  ---   -----  ----   - ----      ---  --   - --
 --=---    -   --  --  - --     -  --  --      -   ----   --   -  --------- -  -  - -- ------ - -- -- ----- ---------- --
 OOOOM=--       -  -    -        - ----     -  -     --- - -- -- - -------- - --  ----- -- - ----- -- - -- - - ==-- --
+++++
+''''
+  .
 OOOOOOOM1---- -   --    -   -      --- - ---      -     ------  -  ----      ---- -   - ---------- --- - --  --- -- - --
+++++++=
+''''''
+......
+=
 OOOOOOOOO1-- --- -  --   ---   -  ----  --- ---    -- -- --- -- ---  ----  - -  - --- -  ---  -  - ---- ------  - -   -
+++-++X+++
+'  ''''''
+.  ......
+=   =-=
 OOOOOOOOOO1-     -        - -- - - - ---  -  -- --       -----   --- -----  --  - - - - - - -- - -- -- - --  -  - -----
+++=++X++++
+'  ''''''
+.   .....
+     -= =
 OOOOOOOOOOOOZ    - ----         --- - -  -  -  ---   -  ----- - --     - -- -- -- -- -------  --     -----     -   --  -
++=+=+X++++++
+    ''''''''
+    .......
+    =-= ===
 OO+- MOOOOOOOM- --        --     -----    -  -----   ----  -------        --  -- ---       ---      - -- ---     -  -- -
++-    +++++++
+      '''''''
+      .......
+         ===
 OX - -OOOOOOOOZ-    -   --     - -  -  -  -   -- - -- - ---  -- -- -   - --   --- - ---  -- -  - -    -- --  -- - -- ---
++     =+++++++
+'      ''''''
+.      ......
+         ====
 O=-   ZOOOOOOOOM1-       --           - --   -----  --  ------ ------  -- --  --- ---    -- - - -      -  - -  --     -
++      +++++++=
+'       ''''''
+.       .....
+=         ==
 O-  --=XOOOOOOOOOO-- -      - - --- ----    ----- -- --- - --- - - -   -- ---------  -  --- - --- -   - ---         - --
++       ---+==--+-
+'
+.
 O=  --+XOOOOOOOOOOM--  -     -       -       -    -   ----------- ---  -- ---  ----   -     - -- ---- --- -----  - -- -
++       =+++++++++
+'        '''''' ''
+.        ......  .
+            ===  =
 O=   =)MOOOOOOOOOOO)      - -    -   - -   --   -  - ----    ----  ----- -- ----   --     ----- -- -    --    - ---   --
++       =++++++++++
+'          ''''''''
+.          ..... ..
+=                 =
 O1-  +ZOOOOOOMZZMOO1- -        - --    --    ----- -      ---   --  -  - - - -- - -- -- -- --  -- -    -   -  -    - ---
+X      ++++++    ++
+'       '' '     ''
+.       ..       ..
+-
 OO- -+OOOOOOO=  -MO)     --   - -  -- - - -  -  -    --- - -  --  ---- - ----  --- - ------   -    --  --- -  --- -
+X=    -+XX++=     +
+'      '''''      '
+.      .....      .
+H      =--=
+C
 OOZ==1OOOOOOO--- 1O+          -  -- ---  -- -- --   --   - - ----- -   -- --  -  -------  - --  - -- -  --   - -    ----
+X+    -+XXXX-     -
+''     '''''
+..     .....
+H=     =-HH-
+B        CC
 OOOA+)OOOOOOM- --)X- -  -     - - -  -      ---- -- --- ---- ------ ---- -- --   ----- --  ------  ---     ----- -  -- -
+++-   +XXXXX
+''     '''''
+..     .....
+ =     -HHH-
+        CCB
 1ZA1-=OOOOOOA----+=-   -    -- -  -     ---      - - ------ ----- -- - -- -----  - -- -  --  - - - -- -- --   --- - -
+      +XXXXX
+      ''''''
+      ......
+       -HHH-
+        CBB
 =++--+OOOOOOO+= ----   --      --  --      -  -  ------ - - - -  - --  - -- --  ---  ------ ---  - -          -       --
+      +XXXXX+
+      ''''''
+      ......
+       -HHH-
+        BBB
  --  )OOOOOOO)-- - -+XA=---- -   -  - -   - ----  ---   -- ---- --- --- --  --  ---- -------  ----  -  - ---  - -
+      +XXXXX+
+      '''''''
+      ......
+      =HHHH-
+       CCBC
 ---  XOOOOOOOZ- -  -MOOOZ---   -- --  - ----- - - - ---- ----------- - -----  --- -- ---- ----- -  -          - -  - --
+      +XXXXX+        +++
+      '''''''        '''
+      .......        ..
+       HHHH-
+       CCCC
    - OOOOOOOOO= -  )OOOOOM- -  - - -  ---  --       -       --  -- --   -- -   -  -      - - ----- -  --------- -    --
+     +XXXXXX+-      =++++
+      '''''''        ''''
+      .......        ....
+      -HHHH-          ===
+       CCCC
     XOOOOOOOOOZ- - ZOOOOOO- - ------------   ----- -- -  -  --- - -   --- - ----   -    ------------------ ---   --  ---
+     +XXXXXX++      +++XX=
+     '''''''''      '''''
+     .........        ...
+     =HHHHH-=          -H
+      CBCCC             C
 ---+OOOOOOOOOOM= -1OOOOOOO=-- - -  ---    --- -  --     -  ----  -----  - - -- - -- -----  -- -- - -    -  - -- -- - - -
+    +XXXXXXX++     =++++++
+    ''''''''''      '''''
+     .........      .....
+     -HHHHHH=           =
+      CCCCBC
 =-+OOOOOOOOOOOO)-)AOOOOOOOM=  --------- - -  - --- -   -        -- -    - --- - -- - - -- - --- ----    -----  ---   -
+   ++XXXXXXXX++    ++++==+
+    ''''''''''      '''
+    ..........      ..
+    =HHHHHHH-
+     BBBBCCC
 +=ZOOOOOOOOOOOOMZOOOOOO1-=XX-   -- -       - --   -=------    ------  ---- -  -- -    - ---  -- ----   --- - -  -  -  -
+   ++XXXXXX+--+  -++++=
+   '''''''''      ''''
+   .........      . .
+    =HHHHHH
+     CCCBBB
   1MOOOOOOOX--OOMOOOOOO=  =M)- -      ---  -   -  ---- - --  ----    --   ----   -  -   - - -----    -- -- - --  -    -
+    +XXXXXX   =- ++++++
+    '''''''      ''''''
+    .......       ....
+     --HHH-       ====
+       CBB
  - -ZOOOOOOZ--OOOOOOOOO+-  11--         --          ---------- --   -  - -   ---   - -   ---    ---- -- -     -- -- - --
+     +XXXXX   ++-++XXX+
+     ''''''      ''''''
+      .....      ......
+      -HHH-       =---=
+       BBB
    -+MOOOOOO-+OOOOOOOOOA   +=         -       -       --      -- -     --- --- - -       - -- -- --  -  - -   -    - --
+      +XXXX-  ++-+XXXX+
+      '''''    ' ''''''
+      .....    . ......
+      =HHHH       -HHH=
+       CBBC        CBC
    =1MOOOOOO+=OOOOOOOOOO-- --  -     --  -          -- - - - ---- -- -   --- - -   ---    -  ------ ------ --   -- - --
+      +XXXX+  ++=++XXXX+
+      ''''''   '  ''''''
+      ......   .  ......
+      =HHHH    =  =HHHH
+       CBBB        CBCC
+         V
 -- -11OOOOOOX=OOOOOOOOOOM=          -      -  --  ---- - - --     --  -   -     ---- - ---  ----     -      -     -  -
+      +XXXXX  -++++XXXXX
+       '''''   '' ''''''
+       .....   .. ......
+       -HHH-   =  =HHHH-
+        BBB        CBCC
 -- -ZZMOOOOOO1XOOOOOOOOOO1 -       -  -   -  -- -- ---- ----      - ---  -- -    -      - - -       --    -  ----  - - -
+       +XXXX+  ++++XXXXX+
+       ''''''  ''''''''''
+       ......  .. .......
+       =HHHH      =--HHH=
+        CBBC         BCC
 =  -11ZOOOOOOM1OOOOOOOOOO+-   -     -  -- -      -  - ---      --   -- - -- -- - -- -- --  -     -  -- -     -  --    --
+       +XXXX+  =X+-=++++-
+       ''''''   ''  '''
+       ......   ..  ...
+        -HHH=   -    ==
+         CCB
 )   )11OOOOOOOZ1OOOMZZ1=-----         -   -    -   - ---   -      --- -- --- -------    - - ------  -   --  - -   -- --
+       +XXXXX+  =++
+       '''''''   ''
+        ......   .
+        -HHHH=   =
+         BBCB
 Z   -=)OOOOOOOO)-XOOZ=- --+    -     -  --    --   -  -          -      -  - -----  - --- - -  - -          - -----   -
+       ++XXXXX+   ++
+        '''''''   '
+        ......
+        =HHHHH
+         BBBBB
+          V
 X- ----OOOOOOOOOZ+)1ZZ---++-   -  -   -    -     -  - --- ---      ---   - -   - -- - -  -  ---- --- -        -
+       -XXXXXXX+
+        ''''''''
+        ........
+        -HHHHHH
+         CBCBBB
 Z  ----XOOOOOOOOOOMMMM1=-+=- - -   - -  -    --       --   -  ---  - -- - - - - -- - - -  -- - -  --   -   --  - - -- --
+        ++XXXXXX+=
+        '''''''''
+        .........
+          -HHHHH=
+           CCCCC
 1- - -=1MOOOOOOOOOOOOOX+++==--  -     - -- - -  -  -  ----- -  -    -        -- -- --- -- - -- - -  - - - --  -- - -- --
+         -+++XXX++++++
+          '''''''''''
+           ..........
+           ==---=  ==
 )-  -===+)ZMOOMM)))XZ1)))))+-   -   - - -   -        -    --    - - -  - --    - -  -    -    -- - ----- -       -  --
+            -+
 1-+1AMA1=--++===--====+)111+- -           -- -    -  --   ----     -------       -   ------ --   -  ---- --    -- -- -
 1+AOOOOA=- --   ------=ZZ)-     -    -     -  -------    - -- - - -  - - --  ----  --- -   --- -      -- -  - -   --- -
+   ++++
+   ''''
+    ...
+     ==
 11OOOOOM-   -- ------=+ZM1-          -       ----   -  -    -  --- -- -  ---   -- ----   -  -  -    -  -- --  - -  -
+  ++XX+
+   ''''
+   ....
+   =HH=
+    CC
 +AOOOOO)       -  - +)MOOX-  -     -      -  --   -  -   - --    -    - - - -      -   -       -    ---   -       - -
+  ++X++                ==
+  '''''
+  .....
+    -=
 ZOOOOOM1=-       --)ZMOOOO1          --    -  -      -- -------    - --  -- --    - - -- -   --    - --  -- --    - -  -
+ -++++                =+++
+  ''''                 ''
+  ...
+    =
 OOOOOA))=- -   --=ZOOOOOMOA-   -        -         -  -      --    ---  --- -          ---- -  -     - -    -   -   -
+-++++              ----- =
+ ''''
+  ...
+  ===
 OOOOOZ1Z+-ZO=  -=ZOOOOOMA1=-           - - -  -    - -  - --     ----  - -  - - -      -- --     ---- --  --  ---    -
+++XX+      -      =+++-
+ ''''              '''
+ ....               .
+ =--
 OOOOO)1M+=OOX- =XOOOOOOOM=--            -   -               ----- -  ---- -   -  -   -- ---  -- -    -  -   -  -- --
++++X+     =+     -++++++
+'''''      '      '''''
+....       .      .....
+ ==-               ==
 OO)OO1AOZ1OOZ- )OOOOOOOOO)    -  -  --  -  -  --  -   --  - - - --  -- ----  --  --  ---- -   - - -      - -    --
++= --  =  -+    -++++++++
+'                '''''''
+.                .......
+                 =======
 M--)M)AOA---  -=OOOOOOOOO1     -    -         -        -       --    -  -  - ------ - - -  - - ----  -   -        --  --
+       +        -++++XX++
+       '         ''''''''
+                 ........
+                 ====--=
 -  XOZMOA-     -MOOOOOOOOA--         -   - ---- -  - -   -  ----   --- -     - - ---  - -        --   -          ---   -
+    +  +         +XXXXX++
+       '         ''''''''
+       .         ........
+                 =-----=
 - +OOMAOO-      MOOOOOOOOM)      - - -  ----  -    --  ---  - --  ----     -   -   -   --  -  -- -   - --          -   -
+   ++  ++        +XXXXXX+
+    '  '         ''''''''
+    .  .         ........
+                 =----H-
+                      C
 --MOOOZOO+      OOOOOOOOOO+--             --  -  --- -  -   -   -  -      -- --  ----- -  -- - -     - ---   ---     --
+   XX- =+       -XXXXXXX+=
+   ''   '        ''''''''
+   ..            ........
+   --            -H--H--=
+                  C  C
  )OOOO11O1     -OOOOOOOOOOX-                         -  -       -- -- -   --    ----  -    - -- --   - -   - - -   -
+  +XX+  -       ++XXXXXX++
+  ''''          ''''''''''
+  ...           .........
+  =HH            =-HH-H-=
+   CC              CC C
 1OOOOOO1ZA=   -AOOOOOOOOOOO+             --   -                ----  ---- - -  -   --      - -- -    -- -----  - -    -
+ +XXX+-         +XXXXXXXX++
+ '''''          ''''''''''
+  ....          ..........
+  -HH=          =-HHHHHH-=
+   CB             CCCCCC
 OOOOOOOOOOO+ -)MOOOOOOOOOOOZ                       -                 - -- -   ---- ---        - -   ---  ---    --   -
++XXXXXX+---     +XXXXXXX+++
+''''''''        '''''''''''
+........        ...........
+ -HHHH-          -H-H---==
+  CCCC            C C
 OOOOOOOOOOOMZZZ11MOOOOMMX)+-                -      -      -        --  -  - - --   ---       - -   --- -- -  -  - ------
++XXXXXXX+++       ++++
+''''''''''        '''
+..........         ..
+=HHHHHHH==         =
+ CCCCCCC
 OOOOOOOOOOOOOO1-- -+=-              -     -              -  -   -- -      - -   -  - --  -      --  -- - --- --- -     -
+++++XXXXX+++++
+''''''''''' '
+ ..........
+ ===-----=
 ZOOOOOOOOOOOOO+-  - -                          -         - -   ---           --     --- -  ---     --  -   --  ---   ---
+ ++++X++++++++
+ '''''''''''''
+  ............
+    =-=======
 =OOOOOOOOOOOOO--                  -      - -    -    -      -      --     --  ----- - -  -  - - ---- -      ----  - -- -
+ -++XXXXXXX+X+
+  ''''''''''''
+  ...........
+    -H-----=-
+     C
 +OOOOOOOOOOOOO=----        -                      - - -    --                -    -- -  ----         -- --- - -      --
+ -++XXXXXXXXX+
+  ''''''''''''
+  ...........
+  ==-H-H--H--
+     C C  C
 1OOOOOOOOOOOOO11MOO=                                                       --   -- ------   - --   --  ---- -   -   -- -
+ -++XXXXX+XXX+   =-
+  '''''''''''
+  ...........
+    -----=-H-
+           B
 1MOOOOOOOOOOOOOOOOO+-   -   --  - -         -  -  --  -  -         -  -- --       - -   -   --- -  ---   - -  --     ---
+  ++XX+++++X++-++X+
+   ''''''''''   '''
+   ..........   ..
+    --==  =H=   =-
+           C
 1AOOOOOO1AOOOOOOOOM-              ----   - --    - -              -     - --    ---    - - -  -- - ---  --- ---      ---
+  ++XX++  +X++++++
+   ''''   '''  '''
+   ....   ...  ...
+   =-H=    -=   ==
+     C
 ZOOOOOOO1+OOOOOOOOO=            --   -          -        - -----   -   -   -        -  --  -     --- --      - -  -    -
+ =+XXX++  +++++XX+=
+  ''''''   '' ''''
+  .....    .. ....
+   -HH=    ==  -H=
+    CC          C
 OOOOOOOO1-AOOOOOOOO)  -    -        -   ---  --    -       --     -   --     -  -       --- --- -     ----   -- -     -
+-++XXXX+   ++++XXX+
+ '''''''   '' '''''
+ .......   .. .....
+  =HHHH=      =---
+   CCCC
 OOOOOOOOZ=XOOOOOOOOZ-       -   -- ---   -    - -- -    -           -        --            -    ---   - -     --  --  -
+++XXXXX+   +++XXXX+
+''''''''   ''''''''
+........   ........
+ =-HHHH=    = -HHH=
+   CCBC        BCC
 OOOOOOOOOZMOOOOOOOOX-           -     ----   -  -    ----    -     -- - -  - -         ---- --  -- -  -- --     --    --
+++XXXXXX-  +++XXXXX
+''''''''   ''''''''
+........   ........
+ =HH-HH-    = -HH--
+  CC CC        CC
 OOOOOOOOOMOOOOOOOOO+-       -    -   -  -         --        -      -      --      -      - --   - - - -  -   -
+++XXXXXX+ ++++++++-
+''''''''   '''''
+........   .....
+ =HH--H-   ==
+  CC  C
 OOOOOOOOOOOOOM1)-            -     -   - -        -    -               ---    --  -   -      - -                 -  -  -
++XXXXXX++-=++
+'''''''''  ''
+.........  .
+=--H---=
+   C
 OOOOOOOOOOOOO)=--                    - =            -              -   - -  -    --   -    -  -- -  --  - --    -     --
++XXXXXXX++=+=
+'''''''''' '
+.........
+=-HH-HH-=
+  CC CC
 OOOOOOOOOOOOO+           -    -     -- -   - - - -  --         --      --   -           - --- --         -- --    -  -
++++XXXXX+++++
+''''''''''''
+............
+  =-----==
 OOOOOOOOOOOOO+            -                    --  --  - -                -   -   --  - --  -       -  -   -  -     - --
+++XXXXXXXX+++
+'''''''''''''
+ ............
+ =--HHHH--= =
+    CCCC
 OOOOOOOOOOOOOO=         - -       -   --      -  -   --- -       - -         -    - - - -    --  - - -  - -       - -- -
+-++XXXXXXXXX+=
+ ''''''''''''
+ ............
+  =HHHHHHH--=
+   CCCCCCC
 MOOOOOOOOOOOOOO)      -       - -     --- --         -- -           ---- ---   -   -  -  -  -    --   -         -    -
+ =++XXXXXXXXX+=
+  ''''''''''''
+  ............
+  ==-HHHHHHH-=
+     BBBCCCC
 )1MOOOOOOOOOOOOO1     -     --    -      -  -     -                --       -  -        -- -    ---     - - -
+   ++XXXXXXXXX++
+   '''''''''''''
+    ...........
+     -HHHH--H-=
+      CCCC  C
 +)1AOOOOOOOOOOOZ= -     -    -      -      -         ---    -      - -      -  -     -  -    -  - -  --  - --    -
+    -++XX+X++++
+     '''''''''
+     .........
+      =-H=-==
+        C
 ==+)1MOOOOMA1)---         -              -       -           -        -      -   -          -    --   -    --  --
+      =+++
+        '
 ==-=+1AOOM1+=--          -    - -    -          -   -  -    -   - - -         ----    --             - --- -          -
+       --
 )=-==)ZOOM)=--              -             -  --  -  -  - -   -        - -  -   -    - - --            -   -  -
+       -=
 MZ111ZMOOOM+   -     -- --- --   -   - -- -                     -  - -    - -     -   -    ----  -      -- ----- - --
+       +++
+        '
 MZAMOOOOOOO)-- -         ---  --  -         -     --       - --       --  -   -   --              -  -   -- -    - --
+    --++++=
+       '''
+        ..
 --)MOMOOOOO)--   --  - -  -  -   - -- -     -                    -  -  - -- - -                 -     - -- --      -
+    - +++++
+      ''''
+        ..
+        =
  =ZM1=ZOOOOZ-       -   ---           ----  --  -             -      -- - -  - -  -    -    -   -  -    -  -    - -- ---
+       =+++
+        '''
+        ...
+         =
  1OM- -+OOO)--        -    -  -    --         -    -      -  --      --   -  ---    -  - -    - - - -    - -        ---
+  -     -++
+         ''
+         .
 +ZMZ==- )OO=-  -      -- -      - -      -    - -      --        -  -    --     --   -  -      -     -  -     -- - =))=-
+         ==
 ZAOZZA) =OM=-- - -- -  --   -  - --  -    -   --- -      -  - --     - --- --     --  -    -      -   -     -      +1Z+=
+  -      -
 MOOOOOZ--Z1-                 --                 -        - - -   -        - - - -   - --                     -    -1A1=-
+ ++==+
 MMMOOOM)+)=- - --   ----  -           - --    ---   ---        --    - -- -   -    --- --- --       -     -      -=ZZ+=-
+   =++
+    ''
+    ..
 OMZOOOZ===--   -- -    - --   --  -                --     - --- --    - -----     -      -                -   -   +Z1+--
++  --=
 OOZ==-- -- -     -  -  - --     --           -  - -    - - -    -      -  - -  -  -  -  - -  -               -   -1X1==-
+++
+'
+.
 OOO+  -  -    -   --    -  ----  ---             -  -       -           -  ---    -  -        -     --  -- -    -=ZZ)+=-
++++
+'''
+..
+ =
 )OOO+-  --  -  -  -- - -         -- - -    -     -  -  - -       -- - -    --     - -   -  --  -       --    -- -1ZZ)---
+ =+-
+  '
+  .
 --+AA)-   -    ---   ---         ----  -  -  --       -  -  -   -       - -    -- -- --     -    -      - -    --ZAZ1+-=
    =)-- -  --  -      -   -  - - -  ----  -  ---      - -   - -   -  - -    --  -  ----           -  - -      --MOOOMX11
+                                                                                                                 ++-
+                                                                                                                 ''
 +--+-        - -   -    - -- - - - -   -        -  ----- --- - - -   -  -- -          -    -- -                +OOOOOOOO
+                                                                                                                +X+++++=
+                                                                                                                ''''''
+                                                                                                                 .....
+                                                                                                                 -==
 X==M+-        -  -  -  -         -  ---  -   --    --  -- - ---- --  -  -- - -- -         ---   --     -       =OOOOOOOO
+                                                                                                                -++XXXX+
+                                                                                                                 '''''''
+                                                                                                                 .......
+                                                                                                                 ==----=
 OZZOZ-- -- --    - - -        -  --   --     -  -  --           -    - -  -- - -    --      --       -  --     -)OOOOOOO
++  =                                                                                                             +XXXXXX
+'                                                                                                                '''''''
+                                                                                                                 .......
+                                                                                                                  ---H--
+                                                                                                                     C
 OOOOM-      - -   ---===--  -      --- ---- -  -   --    -   --- -- -  -   -  - --   --      - - -  --  -       =OOOOOOO
++--+                                                                                                             ++XXXXX
+'  '                                                                                                              ''''''
+.                                                                                                                 ......
+                                                                                                                  =-----
 OOOOO= -    --  -=+1AMMXZ+=  - -  --- - -   - --   -- - - -    --   - -- --    - - -  - -  --      -   -   --   -MOOOOOO
+++-+-                                                                                                             ++X++X
+'  '                                                                                                              ''''''
+.  .                                                                                                              ......
+=                                                                                                                 ==-==-
 OOXMM=         =1XMOOOOMMX)--  -        -   -- --  -  --- -     - ----  - -    - -  ---         -                -OOOOOO
+X+                 =++-                                                                                           -+++++
+'                                                                                                                  '''''
+.                                                                                                                  .....
+-                                                                                                                   ====
 OO+==-- -  - -+MOOOOOOOOOOMA)+------    -   -    - --  -   -  -          -   -  --      - -   -  -  -   - -       -MOOOO
+++              ++++++-+==                                                                                          ++++
+''                ''                                                                                                ''''
+..                                                                                                                   ...
+=                                                                                                                     ==
 OOM----      +OOOOOOOOOOOOMOOMZ1)==-- -   --           -  -- - -  --     -  --      --      --                     -)OOO
+++            =+++-==+++++ =-                                                                                        -+X
+''             '''     ''                                                                                             ''
+..             ..                                                                                                     ..
+ =                                                                                                                    =-
 -)MOOZ+-    +OOOOOOOOOOOOOOOOMOOOX=---  -   --      --  --            -     --- -    - -  --        -  -     -     --XOO
+   =-        -++++++=-+=+=+++ ---                                                                                     +X
+               '''''       '                                                                                          ''
+               ....                                                                                                   ..
+                                                                                                                       -
 ---OOOX -  -MOOOOOOOOOOOOOOOOOOOOX)===+==-==-- -    --   -     -        --  -     ---            -           -     -+MOO
+   =++       ++++++++++++++++++=-                                                                                     ++
+    ''       '''''''''''' ''''                                                                                        ''
+    .        .......       ...                                                                                         .
+                =                                                                                                      =
 +--OOOO--  1OOOOOOOOOOOOOOOOOOOX11Z1ZXAMX1ZZ)+==-----    -     -  -     -- -    ---- -   -  --   -   - --  -      -)XAOO
+   -++-     ++++++++++++++++++=                                                                                       =+
+    ''       ''''''''''''''                                                                                            '
+    ..       ..............                                                                                            .
+     =       =  =  === =
 OMZOOOO-   MOOOOOOOOOOOOOOOA1ZXXOOMOOOOOOMZX11+==----    -           -  - -  -    - --- --  - -             -    -1OMMOO
++  -+++     +++++++XX+++++-     -- -++=+-                                                                          -  =+
+    ''      ''''''''''''''                                                                                             '
+    ..      ..............                                                                                             .
+     =       ==== =--   =
 OOMOOOO-  +OOOOOOOOOOOOOMX1XOOOOOOOOOOOOOOOOMMX)+==--  --  --        ---  -  -  -    ----- -       - -       -  --MMMMOO
+++ +++-    ++XX+++++X++=    -=-+++++++++++-=                                                                          ++
+''  ''      '''''''''''         '''''''''                                                                             ''
+..  ..      ...........         ...... .                                                                              ..
+=           =--=== =-==             =                                                                                  =
 OOOOOOO=- ZOOOOOOOOOOOOMXAAOOOOOOOOOOOOOOOOOOOOMMZ1111)+=-- ------   ---  ---    -- --  --      - -  -  --    --+ZMAMOOO
++++++X+    +XXXX++++++=    -++++++++++++++=+++-                                                                      -++
+ ''''''    '''''''''''      ''''''''''      '                                                                         ''
+ .....     ...........       .........                                                                                 .
+ = ==-     =----====              ==                                                                                   =
 MOOOOOO+ -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMMMZZZ)))++=-------------  -- -- -     -     -      -  -    -1OMMOOOO
+ ++++++    +XXXXX++++===+++++++++++++++++++++=+--                                                                -  --++
+ ''''''    '''''''''     '''''''''''     '    '                                                                       ''
+ ......    ........       ..........                                                                                   .
+     =      -----=           = =                                                                                       =
 OOO1ZOO1--MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAXXAZZZ1XA1=-------====++=-=-- - - -  - -- ---  -        -+MOOOOOOOOO
+-+-  ++    +XXX++++-=++++++++++++++++++--+++=+++--                                                             +++++++++
+     ''    ''''''''  ''''''''''''''' '   '                                                                      '''  '''
+      .    .......    ..............                                                                                  ..
+           =HH-==      =====      =                                                                                   ==
+            CC
 OO=-=ZOM- MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXX1Z1X1)))-==+=--=+++)111+===----- -       - -     -    1OOOOOOOOOOO
++-    +    +XX+++++++++++++++++++++++++=++++++===-                                                           ++X++++++++
+      '    '''''''  '''''''''''''''''''  ''                                                                  '''''''''''
+           ......   .............. ....                                                                       ..........
+           =HH==     ========                                                                                 =-=  = = =
+            CC
 OZ==-)OO--XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXZ1+==+=)))1ZX111Z1))Z1))+=+===---=---------   -  -    -=MOOOOOOOOOO
+-     --   +++++++++++++++++++++++-+++++++=+++++=+                                                            +++++++++X
+           ''''''''''''''''''''''' '''''   ''''                                                                '' ''''''
+           .....................    ...                                                                        ..    ...
+            ==  = ========== = =                                                                                       -
 OMXM1)MM))MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZZZ1ZZ11ZXAOMOMAXZOOA1)))+111))++++)+=))+=----==-=-  --- ----===+1)XMO
++          +++++++++++X+++++++++++++++++++=+++=+-            - -    --                                                 -
+'          ''''''''''''''''''''''' '''''
+           ......................  ...
+            ===== ====-====== =
 OOMOOAOX)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXZXAOOOOOOOOOOOMMMMMMZ11ZAMMXZ1))ZZZ1)1)+=+====--------------   -----
++= += -   ++++XXXXX+X+++++++++++++++++++++++++++=-     -=-+++++++-
+'  '       ''''''''''''''''''''''''''''''' '                  '''
+.          ...............................
+            ==-----=-======== ====    ==
 OOOOOOOX)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMAAMOOOOOOOOOOOOOOMOOOOOOMOOOOOOOOOMXMMZ)+)1))+=+++)1+-=+=-=---- -=---=
+++-++++  -+++XXXX++X+++X++++X++++X++++++++++-        -=-=++++++++++ ---+-= ----+----
+'  '''    '''''''''''''''''''''''''''''''''              '''     '
+.   ..    ............................                   .
+=   =      ==----==-===-====- ===-==
 OOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMXAMAMMOMAOOOMOOOAMMAXMOOMMOOOOOOOOOOOOOOOOOOOMMMAMAMZ1XZXXX1)===))==-====--=
+++=++++- +++XXXXXX+XXX+++++++++++++++++- --       -  -=- -=-      --  =-=++=-=+++++-----=
+'  ''''  ''''''''''''''''''''''''''''''                                         '
+.  ....   .......................... .
+=    =     =------=---======== ===
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOMMOOMMOOMOOMOOOOMMMMOOOMMOOOOOOOMAMMA1XZZZ11===++)+=
+X+++++++++X+XXXX++X+++++++++++++++++++++=-==-=+++++++++++++++===   -  --  -- -- -==-    -=-  ---=---
+''''''''''''''''''''''''''''''''  ''' '        '''''''''   '
+............................. ..                ....  .
+-=   ==  =-=----==-=====  =   =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMZZAZZMMZZAAXMOMMMOMOOOOMOMOMZ)111ZZ)
+++++++++X+XXXXXX+++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++===+= --              -   - -==- - -
+''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''' '   '
+.....................................  .  ..........................
+    =   -=--HH--==== = =========   =         ======-= ==== =  ==   =
+            CC
 1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMZ1XMAXZXZOOAZZMMOOOOOMAOM
+  =+++++XXXXXX+++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++++++++=+==-=-            --     -=---  -
+   ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   .  ........................................................................... ..
+       =---H--=====   =======-=== === ==  ===========  = = ====== ==== == ===  =
+           C
 -+ZZ1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMZAM1ZXZ1XMZZAMAA
+      ++XXXXXX++XXXXXX+XX+X+++++++++++++++++++++XX+++++++++++++++++++++X+++++++++++++++++++++++++++-- -
+       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
+       .......................................................................................
+       =-H----==------=--=-==== =    == = ======--== = ====   ====== ==-=  == === = ==    ===
+         C
 -=)=-1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMZXX1)
+      ++XXXXXXXXXXXXXXXXX+X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-  -
+       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '
+       .............................................................................................. ..
+       =----------H------=-=== =    ====     === ==   =  ==      == =====          === =  = =   = ==
+                  C
 -===-ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      +XXXXXXX+XXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-
+      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' '' ''''''''''''''''''''''''''''''''
+      .................................................................. ....  . .   ............................
+       --H----=---------==== = ========   ====  ==== = ===== =   =    ==              =  = == = = =   === ==  ==
+         C
  ==  =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      -+XXXXXXXXXXXXXX++++++++++X++++X++++++++++++X++++++++++++++++++X++++++++++++=+++++=+-=++++++++++++++++++++++++++++
+       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '' ''''       '''''' '''''''''''''''''''
+       .......................................................................  .    .        .  ...  ......  ..........
+       =HH----HH-HH---== ==  ===-====-============-==== ===  = = == =-= ===                           =  =     =      ==
+        CC    CC CC
 -+A1-ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      +XXXXXXX+XXXXXXXX+++X+XX++X++++++XX++++++++++++++++++++++++X++++++++++++++++++++++++==+++++++-=+++++++=+++++++++++
+      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''   '''''  '''''''''''
+       .................................................................................     .           ..  ...........
+       -HHHHH-=--------===-=--==-======--========================-= ==== = ==== == ====                         =  =
+        BCCCC
 --)AAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     =+XXXXXXXXX++X++XX++++++X+++++++++X+++X+X+X++++X++++++++++++++++++++++++++++++++++++++++++++++++++=+++======+++++++
+      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''       '''''''
+      .............................................................................................                 .
+      =-H-------==-==--======-=========-===-=-=-====-========= ======== ======     ==== ==   =
+        C
 A))XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -++XXXXX+XXXX+XXXXXXXX+++XXXXXXX+X+X++++++++++++++++++X+XX++++++++++++++++++++++++++++++++++++++++++++++++++++==+++-
+     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''      '
+      .................................................................................... ............  .  .
+      =HH-H-=----=---H----===-------=-=-= ==== =====   ===-=--=== =  = =========== ====     == =
+       CC C          C
 OOMZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--   +++XXXXXXXXXXXXXX++X++++++++++++++XX+++++++++++++++++++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++++-
+     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''    ''''''''''''''''''''''' ''''''''''''''  ''
+      ................................................  ............               ......  ..... .  . . ..   ....   .
+      ==--------------==-===== == = ===--= ==== ====      ===                         = =  = ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+--=++XXXXXXXXXXXXXXX+X++++++XX++X+++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''' '
+     ..................................................................................... .   ... .................
+      =HH-H-H-H-----HH=-======--==-===================-=================   ===       = ==      =         ==
+       CC C C C     CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++--++XXXXXXXXXXXXXXX+XXX+XXXXXXXX+X+X++++XX++++++++++X++X++++++++X++++++++++++++++++++++++++++++++++++=++++++++++++++++
+'    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''' '''''''''
+     ......................................................................................... . ....    ..... .. ...  .
+     =-HHHH-HHH--H---=---=--------=-=-====-- =========-==-== ==  =-==== = == === ===   =           =      ==   ==  =
+       CCCC CCC  C
 OOX1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++=  -+XXXXX+XXXXXXXXXXXX+XXXXXXXXXX+XXX+XXXX+XXXXX++XXXX+XXX++XXXXXXXX+++++++++++++++++++++++++++++++++++++++++++==+++++
+'    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''   '' ''
+     ........................................................................................... ......   ...       . ..
+     =-HHH-=HHH-H--HH-H-=--H-------=---=----=-----==----=---==--------==== =====   =   = = = =       =     =
+       CCC  CCC C  CC C    C
 OX++MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-    ++XXXXXX+XXXXX+XXXXX+XX+XXXX++XXX+XXXX+XXXX+XXXXX+XXXXXXX++XXXXXXX+XXXXXXXX++++X++++++++++++++++++++++++++++=++++++
+     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''    '
+     ........................................................................................... ... ...........
+     ==H-----=-----=-----=--=----==---=----=----=-----=-------==----HH-=-H------====-==== ====            =
+       C                                                            CC   C
 OOX1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++-  -+XXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX+XXXX+XXXXXXXXXXXXXX++XXXXXX+XXX++++++++++++++++++++++++++
+'    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.    ....................................................................................................... .. ......
+     =HHHH-H-HHHHH-----H-=--H----H----------H------=----------=----=---------H----==------=---=== ==          =
+      CCCC C CCCCC     C    C    C          C                                C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++++X+++++++++++++++++++++++++++++++++++++++X+++++XXXXXXXX+++XX+++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................................
+--== =-HHH-H---H-HH--HH-H--H----H--=-=-=====-=====  ====== ==== === ===== ==========-=====--------===--====== ==  =
+       CCC C   C CC  CC C  C    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXX++XXX+++X+++++++X++++++++++++++++++++++++++++++++++++++++++++++++++++++++X+++X++++X+XX++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHH---HH-HHH-H--HHH-H--==---===-=======-========= ==  === ==== = ===       = =      =       = ==-= =-====-=--======== =
+CCCC   CC CCC C  CCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+XXXXX+X++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++=+++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''   '   ''   ''  ''''''''''''''''''''
+.....................................................   .................. ....  ..        .    .   ....................
+HHHH-------=-----=-======== ======= =  ===    =  =       =  =     =                                       =    === === =
+CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX+XX+X+XX++X+++XX+XX+++XXXX++X+XX+XXX+XXXXX+X+XXX++X+++++++++++++++++++++++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
+.........................................................................................................  ..  .........
+HHHHH-HHHHHHH-----=--=-=--==-===--=--===----==-=--=---=-----=-=---==-====== ==== ===   = =  ==    =         =     = ==
+BBCBC CCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+++X+++++XX+++++XX++XXXXX+++++XXXXXX+XXX++XXXXXXXX+XXXXXXXX++XXX++XX++++++++++++++++++++++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''
+..............................................................................................................     .
+HHHH--HH----===-=====--=====--==-----=====------=---==----H---=----H---==---==--=======  = == ==       ==
+CCCC  CC                                                  C        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+XXXXXXX+XX+++XXXXXXXX+++++X+X++++++XX++++++++++X++++X+X+X+++++XX+++X+++++++XXXX+++X+XX++XX+++++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''' '''
+...............................................................................................................   .    .
+HHHH-H=H------=--===--------=====-=-======--==========-====-=-=-=====--===-=======H---===-=--==--===== = =
+CBCC C C                                                                          C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+X+XXX+X+++++++++++++++++++X+XXX++XXXXXX+++XX++++XXX++X+XXXXX++X++++++++++++++++X++X+++X++++XXX++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+--HH-------=-=---=-===================-=---==------===--====---==-=-----==-==== ======= ===-= -===-====---======
+  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+XXXXXX+XXXXX+XXXXXXXX+XXXXXXXXXXX+XX+XXXXXXXXX+++XXXXXXXXXXXXXXXX+X+++X+++X+++++++++++++++++++++++++++X+++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHH--H--H-=------=-----=--------=-H---------=H-=---------===----------------=-===-===-======== ====     === = ===-=====
+BCCC  C  C                         C          C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX++XX++++X+++++++X++X++++++++++X+++++++X++X++++++++++++++++++++++++XX++++XX+++++++XX++++++XX+++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+----==--====-=======-==-==========-===== =-==-==  ====================--  ==--=======--======--======== ===  =   === ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+XXXXXXX+XXXX+++X+XXXXXX++++X++X+++++X++X++XX++XXXXXXXXXXX+XXXX+++X++++++++++++++++X++++XXX++++++++X++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHH-------=-------=----===-=------====-==-=====-==-==--==-----------=----===-===  ===== = ===-====---========-==========
+CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXX+XX+XXX++++X+XX+XXX++XXX+XXXXXXXXXXXXXXXXXXXXXXX+XX++++++++++++++++++++++++++++++X+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHH-HHH--H--------H----H----=-=H---=--=---====-=--=---==---=---H--------HH-H-------=--==== = ==  ==  ===    ========-===
+BCC CCC  C        C    C       C                               C        CC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+XXXXXXXXXX++XXXX+X++XXX+X+X++++X++XXX+XXX+X+++X+++XX++XX+XXX++X++XXXX+XXX++X+XX+++++XX++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHH------H-----H-=----------==----=-==---=-=-====-==---=---=-===-===--==--=---==-==----=H--==-=--=====-- ======= === = =
+BBC      C     C                                                                        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+X+XXXX++XX+X+XXXXXX+XX+XXXX+XXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXX++++++XXXXX++X+++X+++++X+++++X+XXX+++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHH-H-H--H----=-=----==--=-=------=--=----=--------------H-H-H=----HH---HH--H--======-----==-===-  ===-==== -=---== ====
+BCC C C  C                                               C C C     CC   CC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX+XXX+X+XXX+XXXX+X++XXX++++XXX++X+++++++++++++++++++XXXXXX+++++++++++++++++XXXX++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHH-----H----------=---=-=---=----=-==---====---==-=========== =======------======== ======= ----====== = =====     ===
+CCBC     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX+X+XXXXXXXX+XXXXXXXXXX+XXXXXXXX+XXX+XXXXXX+XXXX+XXXXX++XXXXXX++XXXXX+X+XX++++XX+X+XXX++X+++X+++X++XXX+++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHH---H-=-=--H----H=-H--H-----=-----H--=---=---HH-=----=-----==------==-H---=-=--====--=-=---==-===-===-==---==== = ====
+CCC   C      C    C  C  C           C          CC                       C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX+XXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXXXXX++++++X+++++X+++X++X+++XX++X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHH-----------=----H-----==---H----H---HH-------HHH--HH-HHH-H-HH-HH---HH-HH--=--=------======-=====- ==-==-===--==-
+BCCCCCCC                C          C    C   CC       CCC  CC CCC C CC CC   CC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX++X++X+XXX+XXXX+X+XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+++++++++++++++X++X+++X+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HH--------H-----==-==-=---=----=-=----=------------H-------H--HH----HHHH--H----HHHHH------HH-==-===============-==-===-=
+CC        C                                        C       C  CC    CCCC  C    CCCCC      CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXX+XXXXX++X+XX++++XXXXXXXXXXXX+++XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HH--HHH-H-H--HH--------=-----==-=--====--------H---===--------HHH=-----HH-H--HH-H-HHHHHHHHHHHHH-HH---------==-=---------
+BC  CCC C C  CC                                C              CCC      CC C  CC C CCCCCCCCCCCCC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+XX+XXX++XXXXXXXX+XX+X+X+++X++++++++XX+++++XX+XX++XXX++XXXXXXXX++++XX+X+++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+H-HH--HHH-H=--=---==--------=--=-=-===-========--=====--=--==---==--------====--=-===---=-------------HH----HHHHHHH-H-HH
+C CC  CCC C                                                                                           CC    CCCCCCC C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX++X+XXX++X++++X++X+++++X+X+X+++X++X++++++++++++++XX++++++++++++++X++++++X+++X+XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+H---HHH-HHHH--------H---H-----=------==-=---==-====-==-=====-=-=-===-==-==============--=========== ==-======-= =-=-----
+B   CCB CCCC        C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++XXXXXXXX+XX++++XX+XXXXXX++X+++XXX+X++XXX+++++++++++X++++++++++X++X++++++X++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-H--HH-HH-H-H----H-------------=-==--------=--====--=------==-===---=-==---===========-=== ======-==-======-===========
+ C  CC CC C C    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++X+++++++++++++++++X+++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHH-H----HH-----H---------=--------H--HH-HHHHHHHHH-HHH-HH---H-H-------=-==========-======== == =====-=== === =
+CCCBCCCCCCCCC C    CC     C                  C  CC CCCCCCCCC CCC CC   C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++XX++X+++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-HHHH-H---HH------------H-------HH-HH---H---H-H--H--HHHHHH---HHHHH-HHHHHHHHHHHHHHH--HH-HHH-=-===--==-====== ======= ==
+ CCCC C   CC            C       CC CC   C   C C  C  CCCCCC   BCCBB CCBBCBCCCCCCCCB  CC CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+X++XX++XX+X+X+++++XX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++XX+++X++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHH-HH-H-HHHHHHHH-H-H-H-=----=-==--==--=-=-=====--======-----------H-H----H-----HHHHHHH-HHHHHH--HH---H==-==--===-====
+BCBCCC CC C CCCCCCCC C C C                                            C C    C     CBBCBCB CCBCCC  CC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX+XXXXX+XXX+++XXXXXX++XXXX+XX++X++X+X++XXXXXX+XX++X+++++X+++++XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHH-H-H--HHHH-H------=-----=---===------==----=--==-==-=-==------=--==-=====-=====-----=----H-H-HHHHHH---H-HH--HHHHHHHH
+BCCC C C  CCCC C                                                                             C C CCCCCC   C CC  CCCCCCCB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX++X+XX+++XXXX++XX+XXXXX+XXXXXXXXX+X++X+XXXX++XXXXXXXXXXX+++X++XXXXXX+XXXXX+++X+XXXXXXXXXX++++XXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHH--HHHHHHH------==-=--===----==--=-----=---------=-==-=----==-------H-H-===-==------=-----===-=--------H-====---HHHH
+CCCCC  CCCCCCC                                                          C C                                C        CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX+++XX+++++++X++X++++++++++XXX+++++++X+++X+++X++++X+X++XXXXXXXXXXXXXXXXXXXXXXX++X++++XX+X+X+++++++X++X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHH-HHHHHHH---HH===--=======-==-======== =---= =====-===-===-====-=-==-HHH-H----HHHH---HHH---==-====--=-=-=== ===-==-
+BCBCCC CBBCCCC   CC                                                       CCC C    CCCC   CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+XXX+X+++XXXXXXXXX+XXXX+XXXXX+XXX+X+XXX+XXXXXXXX+XXXXXXXX++X+XX+XXXXXXX++XXXXX+XXX+XXX+XXX++XX+XXX+++X++XX+X+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+--H------=---=-===---------=----=-----=---=-=---=--------=-H-HHH--==-=--=-------==-----=---=---=---==--=---===-==--=-===
+  C                                                        C CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+XXXX++XXXXXXX+++X+++++X++++++++++X++++++++++++XXXXXX+X++XXXX+XXXXXXX+XX+XXX+++++X++++++++++++++++X+++X+X++X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+H---HH-----H=----==-------===-=====-==========-== =========------=-==----=-------=--=---=====-=== = ==   = ===-= =-=-==-
+C   CC     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++XXXXXX+XX+X++XX+X+++XXX+XX++++++XXXXXXXXXXXXXXXXXXXXXXXXX++X++++++++XX++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHH-H-HH-HH----H-H-----------------=--==--H---=--=-==--=-===---=--=== ==---------HH-----H-H--H---==-========--=========
+BBC C CC CC    C C                        C                                      CC     C C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+X+X++XXX+XXXXXXX++XXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HH-HHH--HH--------HHHH-H---=-=------=-=------H--H-H-----HHHH-HH--HHHHHH-H---H---HH-===-=H=-==---=-----H-==---H--HHH-HHH-
+CC CCC  CC        CBCC C                     C  C C     CCCC CC  CCCCCC C   C   CC      C             C      C  CCC CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+X+X++XX+XXXXXX++X+XXXXX+X+++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXX++X+X++X+++++++++X+++XXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHH-HH-HH-HH-HHH--H-----=----H-=-=-==--=-----H==-=-----=-===---=-----H--H---HHHH----------==-=-==-==  =====-===----=
+BBBCCCC CC CC CC CCC  C          C               C                       C  C   CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XXXXXXXXXXXXXXXXXXXXXX+++XX++XX+X+X+XXX+X+XXXXX+XXXXXXXX+XXXXXXXXXX+XXX+XX+++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HH-H----H-HH----------H----HHH-H--H==-=---------HH---H---HHH-===--==--=-=H=---=-=HH---=--H--H--=----------=---=--=======
+BC C    C CC          C    CCC C  C             CC   C   CCC             C       CC      C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXX+X+X++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+X++XXX+X++XX+X+++XXXXX+++XXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+H-------HHHHHHH--H-HH----HH===----=- -==----=-----H-HHHHHHHH---HHHH-H--HHHH--=-------=-==---=-==--=-== -----===-H----H-H
+C       CCCCCCC  C CC    CC                       C CCCCCCCC   CCCC C  CCCC                                     C    C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX+XX++X+XXX+XX+++++++X++++++++++++++++++X+++++++++XXXX++XXXX+XXXXXXXX+XXXXXXXXXXXXXX++++XXX++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+--H--HHHHHHHHH--=--==-=---=--==  ===-==== =============-=========----==-H--=--H-HHH-=--H-H---------====---=== ==========
+  C  CCCCBCCCC                                                          C     C CCC    C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX++XXXXXXXXXXXXXX+XXXXXXX++XXXX++++XXXX+X+++XX++++++X++++++X++++++X+++++XX+XX+++XXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHH-H-H==--HH-----HH---=---H---==--H-====-H--=-===H-======-======-======-==== --=--===H-------HH------HH-------
+BCBCCCCCCCCC C C    CC     CC       C       C      C       C                                   C       CC      CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX++XXXXXXXXXXXX+X++XXX++++XXXXX+++XXX+++++++XX++++++++++++X++++XXXX++++XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHH--H-H---HH-H----H-H-H-H---------------=-H----==-HH------HH-=-==--H====-HH--===---== ====--= ======= = -====----====HH
+CCC  C C   CC C    C C C C                 C       CC      CC       C     CC                                          CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXX+XXX++X++XXX+X+X+XXX+X++++XX+XX++XXXXXXX+XXXX+XXXX++XXXXXX+X+XXXX++++XXXX++++XX++++++XX++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-HH-H-----------H----=-H-==-==---=-=-=---=-= ==--=--==HH-----=-H--=----==-H---H=-=----====HH--====--==== =-- = ==== == =
+ CC C           C      C                              CC       C          C   C           CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXX+XXXXXX+++XXXX+++++XXX+X++XXX+XX+++XXX+XX++++++X+++++++XX++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-HHHHHHH-HH-=----H-HH-HHH-HH---HH-HH--HH--H----HHHH-==HH---=--H---===--H-=====H--=-==---=--===---=--=== ==H===   =H-===
+ CCCBCCC CC      C CC CCC CC   CC CC  CC  C    CCCC   CB      C        C      C                           C       C
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ --+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+++XXXXX++XXXXXX+++XXX++++++XX++++XXX+XXX+X+++
+   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   .....................................................................................................................
+    -HHHHHHHHHHHH-HHHHH---H--HHHHHHHHHH-H-HH--H-H-HH----H-----------=-----===--H--==------===-H-======--====---=---=-===
+     CBCCBCCCCCCC CCCCC   C  CCCCCCCCCC C CC  C C CC    C                      C              C
 Z)-=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX++XX+XXXXXXXXX+XXXXXXX+XXXXXXXXXXXX+X+XXXXX++++XXXX++++XXXX
+      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      ..................................................................................................................
+      --HHHHHHHHHH---HHHHH--H-HHH--HH-H-H=---H-H-----H-----H-==--=------HHH=-----H-=------------=-=-----== =-HH-====-H--
+        CBCBCCCCCC   CCCCC  C CCC  CC C C    C C     C     C            CCC      C                           CC      C
 1+))- OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+X++XXXXXXX+XXX+++++X+XXXX+XX+X+++XX+XXXXXXX++XXXXX+++XXXX
+       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       .................................................................................................................
+       -HHHHHHHHHH---HHHH----HH-H--H--H-HH--H-H-H--HH-H---=---=-==-------=---=====-=----=--=-===--=-------==-----= =HH--
+        CCBBBCCCCC   CCCC    BC C  C  C CC  C C C  CC C                                                             CC
 1=-=  +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX+XX++X+++X+++++++++++++++++++X++++++X++++XXXXX+++XX
+       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       .................................................................................................................
+       =HH---H-HHH--------------------H---------H----H----------===--=--==-===-======== ==========-= ====-====-----===--
+        CC   C CCC                    C         C    C
 1)---  MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+++XX++++XXXXXX++XX+XXXXXXXXXXX+
+        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        ................................................................................................................
+        -HHHHHHHHHHHHHHHHHHHHHHH----HH-HH-HHHHHHHH--HHHHHH---HHHH--HH--HH---H---=-------===--====------==--=-----H-----=
+         BBBCCBBBBCCBCCCCCCCCBCC    CC CC CCCBCCCC  BCCCCC   CCCC  CC  CC   C                                    C
 X1)-   -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        +XXXXXXXXXXXXXXXXXXXXXX+++X+XXX+XXXXXXXXXXX+XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+XXXXXXX+
+        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        ................................................................................................................
+         HHHHHHHH---HHH--------== -=-HH=----H----H-=---=--------H-H-HH-H--HHHH-H--HHHHH----HH------HH---=-H-HH-=---HHH-=
+         BBBBCBCC   CCC              CC     C    C              C C CC C  CCCC C  CCBCC    CC      CC     C CC     CCC
 1)=--   ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+         +XXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+XXXXXXX+X+XXXXXXX+X++++++XX+XXX+X+XXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         ...............................................................................................................
+         =-H-HH-H-----H--H-------=-------=-------=-=-------=-======--=--- -=H-----HHHH=---HHH----HHHHHHH-HHHHH---HHHHH-H
+           C CC C     C  C                                                  C     CBCC    CCC    CCBCCCC CCCCC   CCCCC C
 +)=--   -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+         +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++XXX+++++XXX++X++XXXXXXXXXXXXXXXXXXXXXX
+         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         ...............................................................................................................
+          HHHHHHHHH-H-HHHHHHHHHHHHHH-H-HH-HHHH-HH--HHHHHHHH---HHHHHHH--------==-==---=====---==-==-H-----HHHHH-H--HH----
+          CCCBBCCCC C CCCCCCCCCCCCCC C CC CCCC CC  CCCCCCCC   CCCCCCC                              C     CCCCC C  CC
 -=---    XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXX+++++XXX+X+XXXXXXX
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ..............................................................................................................
+          -HHHHH--HHHHHHHH-----HHH-----H---H-H-HHH---HH--H-------HHH-HHHHHHHH-HH-HHHHHHH----=-=-------=====---=-=-H-H---
+           CBCCC  CCCCCCCC     CCC     C   C C CCC   CC  C       CBC CBCCBCCC CC CCCCCCC                          B C
 ----      OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XX++X+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ..............................................................................................................
+           HHH-HHH-H--HHHH-----HHHH---HHH-H---H--HH----H-=---=--==-=--H----=HHH-HHHHHHHHHH---H--HHH--HHH----H--HHHH-====
+           CCC CCC C  CCCC     CCCC   CCC C   C  CC    C              C     CCC CCCCCCCCCC   C  CCC  CCC    C  CCCC
 -- --  -  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          -XXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXX+XX+XXXXXXXXXXXXXXXXXXXX+XX+XXXXXXX+XXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           .............................................................................................................
+           -H--H-H----H----==-HH--------HH------=--=HHH---H-------------=--=-------=-----==---------H-H-H-H-HHH--HH--H--
+            C  C C    C       CC        CC          CCC   C                                         C C C C CCC  CC  C
  -    -   -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+           +XXXXXXXXXXXXXXX+XXXXXXXX+XX++X+++XXX+++++XXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXX++++XXX+XX++XXXXXXXXXXXXX
+           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           .............................................................................................................
+            H-H--H-H-HH----=----H---=--==-===---=====-H--H-H-HH-HHH--HHHHH==HHHH-HH--H---HH----====---=--==--H--H---HHH-
+            C C  C C CC         C                     C  C C CC CCC  BCCCC  CCCC CC  C   CC                  C  C   CCC
 - -        ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXX+
+            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+            ............................................................................................................
+            -HHHHHHHHHHHH-H-HH-H-HHHHHH-H---HH-HHH--HHHH-H---HHHH-=--HHHH-==-HH-HHHHHHH-HHHH--H-HHHHHH-----H--==HH---H-=
+             CCCCCCCBCCCC C CC C CCCCCC C   CC CCB  CCCC C   CCCC    CCCC    CC CCCCCBC CCCC  C CCCCCC     C    CC   C
 --          OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXXXX++++XXXXXX+XXXXXXXXXXXXXXXXXXXX+
+             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ...........................................................................................................
+             -HHHHHHHHHHHHHHHHHHHHH-HH--HH--HHHHHHHHHHHHHHHHHH-H-H--HH-HHH--H--=--=-----====--H---=---HH-HH--HH-HH-HHH-=
+              CBCCCCBCCCCCBBCBCCCCC CC  CC  CCCCCCCCBCCCCCCCCC C C  CC CCC  C                 C       CC CC  CC CC CCC
  -- -     - =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+             +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXX+XXXXXXX+XXXXX
+             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ...........................................................................................................
+             =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-HHHHHHHHHHHHHHHHH-H-HHHHH----HH---==-H-H---=HHHH---=HHHH-
+              CBCCCBCCCCBCCCCBCCCCCCBCCCBCCBCCCCCCCCCCCCCC CCC CCCCCBBCCCCCCBCCC C CCCCC    CC      C C    CCCC    CCCC
 =-         - MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXX+
+              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+              ..........................................................................................................
+              ----==---HH--HHHHHH---HH-HHHHHHHHHHHHHHHHHHHHHHH-HHH------H-H--H--HH-HH-HHHH-HH--HHHHHH---H--HH----==----=
+                       CC  CCCCCC   CC CCCCCBBCCCCCCBCCCBCCCCC CCC      C C  C  CC CC CCCC CC  CCCCCC   C  CC
 =-----    --  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              +XXXXXXXXXXX+XX++++++++X+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+              ..........................................................................................................
+               H-H--------=--========-=-=-=--------HH---HH-HHHHHH-HHHHHH-H--HHHHHHHHH-HHHH-H--HHHH--H--HH-HHHHHHH-HHH-HH
+               C C                                 CC   CC CCCCBC CCBCCC C  CCCCCCCCC CCCC C  CCCC  C  CB CCBCCCC CCC CC
 ==--   - - -  XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+               +XXXXXXXXXXXXXXX+XXXXX+XXX++XX+++X+XXX++XX++XX++XX++XX+++X+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX
+               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+               .........................................................................................................
+               =HHHHHH-HH-H--H-=-----=---==--===-=---==--==--==--==--===-=--=-----H----H--HH---H-H-HH-------H=-H---HH--H
+                CCCCCC CC C  C                                                    C    C  CC   C C CC       C  C   CC  C
 =-=----  -    -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+               +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+X++++++++++++++++++++XX+XX++XX+XXXXXXXXXXXXXXXXXXXXXXX
+               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+               .........................................................................................................
+                -HHHHHHHHHH--H-H-HHHHHHHHH--HH-H--H--H--H-=------=-========== == ======--=--==-H=-----HHHHHH-------H---H
+                 CCBBCBCCCC  C C CCCCCCCCC  CC C  C  C  C                                      C      CCCCCC       C   C
 +=---  --      XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++X++++++++++++++++++X+++X+XXXXXXXXXXXX
+                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                ........................................................................................................
+                =HHHHHHHHHHH--HH-HHHHHHHHHHHHHHHHHHHHHH-HHH---H-------======= =====-===== ====== =====-===-=-H----HHH-HH
+                 CCCCCCCCCCC  CC CCCCCCCCBCCCCCBCCCCCCC CCC   C                                              C    CCC CC
 1==--  -       -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++++++++++++XX
+                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                ........................................................................................................
+                =HHHHHH-HHHHH-H-HHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH------------=-==============  =========H-
+                 CCCCCC CCCCC C CCCCCCBCCBC CCBCBCBCCCCCCCCCCCCCCCBCCCCCCCC  CC                                       C
 1)+=----  -     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXX+X++++++++X+
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .......................................................................................................
+                 HHH-HHHHHHHHH----HHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HH--=-=------=-========-=
+                 CBC CCCCCCCCC    BCBBCCCCBCCBCCCCB CCCCCCCBCBBCCCBCCCCCBBBCCCCCCCBCCBCCCBCC   CC
 Z)+------       AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                 XXXXXXXXXX+XX++++++XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX++XXXX
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .......................................................................................................
+                 -H--H-----=-H======-H---H-=--H--HH--HH-HHH-HHH--HHHH--------H-H-H-HHHH--HH-HHHHHHHHHH-HH-H---==--==----
+                  C  C       C       C   C    C  CC  CC CCC CCC  CCCC        C C C CCCC  CC CCCCCCCCCC CC C
 X1)=----        )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                 +XXXXXXXX+XXXXXXX+++X+++XXXXX+++XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .......................................................................................................
+                  --------=--H----===-===-----===-----=----------H---HHH-H---H-----==-------HH--HHHHHH-------HHHHHHHHH-H
+                             C                                   C   CCC C   C              CC  CCCCCC       CCCBCCCCC C
 AMZ++==- --     -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                 +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .......................................................................................................
+                 =---HHHHH--HH--HH-HH--H---H-------H----HHH-=-=-----H-==----HH--HHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                     CCCCC  CC  BC CC  C   C       C    CCC         C       CC  CCCCBCCCCB  CCCCCCCCBCCCBCCCBCCBBBCBBCBC
 AAZ1)+-- ---    -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                 +XXXXXXXXXXXXX+XXXXX+XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+++++XXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .......................................................................................................
+                 =-----H--HH---=--H--=--H--=H-HHH---HH-HHH-HHH-H---HH--=---H---=====-HHHH-==-----------HHHHHHH-HHHHHHHHH
+                       C  CC      C     C   C CCB   CC CCC CCC C   CC      C         CCCC              CBCCCCB CCCCCCBCB
 OMAZZ)=- - --   -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-                +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+++XX+XXXXXXXXXXXXXX
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .......................................................................................................
+                 =HHHHHHHHHHHHHHHHHHH-HHHH--HH-HHH-HH--HH-HHHHHHHHHHHHHHHH-HHHH--HH-HHHHHHHH-=------===--=-----HH--HHHHH
+                  CCBCBBBBBCCBCCCBCCC CCBC  CB CCC CC  CC CBCCCCBCCCCCCCCC CCCC  CC CCCCCCCC                   CC  CBCCC
 OMX))+=----     )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-                +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXX+X+
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .......................................................................................................
+                 =-HHHHHHH--HHHHHHHHHH-HH-HHHHHH--HHHHHH--HHH=-HHH-H----H---HHH-H-HH--HH--HH-H-H----H-HHH-====-------=-=
+                   CCCBBCC  CCCBCCCCCC CC CCCCCC  CCCCCC  CBC  CCC C    C   CCC C CC  CC  CC C C    C CCC
 MMXZ))=---- -   ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                 +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .......................................................................................................
+                 =--HHHHHH--HHHHHHHH-------H----=--H---HH-HH--HHH--HH----HH---HHH-HHHHHH---HH-HHH-HH-HHH----H--H--H---=-
+                    CCCCCC  CCCCCCCC       C       C   CC CC  CCC  CC    CC   CCC CBCCCC   CC CCC CC CCC    C  C  C
 MMMXZ)+=---     MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXX+XXXXXXXXXXXXX+XXXXXXX
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .......................................................................................................
+                 -H-HHHHHHHHHHHHHHHHHHH-H-HH-H--------H-HHHHH-H=---H--HHH----HHH-HHH---H=-=-------=--------HH---=H-HH-HH
+                  C CCCBBCCBCCCCCCBBCCC C CC C        C CCCBC C    C  CCC    CCC CCC   C                   CC    C CC CC
 OMAZ1+-=-      -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-               +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XXXXXXX++X+XX+XXXXX+XXXXXXXXXXXX+XXXXXXXXXX
+                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                ........................................................................................................
+                 -----H-HHH-HHHH-HH-HHHH-HHH-HH-HHHHHHHH-HHHHH---H----HH-==-=-HH-HHH==-=--=-----=----------H-=--------H-
+                      C CCC CCCC CC CCCC CCC CC CCCBCCCC CCCBC   C    CC      CC CCC                       C          C
 MOOX11+==-- -  ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ --             +XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XX++++X+++XX+XXXXXXXXXXXXXXXXXXX
+                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                ........................................................................................................
+                =HH-HH-HHH------=-----HHH---HH--------HH--H---HH-H--HHHHHH-HH-HH--HH==-=--====-===--=-----H--HH-HHH-H-H-
+                 BB CB CCC            CCC   CC        CC  C   CC C  CCCCCC CC CC  CC                      C  CC CCC C C
 MMMX11==--- - -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+               +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX++++XXXX++XXXXXXXXXXXXXXXX+X+++X+++XX++XXXX+X+XXXXXXXX
+               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                ........................................................................................................
+                -HHHHHHHHHHHHHHHHHHHHHH-HHH--H--H-H-HHH-=---H-----====----==-----H--HHHHHH--=-===-===--==-H--=-=----HHH-
+                 CCCCCCCCCCCCCCCCCCCCCC CCC  C  C C CCC     C                    C  CCCCCC                C         CBC
 MAZXX1==---- -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+               +XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXX+XXXXXXXXXXXXXX+++++++XX+
+               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+               .........................................................................................................
+               =-H-=----HHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H---------==----H----HH----=-H-H-----HH---=======--=
+                 C      CCC  CCCCCCCCCCCBBCCBCBCCCCBCBBCBCCCCBCCCCC C               C    CC      C C     BC
 OMMAA1+==-   -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-             +++XX+XXXXXX+XX+++XX++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXX+XXXXXXXXXX+XXXXX
+              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+              ..........................................................................................................
+               ==--=------=--===--==--=--------HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHH--H-=--------=HH-HHH--H-=---H-
+                                               CCCCCCBCCBCCCCCBCBCBCBBCCCCCCCCCCC CC CCCCC  C           CC CCC  C     C
 OAXMM)=---- -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-            =+XXX+X+++XX+X+XX+XXX+++XX++++X++++X+++X+++XXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX++X+++XX+X
+              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+              ..........................................................................................................
+              =---=-===--=-=--=---===--====-== =-===-===---==------HHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHH------=-=--==-===H-=-
+                                                                   CCCCCBBCCBCCCBCC BCCCBBCCBCCCBCC                 C
 MMZAM+--    XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+             +XXXXXXXXXXXXXXXX+XXXX+XXXXX+++++++XX++++++++++++++XX++X+++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ...........................................................................................................
+             =HHHH-HH-H-H----H=----=-----=======--=========== ==--==-===--=-H-HH----HH-HHH-HHHHHHHHHHHHHHHH-H-H-H-------
+              CCCC CC C C    C                                              C CC    CC CCC CCCCCCCCCCCCCCCC C C C
 MX11Z=-  - =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            +XXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX++X+X+XXX+X+X+++++X+X+XX++++++XXX+++XX+XX+XXXXXXXXXXXXXXXXXXXXXXXXXX
+            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ...........................................................................................................
+             --H--HH-HHH-HHHHHHHHHHH---H-=--H-H-H---==-=-=---=-=-=====-=-=--======---===--=--=HHH-HHH--HHHHHHHHHHHHHHHHH
+               C  CC CCC CCCCCCCCCCC   C    C C C                                             CCC CCC  CCCCCBCCBBCBCCCCC
 X11ZX-    -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+           -+XXXXXXXXXXXXXXXXXXXXXXX+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++++++++++++++XXX+++X+++++++XX++XXXXXXXXXXXXXXXXX
+            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+            ............................................................................................................
+            =-H-------------HH------=-H=----HHHHH-HHHH-HHHHH-------=---========= ====---===-==== ==--==-H---HHHHHHHHH-HH
+              C             CC        C     CBCCC CCCC CCCCC                                            C   CCCCCCCCC CB
 Z))O)=-   AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   +       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXX+XXXXXXXXXXXXXXXXXXXXX+X+XX+XXX+XX+++++++++X++XX++++++++++++X+X++XXX+XX
+   '       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           .............................................................................................................
+           -HHH-H-H-HHH-HHH-HH-------HH--====----=----H--HH--H-HHHHH---=-=--=---=--=========-==--=========== -=-==-H-=--
+            CCC C C CCC CCB CC       CC               C  CC  C CCCCC                                               C
 +==X- -  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXX+XX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+X+++XX+++++++++X++
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ..............................................................................................................
+           ----=--===------------HHHHHHHHHH-H------H-HHH---==-HH=H----H-HHHHHHHH-HHHH-HHH-----=------=-===--=========- =
+                                 CCCCCCCCCC C      C CCC      CC C    C CBCCCCBC CBCC CCC
 =--1-  - AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          XXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XXXXXXXXXXXXXXXXXXXX+XXXXX+XX++++++++++
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ..............................................................................................................
+          -HHHH---H-H-H----------HH-=----HH-HH--HHHHHH-HHH-HHHH-HH----H-----=---=H--H-H----H-HHH-H---=-----=--===== ====
+           CCCC   C C C          CC      CC CC  CCCCCC CCC CCCC CC    C          C  C C    C CCC C
 --==     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+         =XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+XXXXXXXXXXXXXXXXXXXX++++
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ..............................................................................................................
+          -H-H--H-HHH----H-HHHHH-HHH-H---H-H--=--H-H---H-HHHHHHHHHHHHHHHHHH-HH---H-----=-------=-----H----HHHHH-----====
+           C C  C CCC    C CCCCC CCC C   C C     C C   C CCCCCCCBBCCCCCCCBC BB   C                   C    CCCCC
 - --     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+         -+XXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX++X++++XXXXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXXXXXXXXXX
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ..............................................................................................................
+          =HH-HHH-H----=H---HH-----H-HHHHHHHH-HHH---------H-=-=--==-====-H----H-HHHHHHH-H---H---======= == =-HH----HHHHH
+           CC CCC C     C   CC     C CCCCCBCC CCC         C              C    C CBCBBBB C   C                CC    CCCBC
 ----      OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XX+X+XXXXX
+           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           .............................................................................................................
+           -HHH-HHHHH--HHH-H-H--------=-=--=------HHHHHH-H--H--HHH-------H--=H--H---HH---HHHHHHHHHHH----HH==-=--=-=--H--
+            CCC CCCBC  CCC C C                    CCCCCC C  C  CCC       C   C  C   CC   CCCCCCCCBBC    CC           C
 - - -     -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+           =XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+XXXX+XXXXXXXXXXXXXXXXXX++
+            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+            ............................................................................................................
+            -HH-HHHH-HHHHH-H-=------H--------------HHH----H-HH---H-----H-H-HHHH-H----------==-=H-H-=-H-HHHH--H--HH--HH==
+             CC CCCC CCCCC C        C              CCC    C CC   C     C C CCCC C              C C   C CCCC  C  CC  CC
            -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXX++X++++++++++XXXXXXXXXXXXXXXXXXXXXXXX+X+XXXX+XXXXXXXXXXXXX
+             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ...........................................................................................................
+             -HHHHHH-HHHH-HHH--H---HH-H---HHH=-H---HHH-H----H-==-======= ==HH--H--HHH---HH------H--=-=----=----HHH-HHH-H
+              CCCCCB CCCC CCC  C   BC C   CCC  C   CCC C    C              CC  C  CCC   CC      C              CCB CCC C
  - -         OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+             +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX++XX+++XXXXXXXXXXXXXXXXXXXX+XXXXXXXXX++
+             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ...........................................................................................................
+              HHHHHHHHHHH--HHHHH--H-H-----HHH--H---H---H--HHH-HH-H-HHH-H-=-------==H- ==--HHH--H-HHHH-HHH---=---H-----==
+              CBBBCCCCCCB  CBCCC  C C     CCC  C   C   C  CBC BC C CCC C           C      CCC  C CCCC CCC       C
 -  -         =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++XXXXXXXXXXXXXXXXXXXXX+X+XX+X++++XXXXXXXXXXXXXXXXXX+XX++
+              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+              ..........................................................................................................
+               =HHH--H--HHHH-HHHHHHHH-HHHHHHHHHHH--H--------=--==-H--HHH-HHHH-H-HH-HH-=-=--=-====---H----HH-HH-----=--==
+                CCC  C  CCCC CBCCCCCC CBCCCCCCCBC  C              C  CCC CCBC C CC CC               C    CC CC
 - - -         +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+               +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX++++XXXXXXX
+               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+               .........................................................................................................
+               =-HH-HHH--HH--H-HHHH-HHHHHHHHHHHHHHHHHHHHHHHHH-H--HHH-H---HHH--HH-HHHH--HHH-H-----------=---H-====-------
+                 CC CCC  CC  C CCCC CBCCCCCCCCBBCCBBBBCCBCCBC C  CCC C   CCC  CC CCCC  CCC C               C
 -  --          ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                +X+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XXX++XXXXXXXXXXXXXXXXXXXXXXXX+X+XXXX+++
+                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                ........................................................................................................
+                =-=--=--H-------HHH--HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---=-H-=--H==----HH--HHH-HHH-HHH-HH--=-=----===
+                        C       CCC  CCCCC CCBCCCBCCCBCCCBBBCBCCCCBCCCBCC     C    C      CC  CCC BCC CCC CC
 =-----   -      ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                 +XXXX+X+++++++++++X+++XXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXX+XXX+XXXXXXXXXXXXXXX
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .......................................................................................................
+                 =--H-=-===========-===------------=-----HH--H--HHHH-HHH-HH--H--H-------==----H---HH=---=-H----HH-HHH-H-
+                    C                                    CC  C  CBCC CCC BC  C  C             C   CC      C    CC CBC C
 -==--            XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                  +XXXXXXXXXX++XXXXXX++XX+XXXX++X++X+X+XXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                  ......................................................................................................
+                  =HH-HH-----==------==--=----==-==-=-=-----==---HH-HH--H--HHHHHHHH--HHHHHH---HH--HH---H--HH--H--HHH--HH
+                   CB CC                                         CC CC  C  CCBCCCCC  BCCCCC   CC  CC   C  CC  C  CCC  CC
 ==-=--            MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                   XXXXXXXXXXXXXXXXXXXXXX+XXXX+XX+++X++++++++XXXXXXXXXX+XXX+XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                   .....................................................................................................
+                   -HHHHHHHHHH-HHHH-H----=----=--===-========----------=---=-H--=H--H---HHH-HHHHHHHHHHHHH-HH-HH--HH---H-
+                    CBBBCCCCBC CCCC C                                        C   C  C   CBC CCCCCCCCCCBCC CC CB  CC   C
 )==- -- - -        MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    XXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+XXX++X+++XX++++X+XX+++XXX+XXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                    ....................................................................................................
+                    -HHHHHHHHHHHHHHHHHHHHHH-H=----=---==-===--====-=--===---=---------=--HH--H-HHHHHHHHHHHHHHHHHHHHHHHHH
+                     CCCBCCCCCCCCCCBBCCCCCC C                                            CC  C CCCCCCCCCCCCCCCCCCBCCCCCC
 ++-----     -       OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    -+XXX++++++XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXX++X+X+++++X++X++++++XX+X+X+XXX++XXXXXXXXXXXXXXXXXXXXXXXX
+                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                     ...................................................................................................
+                     =---=== ==-------HHH-=-HH-HHHHH------------==-=-= ===-==-======--=-=-=---==--------HHH-HHH-HHHHHHHH
+                                      CCB   CC BCCCC                                                    CCC CCC CCBCCCCC
 )++==----   -       -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                     +XXXXXX+XX+X++++++XX+++++XXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX++++X++X+++++++++++XXXX++XXXX++X++XXXXXXXX
+                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                     ...................................................................................................
+                      -HHH--=--=-======H-=====-HH-----HHHHHHH--HHHHHH---=-----====-==-===========----==----==-==-H--HHHH
+                       CCC             C       CC     CCCCCCC  BCCCBC                                            C  CCCC
 )+)+++=-=        -   =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      +XXXXXXXXXXXXXXXXXXXXX+XXX+XXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++X+++++++++++
+                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                      ..................................................................................................
+                       -HHH--HH-HHHH--HHH-H-=---=------HHH---=-HHHHH-HHHHHHHHH----HHH--------========== ====-  =========
+                        CBC  CC CCCC  CCC C            CCC     CCCCC CCCCCCCCC    CCC
 Z)))=)=+--  -         )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++
+                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                       .................................................................................................
+                       =H-H-------H--H-HH-HHH-----HH------=--===---HHH----HHHHHHHHHHHHHHHHHHHH-H-----========== === ====
+                        C C       C  C CC CCC     CC               CCC    CCCCCBBCBBCCBBCCCBCC C
 AAX11++)+-  -          1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        +XXXXXXXXX+XXX+X++X+X+XXXXXXXX+XXXXX+XX++XXXXXXX++XX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++++++
+                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ................................................................................................
+                        =HHHHHHH-H=---=-==-=-=--------=-----=--==-------==--==-HH-HH-HHHHHHHHHHHHHHHHH-H---H-==-====== =
+                         CCCCBCC C                                             CC CC CCCCCCCCCCCCCBBCC C   C
 OAAZ)1))+--=-  -    -   ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-                        +XXXXXXXXXXXXXXXXXXXXXX+XX++XX+XXXX+++++XX+XXXXXXXX+++X++X++XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+                         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                         ...............................................................................................
+                         =-H-----HH----HHH-HH---=--==--=----=====--=---H----===-==-==----==----H---HHHHHHHHHHHHHH-HHH--=
+                           C     BC    CCC CC                          C                       C   CCCCCCCBBBCCCC BCC
 OMMXZZZ))+==----         )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-                         +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++XX+++++XXXXX+XXXXXXXXXXXXXXX+++++++X+++++XXXXXXXXXXXXXXX
+                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                          ..............................................................................................
+                           --HHHHH--------------HHH-HHHH---==-==--=====-----=-HH------------=======-=====-H---HHHHHHHHHH
+                             CCCCC              CCC CBCC                      CC                          C   CCCBBCCCCC
 OOMMMAZ111))=-- -        -=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--                         -+XXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXX++++X++X+++XXXXXX
+                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            ............................................................................................
+                            =-HHHHHHHHH-------==------HH-HHH-HHHHHH--H----H-------H-=====---HH-H-------====-==-===-H--HH
+                              CCCCCCCCC               CC BCC CCCCCC  C    C       C         CC C                   C  CB
 OOOMZAXZZ1++=--              XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+---                           ++X++XXXXXX+XXXXXXXXXXXXXX++XXXX+XXXXXX+XXXXXXXXXXXXXX++++++XX+++X+XX++XXXXXXXXXXX+XX+++++
+                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                              ..........................................................................................
+                               =-==-HH---=-HH-HHH--H----==----=--H--H=---HH-HHHH-H--=== ==--===-=--==HHH-HH-HH--=--===
+                                    CC     CC CCC  C             C  C    CC CCCC C                   CBC CC CC
 OOOOOMMMAX)===- -      -     - =ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++==-                            -=+++++X++XXXXXXXXXXXXXXXXXXXXX+XXXXXX++XXX+++XXXXXXXXXXXXXXX++XXXX+X+X+XX+++XX+XXX++X+
+                                   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                    ....................................................................................
+                                     ===-==-H-H-H--HHHHH---HHH--=------==---===-----------H---==----=-=-=--===--=---==-=
+                                            C C C  CCCCC   CCC                            C
 OOOOOOOOMAZZ)=-- -     --     -   -==+)1XMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++--=-                                   --+++++++XXXXXXXXXXXXXXXXXXXXXXXXXX+++X+X+++XXXXXXXXXXXXXXXXXXXXX+X++++++++++
+''                                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                               .........................................................................
+                                                 ===--HHHHHHHHHHH-H-H-HH---H--===-=-===---H-H-H--H-HHHH-----=-===== = ==
+                                                      CCCCCCCCCCC C C CC   C              C C C  C CCCC
 OOOOOOOMMMX11)------     --   -  ---  - -   ---==+++11XMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++==-                                                  -=+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++X+XXXXXXXXXXXXXXXX+++++
+''''                                                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.                                                          .............................................................
+                                                            ==------HH--H-HHHHH-H---HHHHHHH-=====H=--HH--HHHHHH----= ===
+                                                                    CC  C CCCBC C   CCCCCCC      C   CC  CCCCCC
 OOOOOOOOOOM1)1=-- --   - --   - ----    - -  - -  --  ---- ----=1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++---                                                        ++XXXXXXXXXXXXX++XXXXXXXXXXXXXXXX+XXX+++++++XX+XXXXXXX
+''' '                                                             ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                                  ......................................................
+                                                                   =---H---HHH-H-==---H-H---HH--HH-=---=======--=HH-HHHH
+                                                                       C   CCC C      C B   CC  CC               CC CCCC
 OOOOOOOOOOMZZ)))==- -  --- -   -   -  --- - -- -  - -- -  -------  --+AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++---                                                             +++XXXXXXXXXXXXX+X++++XX++++XXXXXX++X+XX+++++X+++
+''''''                                                                  ''''''''''''''''''''''''''''''''''''''''''''''''
+..  .                                                                   ................................................
+                                                                         =-HH--H-----H-=-====--====------==-=--=====-===
+                                                                           CB  C     C
 OOOOOOOOMMMXXZZ1+==-    --    -  - - - - --- -- -   ----- -   - - -  -  -)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++=                                                                   -+++XXXXXXXXXX+XXXX++X++XXXX+XXXXXXXXXXXXXXXX
+''''''                                                                      ''''''''''''''''''''''''''''''''''''''''''''
+... .                                                                       ............................................
+                                                                             ==---HHHH---=----==-==----=----HHHHHH------
+                                                                                  CCCC                      CCCCCC
 OOOOOOOOOOMMXXX1+++-=---        - - - -  - -- -- ---   --- ---  ----  -  -  -+AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++=-                                                                     +++XXX++++XXXXXXXXXXXXXXX++X+XXX+X++XXXXX
+'''''''                                                                        '''''''''''''''''''''''''''''''''''''''''
+.....                                                                           ........................................
+=                                                                               ==--H====-----------H---==-=---=-==-HH--
+                                                                                    C               C               CC
 OOOOOOOOOOMMOXZ)++==------     --      - ----   --  --   -------- -   --     -- -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++  -                                                                     ++XX++++++XX+++XXXXXXXXXXXXXXX+++XX+++
+'''''''                                                                           ''''''''''''''''''''''''''''''''''''''
+......                                                                             .....................................
+==                                                                                 =--=== ==--===--H----H-HHH---===--===
+                                                                                                   C    C CCC
 OOOOOOOOOOOOOAZZ1))+=-= --- - - - -   --  ---------- -----  ----   --- --- -  - - -=MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++==-                                                                        +XXX+++++XX++++++++++XXXXXXX+XXXXXX
+'''''''''                                                                            '''''''''''''''''''''''''''''''''''
+......                                                                                ..................................
+==                                                                                    -H-=====--= == == ==-HHH---=HHHH--
+                                                                                       C                   CCC    CCCC
 OOOOOOOOOOOOOOAZ)1)=--=-- --   -----  -- -- -------- --  ------- ---- -  ----- --    -+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++==-+-                                                                         -++XX+XXX++++++X+++++++X+++++++++
+''''''''                                                                                ''''''''''''''''''''''''''''''''
+......                                                                                  ................................
+= =                                                                                     ==--=---======-== ====-= =======
 OOOOOOOOOOOOOMAXZ1)=)=----    --   - - --- -- ----------- - ------- --- ----- --        =AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++==-                                                                             +XXX++++X++XXXXX++++XX++++++++
+'''''''                                                                                   ''''''''''''''''''''''''''''''
+......                                                                                    ..............................
+= ====                                                                                    =---====-==--H--== =H-===  ==
+                                                                                                       C      C
 OOOOOOOOOOOOOOOMA1++)=-=------     -  -- -   -- -- =--- -- ---=-=--  ---------  -          ZOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++-=--+                                                                             ++X++XX+++++++++++X+++++++XX
+'''''''                                                                                     ''''''''''''''''''''''''''''
+.......                                                                                     ............................
+=  =                                                                                        ==-==--==== ======-===== =HH
+                                                                                                                      CC
 OOOOOOOOOOOOOOOMMX11)+=----------  -------- -------= ---  ---=--------=------- --   --  -  --XOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++===--                                                                               ++XXXX+++++XXXX++++X+XXXXX
+'''''''''                                                                                     ''''''''''''''''''''''''''
+......                                                                                         .........................
+   =                                                                                           =----=== =----== =-=-----
 OOOOOOOOOOOOOOOMZZ11)+=--====- --  -  -- - ---------====-==-=-==+=-==---====-=----  -         -ZOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++==--                                                                                 ++XXXXXX+XXXXX+++XX+++++
+''''''''''                                                                                      ''''''''''''''''''''''''
+........                                                                                         .......................
+ =                                                                                               =-HHH--=HH---= =--=====
+                                                                                                   CCC   CC
 OOOOOOOOOOOOOOOOXXZZ)+++--======  -   -   ----=====)==+=-=-==+-=+++=++=+===--=---- -  ---       -ZOOOOOOOOOOOOOOOOOOOOOO
++++++++++++-----                                                                                  +XXXXXXXXXXXXX+X+XXX+X
+''''''''                                                                                          ''''''''''''''''''''''
+.... ...                                                                                          ......................
+ =                                                                                                 ---H-------H-=-=---=-
+                                                                                                      C       C
 OOOOOOOOOOOOOOOOMAXXZ))=1=+)))++------- - --- -=)=)+++)=+===+-=--++))+==++=+======-- - --         -XOOOOOOOOOOOOOOOOOOOO
++++++++++++++---                                                                                    +XXXXXX+++++++++XXXX
+''''''' '' '                                                                                        ''''''''''''''''''''
+.... .. .                                                                                           ....................
+==                                                                                                   ----H-=========-H--
+                                                                                                         C           C
 OOOOOOOOOOOOOOOOMMXX11++=+)))+++---  - -- -- -  --+===++++----=--++=+)+=+++===+=-=-=---  --- -     --OOOOOOOOOOOOOOOOOOO
+++++++++++++++--                                                                                     =+XXXXX+XXX+X++++++
+'''''''''''                                                                                           ''''''''''''''''''
+..........                                                                                            ..................
+==                                                                                                    =---H-=---=-== ===
+                                                                                                          C
 OOOOOOOOOOOOOOOMMMAA1111++)11111--------  -- --=-==+++)++))==++-=+==+)+++)+==))=+===-=----- -- -      )OOOOOOOOOOOOOOOOO
+++++++++++++++-                                                                                        +XXXXXXXXXXXX+XX+
+'''''''''                                                                                               ''''''''''''''''
+.........                                                                                               ................
+ =  = =                                                                                                 HHHHHHHHH-H- --=
+                                                                                                        CCBCCCCCC C
 OOOOOOOOOOOOOOOOMAXAZ))+)))11111=)=----------=----=)))))111))+)=+===++)+=+)++))))+====-=-----=-- -     -XOOOOOOOOOOOOOOO
+++++++++++====--                                                                                         +XXXXXXXXXXX+XX
+''''' '''                                                                                                '''''''''''''''
+.....  .                                                                                                 ...............
+=                                                                                                        =HHHHHHHHH--=-H
+                                                                                                          CCCCCCCBC    C
 OOOOOOOOOOOOOOOMOOXAXZ1+)1)1+11X)+)+==- ---==-+++=))1+)AZZXZ111)++++1))++1Z1XZZ))))=)1==-==-=--- -    -   OOOOOOOOOOOOOO
++++++++++++++++ --                                                                                        -+XXXXXXXXXXXX
+'''''''''''''                                                                                              '''''''''''''
+.........                                                                                                  .............
+==  = ==                                                                                                   =-HHHHHHHH--H
+                                                                                                             CBCBBCCC  C
 OOOOOOOOOOOOOOOMMMMXXZ))=+)1+)11)1)++=- --===-==++))++))1Z1Z11))++)+)+)+=-+)+1+))+))))+)=-=---= -- ---     +OOOOOOOOOOOO
+++++++++++++++-                                                                                             +XXXXXX+++XX
+''''''''''''                                                                                                ''''''''''''
+.........                                                                                                    ...........
+ ==                                                                                                          -HH---===-H
+                                                                                                              CC       C
 OOOOOOOOOOOOOOOMMMMZZ)1+=+)111Z1Z))+)+==--====+=++++++))11Z11))1))))))))+)))11)))111)1))=)+++=+=----  --    -XOOOOOOOOOO
++++++++++++==--                                                                                               ++XXXX+X+X
+'''''''''                                                                                                     ''''''''''
+......                                                                                                        ..........
+   =                                                                                                           =----=-=-
 OOOOOOOOOOOOOOOMMMAMMXX1+)+))11111Z1+=+)+=+)))1+1111ZZ1ZZZXX1ZZ11Z)11))1)))11111))Z1ZZX1111111Z)++=-----      -AOOOOOOOO
++++++++++++++=-                                                                                                 +XXXXXXX
+''''''''''                                                                                                      ''''''''
+........                                                                                                        ........
+=    =                                                                                                          =HH--H-H
+                                                                                                                 CC  C C
 OOOOOOOOOOOOOOOOMMMMMZZ))1=)1)1)Z111))++)))1))X)1)ZXXZXXZAZZAXXZX11)1+))))))))11ZX111ZX1)ZZZ11Z)+)))---  -      -OOOOOOO
+++++++++++++++=-                                                                                                 +XXXXXX
+''''''''''''''                                                                                                    ''''''
+...........                                                                                                       ......
+= = =   =                                                                                                         ---H--
+                                                                                                                     C
 OOOOOOOOOOOOOOOOOOOMMXZ1+)=+===+)+1))1))Z)1)1))1XZZZXAAXXMMXAMAXXZX1Z111++11))XZZZ11XZXXZZ1ZAAXXZZZ1)==-- ---     ZOOOOO
++++++++++++++++====                                                                                                +++XX
+'''''''''''''                                                                                                      '''''
+.......... ..                                                                                                       ....
+== =                                                                                                                ==--
 OOOOOOOOOOOOOOOOOOOMOAXZ1+)+-=-===+)=+))+)))))))ZZZXZXZXMMAAXXAZXXZ11111)+)1)11Z1ZZXAAAXXXXAAMMAXXX))+=---     -   -MOOO
++++++++++++++++=-=- -                                                                                                +XX
+''''''''''''''                                                                                                       '''
+.............                                                                                                        ...
+= = =                                                                                                                =--
 OOOOOOOOOOOOOOOOOOOOOMAX1)==- -----==---=+===-==)++))11ZZXXZ1ZZZA)1)+)1)=+)++111Z11ZZMMAAMAZMMMXMMXX1))==-=--- --    =OO
++++++++++++++++=-----                                                                                                 +X
+''''''''''''''                                                                                                        ''
+.......... ..                                                                                                          .
+==   =                                                                                                                 -
 OOOOOOOOOOOOOOOOOOOMMMMX))+-==------=--===-+++)))11ZZXZMMZX1ZZZAA11Z)))))+++)+11ZMZXAMMMXAMOMOMOAOMMM)1++=+-----       A
++++++++++++++++++=-                                                                        - - - -
+''''''''''''''
+.........   ..
+    =
 OOOOOOOOOOOOOOOOOOOOOMOMX11+====-- ==- =--=-=+==)+)))1ZXAZZZZXZXXZ1Z1++)+=+=+)))ZZZZXMXAAMMOMOMOMOOMXX11+==-----
+++++++++++++++++++-=- -                                                                    - - - --
+'''''''''''''''
+.......... . .
+  ===
 OOOOOOOOOOOOOOOOOOOOOMOMAXZ1))===- -----=-----=====+)))1ZXXAAMAZAAZ11Z11++++)))11ZZZAMMMOMOMMOOOMOOOMOAZ)))===)+=--- -
+++++++++++++++++++=== -                                                                 - -  -== =-- -
+'''''''''''''' '''
+ ....... .. .
+     = =
 OOOOOOOOOOOOOOOOOOOOOOOOOMXZ1))++==-----==-=-==--=+++=))1ZXZAMMAMAXAX1)))))))1)11ZXMMMMOOOMMMMOOOOOOOMMA1)1)++)))==----
+=++++++++++++++++++++=---                                                              ---    -==+---
+ ''''''''''''' '' '
+   ....... ..   .
+     =
 OOOOOOOOOOOOOOOOOOOOOOOOMMOXZZ1X))-----=---==----=++--+=))1ZZZAMAAZZZZX11)))++)))11ZAMAOOMMOOMMOOOOMMMMZZ1Z1))1AZZ)==--
+-=++++++++++++++++++++--  -                                                            --  --  ==-=
+   '''''''''''' '''
+    ........  .  .
+       = =
 AMOOOOOOOOOOOOOOOOOOOOOOOMOMAZZZ)1==-----=---=-=--==--===++)ZXZAAMMXXXXZ)+))++))11ZZOMMAMOOOOOOOOOOOOMMMXMAZZ1ZXMAMZ+=--
+  -==+++++++++++++++=+--- -                                                         -    ------=+++--
+     ''''''''''''''
+       ...  .   .
 1XAOOOOOOOOOOOOOOOOOOOOOOOOMMAXAZZ1+)+===-=--====--=-======+)1ZXZAMMXAMZ11+1)+))11ZAOOMMOOOOOOOOOOOMOOOMMMAAXZAMOOMMZ)+-
+   --=+++++++++++++++===---                                                         --  --=----==+= ---         --
+       '''''''''''''
+         ... ..  ..
 11XAOOOOOOOOOOOOOOOOOOOOOOOOMXMMAZZ1))++---------=-= - ---+-=)+1)ZXAAAXZ1111++)))1Z1MMMMOOOOOOOOOOOOOOOMOOMMMAMOOOOOMX1+
+    -==++++++++++++++++=----                                                            ---=+==-+-=---- --     ----=
+       ''''''''''''' '
+         ... ......
+                 =
 ))ZZXAOOOOOOOOOOOOOOOOOOOOOOOMMMMAMMZ1)))+=====-=+==-----==-===+)1)1XZZXZ))1)+)1)X1MMMAMAMOOOOOOOOOOOOOMOMMMMMMOOOOOOMAX
+      -+++++++++++++++++-=-+-                                                             -=+====------ -      =+=++=
+         '''''''''''''''
+          .... .. ..  .
 )))AXAMOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMXZ1++++====-==------ -- -==++1)Z11111))))++11Z1MMMMAOOOOOOOOOOOOOOMOOOAOOOOOOOOOOMM
+       -=+++++++++++++++++++==-=- -                                                      ---=+==+------ --- ---+++++++
+         ' ''''''''''''''''                                                                                    '''''
+            ...........                                                                                         . .
 ++)1ZXXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAXZ111))++=====--=- ------=+++)+111)+)))++))1ZXAAMMOOOOOOOOOOMMMOOOOOMOOOOOOOOOOOO
+        -=+++++++++++++++++++==+=-=--                                                    ---=-+-=--   --+-- --=++++++++-
+          '''''''''''''' '''                                                                                   '''''''
+             ...........                                                                                         . ..
+             =
 -=++1Z1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMM1111+====-==-------- ----=-)+))1+=)=+++++1)ZZXAMMOMOOOOOOOMOMMMOOOOOOOOOOOOOOOO
+         -++++++++++++++++++++++++== -                                                    - ==-=--- -   =---=-++++++++++
+            ''''''''''''''''                                                                                   ''''''''
+             .... .... ..                                                                                        ....
+               =  =
 --==+11ZZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMX11+=+====-=-------- ==-=-==++)+===)))11XZXAAOOOOOMOOOMOMOMOMOOMOOOOOOOOOOOO
+           -+==+++++++++++++++++++++=--                                                  ---== =-- - - - -- -+++++++++++
+                ''''' '''''''''''''                                                                             '''''''
+                 .     .      ..                                                                                ..... .
 +-==)=11ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMX1))+++====-- - - -----==--+=+====++)1)ZZXXAOZMOMMMMMMMMMAMMOOOOOOOOOOOOOOO
+           -=++++++++++++++++++++++++++=-- -                                             -  -            --==+++++++++++
+              ''''''''''''''''''' ' '                                                                          '''''''''
+                 ........... ...  .                                                                              .......
+                         =     =                                                                                 == =
 )===++++1ZAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZZ1)++=-===----- ---==-=-===-=====11111ZAXAOAXMMAMAAAMOMMMMOOOOOOOOOOOOOOO
+            --+=+++++++++++++++++++++++++---                                             -          -    ---=+++++++++++
+                 ''''''''''''''''''''''                                                                       ''''''''''
+                 ..................  .                                                                          .......
+                      ====
 ))))=)=+)ZAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXX1)++-==-=-  -  - -- -==-=-=-+++)1Z1ZZ1ZZAZZMAMMMMAOAMOMMMOOOOOOOOOOOOOO
+              ==++++++++++++++++++++++++++++--                                                     -  -   --=+++++++++++
+                  '''''''''''''''''''''''                                                                     ' ''''''''
+                  .....................                                                                         .......
+                   = = ==== =  =     =                                                                           =  = =
 1Z))+)=++1)AAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXZ1)+=+==-- ---- --=---===+--==+111XZZZXXAAAXZX1ZAXZXXAMAMOOOOOOOOOOOOO
+               --++++++++++++++++++++++++++++--                                                            =-=++++++++++
+                  '''''''''''''''''''''''''''                                                                  '''''''''
+                  .......................                                                                       .......
+                      =  = = ===  ===                                                                            = = =
 MX)Z)))+)))XXAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA))Z+=------ ----------==--===++)1)1ZZZXXXAAZAXZ1X1ZZXXAMMOOOOOOOOOOOO
+                -++++++++++++++++++++++++++++++--                                                           ==++++++++++
+                  ''''''''''''''''''''''''''                                                                  ''''''''''
+                    ......................                                                                     .........
+                      ==== === = = =  ==                                                                          == =
 OOZZZ1+++)+)1ZXAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX11+)=-=----=--- ---===+----===++)1111Z1)ZZZXZ11XZZZXAXMMOOOOOOOOOOOO
+--               -+++++++++++++++++++++++++++++==                                                           =+++++++++++
+                   '''''''''''''''''''''''''                                                                  ''''''''''
+                    .......................                                                                    .........
+                     ==  ==    ==   =  =                                                                        =   =
 OOOOXZ)+)))1Z1XZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAM1)))=-=-=---------=-=-==--====+1))ZZ1Z11ZZXZZZ1ZZZXXAMOMOOOOOOOOOOO
+=---              =++++++++++++++++++++++++++++++-                                                         - =++++++++++
+                    '''''''''''''''''''''''''''''                                                             ''''''''''
+                     .........................                                                                 .........
+                       =  == =============                                                                         = =
 OOOMAX++)++=)+XXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOM11)=++==---- - -- -----=---=++++)11)1)Z1)ZZZ1)1ZZZ)ZOOMMOOOOOOOOOO
++--               --=++++++++++++++++++++++++++++=- -                                                     --  ++++++++++
+                     ''''''''''''''''''''''''''                                                                '''''''''
+                      ........................                                                                 .........
+                       =  ===   === == = = ==
 OOOOMAZ1))+++111ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZ11)++=--=-----------==-==-===+)1Z1+1111XZXZ11ZXA11ZMAMOOOOOOOOOOO
++==-               --+++++++++++++++++++++++++++++--                                                         -++++++++++
+'                     '''''''''''''''''''''''''' '                                                             '''''''''
+                        ......................                                                                  ........
+                            =  =====  ==                                                                          ====
 OOOOOMMM11)))1111ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZ))=====-----------=-=-===+=++))Z11)1111ZZZ)ZZZ11ZXAMMOOOOOOOOOO
++++==               -+++++++++++++X++++++++++++++++---                                                        =+++++++++
+''                    ''''''''''''''''''''''''''''                                                             '''''''''
+..                     ..........................                                                               ........
+                        ==========-=======                                                                       ==   =
 OOOOOOOOAMZ1111)ZXXXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXZ)++++=----------===-=====+=+=+)+))+)))1Z111XZ1ZXAAOOOOOOOOOOOO
++++++---              -++++++++++++++++++++++++++++++--                                                     --++++++++++
+''''                    ''''''''''''''''''''''''''                                                             '''''''''
+..                       .........................                                                             . .......
+ =                       ================ =    =                                                                  =  = =
 OOOOOOOOMMA1))11)1ZZZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX1)++===-=-----------====-==++)+++==))111ZZ1XZZZZXMMMOOOOOOOOOO
++++++==-              --++++++XX+++X+++++++++++++++++=-                                                       =+++++++++
+''''                     ''''''''''''''''''''''''''''                                                           ''''''''
+....                     ...........................                                                             .......
+                         =  ==--===-=== === = =                                                                     =  =
 OOOOOOOOOOMAZZZXZZXX11ZZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ+)+=-==-==-==------====+==)+==+++++111Z)ZZ1Z))ZZMOOOOOOOOOOO
++++++++=--               +++++XX++XXXX+X+++X+++++++++++--                                                    -=+++++++++
+''''''                    ''''''''''''''''''''''''''                                                           '''''''''
+.....                     ..........................                                                             .......
+== =                      ====H-==----=-===-====                                                                  ==
+                              C
 OOOOOOOOOOOOMAX1X1XXZ)1)1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA))++=-==-------==--=====-=+=++=+)+11ZXXZZ11111ZXAOOOOOOOOOOO
+++++++++==--              +++XXXXXXXXXX+XX+++++++++++++==-                                                   --+++++++++
+''''''                    ''''''''''''''''''''''''''''                                                          ''''''''
+......                     ..........................                                                            .......
+====                       ==-HH-------=--====== =                                                                 =
+                              CC
 OOOOOOOOOOOOMMAZXXZXZXX1+)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMZZZ))=========-==--=-=-=+++))+++)+))ZZ1XZ1ZZ1ZZ1XOMOOOOOOOOO
+++++++++++=-               +++XXXXXXXXXXXX+XXX++++++++++=                                                    - =++++++++
+''''''''                   '''''''''''''''''''''''''''                                                          ''''''''
+.......                    ...........................                                                           .......
+====                        ==-H-H----H---=---== =                                                                  ===
+                               C C    C
 OOOOOOOOOOOOOMMXXZXZZMXX1+1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAXZZZ=+=-==-=--==--=-=--==+====+++=+)Z11Z1X1)11ZZMOOOOOOOOOO
++++++++++=+--               ++XXXXXXXX+X+X+X+X+++++++++++--                                                   -+++++++++
+'''''''''                    ''''''''''''''''''''''''''                                                         ''''''''
+........                     ..........................                                                         ........
+=====                        =--------=-=-=-=-==== =                                                             ==  ==
 OOOOOOOOOOOOOOOOAMMAXXZXZ)++OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAZ))+===+-==----=--=--=--==-====+))Z11Z)XZZ1XXAOMOOOOOOOOO
+X++++++++++++=--            -+XXXXXXXXXXXXXX+X+++++++++++=--                                                 - +++++++++
+'''''''''''                  '''''''''''''''''''''''''''                                                        ''''''''
+...........                  ..........................                                                         ........
+-=======                     =HHHHHHH----HH-=-===== =                                                              =====
+                              BBCBCCC    CC
 OOOOOOOOOOOOOOOOOOMAMMAXAZ1+)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXZ11)+))=++======+=-===========++)))1)Z1Z11Z1ZMOOOOOOOOOO
+XXX++++++++++++=--           -+XXXXXXXXXXXXXXX++X+++++++++=--                                                 -+++++++++
+''''''''''''''                ''''''''''''''''''''''''''''                                                      ''''''''
+..............                .........................                                                          .......
+---======                     =HHHHHHHH-H---H-==-===                                                              === ==
+                               CBBCBCCC C   C
 OOOOOOOOOOOOOOOOOOOOMOMMMMZZ=+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAZZZ1+)=-======--=====---=-=====+))11+11)))1ZZAMOOOOOOOOO
+XXX+XXXX+++++++++++- -         +XXXXXXXXXXXXXXX++XX++++++++=-                                                  =++++++++
+'''''''''''''''                ''''''''''''''''''''''''''''                                                      '''''''
+...............                ..........................                                                        .......
+H--=----== =                    HHHHHHHHH-HH---==-- =                                                               ====
+C                               CBBBCCCCC CC
+                                  V
 OOOOOOOOOOOOOOOOOOOOOOMMMMXMZ1=+AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOZX1))11))=)+===-=-=+=====--==+)))+)1)111ZZZ1MOOOOOOOOOO
+XXXX+X+++++++++++++==-           +XXXXXXXXXXXXXXXX+++++++++++- --                                             -+++++++++
+'''''''''''''''''''              '''''''''''''''''''''''''' '                                                   ''''''''
+............... .                .......................  .                                                      .......
+H---=-==== = =                   =HHHHHHHHHHHH----=====                                                          =  ===
+C                                 CBBBBBBCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOMMZZ))=+AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMZ111)=++)+==++=+===-==-=++=+=1+)111)1)Z1ZXMOOOOOOOOOO
+XXXXXXXXX+++++++++++++====         +XXXXXXXXXXXXXX+++++++++++=--                                              -+++++++++
+''''''''''''''''''''               ''''''''''''''''''''''''                                                     ''''''''
+..................                 ...................... .                                                      .......
+HH-------=====                      -HHHHHHHHHH--H==== =                                                            = ==
+CC                                   CBBBBCCCCC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ)+))AOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMAZ11)))++)===+-+==-==+===++==+))11)1))1ZZAMOOOOOOOOOO
+XXXXXXX++XXXX+++++++++++++==-        =++XXXXXXXXXXX+++++++++++== -                                            =+++++++++
+''''''''''''''''''''''''              ''''''''''''''''''''''                                                   '''''''''
+.................... .                .....................                                                     ........
+---H-H-==----==== =                    =HHHHHHHH-H-======                                                         ======
+   C C                                  CBBCCCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMXZ1)+)1MOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZZ)1+=+)++))+=+++=+===++==++)Z1XZ1111ZMAOOOOOOOOOOO
+XXXXXXXXXXX+++++++++++++++++- -         =+XXXXXXXXXX++++++++++++---                                          -+++++XX++X
+'''''''''''''''''''''''''''              ''''''''''''''''''''                                                  '''''''''
+.........................                ...................                                                    ........
+H--H-HHH---=========== =                  ---HHHH---====                                                        ===--==-
+C  C CCC                                     CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAA11=++ZZOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ111)+++++1++=++++=--==+=+)))1Z11Z))ZMOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX++X++++++++++=-+-         -+++XXXXXXXX+++++++++++---                                        --+++++X++X+
+''''''''''''''''''''''''''''                ''''''''''''''''''                                                 '''''''''
+...........................                 ................ .                                                 .........
+-------H--------==-=======                   =---H----== =                                                       ==-==-=
+       C                                         C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMA111)+11ZAOOOOOOOOOOOOOOOOOOOOOOOOMXXX1))1))))))+-=++=)==++=+++1Z111ZZ)ZMOOOOOOOOOOOO
+XXXXXXXXXX+X++X+X++++++++++++++==            ++++++++++++++++++++==--                                       --+++++X+XXX
+''''''''''''''''''''''''''''''                ''''''''''''''''                                                ''''''''''
+.......................... .                  ............. .                                                  .........
+HHHHHHHH--=-==-=-== === =                      =========                                                        ===-=---
+CCCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZZ)))1)MMOOOOOOOOOOOOOOOOOOOOOMOMMXX1Z11111)1)++=+==+=+==)++1Z1ZZZ1XXMOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX++++++++++++++---           -+++++++++++++++++++- -                                      =++++++X++X+
+''''''''''''''''''''''''''''''''                 ''''''''''''''                                               ''''''''''
+...............................                  ..............                                               ..........
+H--HHHH-H----------=======                          =====                                                       ===-==-=
+B  CCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMA11ZZZZAAMOOOOOOOOOOOOOOOOOOOOOOOAMXAZZ1ZZ))1)++++))+++))1)ZZ1ZZZZAOMOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX+XX++++++++++++=             -=++++++++++++++++==---                                  - +++++XXXXX+X
+''''''''''''''''''''''''''''''''''                  ''''''''''''  '                                          '''''''''''
+................................                     ........ ..                                              ..........
+HH-H--HH------------=--===== = =                     =                                                        ===-----=-
+CC C  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMAMZ11+1XXXXOOOOOOOOOOOOOOOOOOOOOMOAXAZXZM11)Z1+=++=++)))++)11XZ11XOMOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXX++++++++++++=-             -=++++++++++++++==--- -                                - ++++++XXXXX+
+''''''''''''''''''''''''''''''''''''                  ''''''''''                                             '''''''''''
+..................................                     ....  .                                                ..........
+------------------------=== ===                                                                                 ==-----=
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMXX1ZXZZMMOOOOOOOOOOOOOOOOOOOOOOMMAXXXZ)ZZ1))++))+=++)=)))1Z1ZZXMOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++==- -          -==+++++++++++++++=+=-                                 =+++++++++X++
+'''''''''''''''''''''''''''''''''''''                     '''''' '''                                         '''''''''''
+................................... .                                                                        ...........
+HHHHH-HHHHHHH-H-HHHHH-H---====                                                                                 ======-==
+CCCBC CCCCCCC C CCCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOAXXXXAMOOOMOOOOOOOOOOOOOOOOOOMOMAAAMZ1Z1))1)))+++)++)1)1ZZZXXOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++=-- -       --- =+++++++++++++==-- -                              -=++++++++XXX+
+'''''''''''''''''''''''''''''''''''''                    '    ''   '                                        ''''''''''''
+.....................................                                                                        ...........
+HHHHHHH-HH-HH---HHHH--HH---======                                                                            = =====---=
+CCCCCCC CC CC   CCCC  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMXZXMMMOOOOOOOOOOOOOOOOOOMOMMOOMXZZ1Z11)1))))+1+)11ZZZ1ZXMOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++=--           --++=++++++++++=+= -  --                           -=++++++XX+XXX
+'''''''''''''''''''''''''''''''''''''' '                           ''                                       ''''''''''''
+.....................................                                                                        ...........
+HHHHHHHHHH-HH-HHHHHHHHH--------===                                                                           =====--=---
+BBBCCCCCCC CC CCCCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOOMMAAAMXMOOOOOOOOOOOOOOOOOOOOOMMOMZ1Z)1Z1)111)+)++1)Z)Z1AXMOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++=+-   --        -=+=-=+=+++++++++-=--  -                          =+++++++++XXX+
+''''''''''''''''''''''''''''''''''''''''                              '                                     ''''''''''''
+.......................................                                                                     ............
+H-HHHHH--H--H-----H-----------===== =                                                                       = ======---=
+C CCCBC  C  C     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOMOMAAMOOOOOOOOOOOOOOOOOOOMMMMMZZZA1ZXZ1))1))))1)1XXMAMOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++++++++++++---  -- -    ===+++==+++++++=-=-                             ++++++++XXX+XX
+''''''''''''''''''''''''''''''''''''''''                           '' '                                    '''''''''''''
+.......................................                                                                    .............
+HHHHHHHH-H-HHHHH-HH-----H-----=--= ==                                                                       ======---=--
+CCCCBCCC C CCCCC CC     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOMMMAMOOOOOOOOOOOOOOOOOOOMOOMA1ZZZ1Z11)Z11))11+)ZZAMOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++++++++++++=----- - -     ---=+=-+++++++==--- --                        -++++++++X+X+XX
+''''''''''''''''''''''''''''''''''''''''''                         '   '                                   '''''''''''''
+.........................................                                                                  .............
+-HHHHH-HHHH-HHHHHH-HHHH------=--===== =                                                                      === =-=-=--
+ CCCCC CCCC CCCCCC CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMMMMMOMMOOOOOOOOOOOOOOOOOOMMA1ZZZZ11Z1111+1)1)))ZAMOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+XX+XX+X++XXXXX+++++++++++++===--- --     -  -==-=+===++-====--                         =++++++++X+XXXX
+'''''''''''''''''''''''''''''''''''''''''''''                                                             ''''''''''''''
+.........................................                                                                 ..............
+HHH------H--H----=--=--=-==-----==== =                                                                      ======-=----
+CCC      C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAMMOOOOOOOOOOOOOOOOOOMMMMZXZZZXXA1111)1Z)1ZXOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++=-=------      --=-===++++++++=--                       --+++++X++X+XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''                                                           '''''''''''''''
+...........................................                                                               ..............
+HH-H-HH-HHHHHHHHHH-HH-HH---H-----==== ==                                                                   ===-==-=-----
+CC C CC CCCCCCCCCC CC CC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMAMAMOMOOOOOOOOOOOOOOOOOMMMMZZ1XZZZZ1ZZZ1Z1)1MOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXX+++++++++++++++++===-       - =-=-++++=+++==---                      -=++++++X++XXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''                          '                               '''''''''''''''
+............................................                                                              ..............
+HH-HH---HHHH-H--H-H-HHH-----==----===== ==                                                                 ====-==------
+CC CC   CCCC C  C C CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMMOMOOOOOOOOOOOOOOOOOOOMAAAXZ1XZZXZ1XZXZZ1ZMOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++=++==+= -   - ------++++++===-=--                     -=++++X++XXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''' '                                                        '''''''''''''''
+.............................................                                                             ..............
+--H--HH-HHHHHHHHHHHH----------HH-H-=== ===  =                                                              ==-==----HH--
+  C  CC CCCCCCCCCCCC          CC C                                                                                  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMMMMOOOOMOOOOOOOOOOOOOMMMMMZZMXZXZZXXZZXAAMOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++++++++=--=--      ---- -==-======---                     -+++++++XXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''                                                         '''''''''''''''
+..............................................                                                            ..............
+--HH-H---H-H-H-H--HHHHHHHHHHH-H---=-======                                                                 ====----H----
+  CC C   C C C C  CCCCCCCCCCC C                                                                                    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMOOAAMMMOOOOOOOOOOOOOOOMAAXAMX11Z1ZZ1XMMMOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++X+++++++++++++++=+=+=-    --     -+-=+=+=-=--=--                  -+++++++XX+XXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''' ''                                                       '''''''''''''''
+............................................... .                                                        ...............
+HH-HHHHHHHHHHHHHH-HH---------H=---==-======                                                               ====--=-HHH--H
+CC CCCCCCCCCCCCCC CC         C                                                                                    CCC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMOOOOOOOOOOOOOOOOMOAAAMMMXZXXAOMAMMMOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++++===+=------   --=-==+++=------ -           -     =++++X+++XX+XXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''                                                      ''''''''''''''''
+............................................... .                                                       ................
+H-H-H-H----HHHHH--HHH--HH---------=-=====                                                               = =-===--=-HHHH-
+C C C C    CCCCC  CCC  CC                                                                                          CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMMOOOOOOOOOOOOOOOMMMAMAAA1AAMOMMMMOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++===-===-      --=-=+==-------            -    -++++XXX+XX+XXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''' '                                                 '''''''''''''''''
+................................................. ..                                                   .................
+-HHHHHH-H-H-HHHHH--HHHH-HHH-H--------=======  =                                                          =---=--=-HHH-H-
+ CCCCCC C C CCCCC  CCCC CCC C                                                                                     CCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMMOOOOOOOMOOOMOOMMMOOMMMAAXMMMMMMOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++====-=-      ---==-- =-- --   --            -=++++XXX+X+XXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''' '                                                '''''''''''''''''
+.................................................                                                      .................
+HHH-HHHHHHH-HH-H-HHHHH-HHHHHH-H--H--H----===== =                                                         =---=-=--HHHHHH
+CCC CCCCCCC CC C CCCCC CCCCCC C  C  C                                                                             CCBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOMMAOOOMOOOMOOOOMOOMAMMAAAMOMMOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X++++++++++++++=++-=---   -   --- --= -=-- --        -  --+==+++++XX+++XXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''                                                ''''''''''''''''''
+.....................................................                                                 ..................
+HHHHHHHHHHHHHHHHH-HHHHHHHHHHH-H-----H-===-=====                                                        ====--===--HHHHH-
+CCCCCCBCBCCCCCCCC CCCCCCBCCCB C     C                                                                             BBCBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMOMMOOOMMMOMOMMMOMOMOOOMOMMMMOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+++++++++++=++==----- -- -  -=-   - -   - - --- -    =++++++++XXXXX+XXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''                                            ' '''''''''''''''''''
+......................................................                                                ..................
+HHHHHHH----H-HH--HH-H-HHH-HHH-HHH-H------==- =  ==                                                       =-----=-HHHHH--
+CCCCCBC    C CC  CC C CCC CCC CCC C                                                                              CBBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMOMMMOMMMOMOMOMAAXMAOMMMMMMOOMOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+X+++++++++++++++++++===-- -- -   -   - - -      -      -- =++++++++X+XXX+XXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                            ''''''''''''''''''''
+.....................................................                                                 ..................
+-HHHHHHHHHHHHHHH-HHH--HHH--H-HH---H=--=-=======                                                          =-=-H-=-HHHHH--
+ CBCCCCCBCCCCCCC CCC  CCC  C CC   C                                                                          C   CBCBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMMMOOAMOMAXAMMMMOMMMMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++++++++++++++++=-- -    --  -        -    -  --+==++++++++++XXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''   '                                       ' ''''''''''''''''''''
+..................................................... .                                             ....................
+-HHHHHHHHHHH-H---HHH--H-HHHHH---H--------==-===  =                                                      ===----H--HHHHH-
+ CCCCCCCCCCC C   CCC  C CCCCC   C                                                                              C  BBBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOAZXMAZAMAOOOOMXMAOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++++++++++++++++++++=++=--- -         ----    --  =++++++++++XXXX+XXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''                                        ''''''''''''''''''''''
+.......................................................                                           .  ...................
+HHHHHHHHHH-HHH--HHHH-HHHH-HH--HH--------=--== = =  ==                                                = =-H--=-H-H-HHHHHH
+CCCBCCCCCC CCC  CCCC CCCC CC  CC                                                                         C    C C BBBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOMAXAZ1MMAMMOMOMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++++++++++++++=+++++=---   -           - - --- -+++++++++++XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '                                 ''''''''''''''''''''''''''
+.........................................................                                      . .......................
+HHHHHHHHHH-HHHHHHHHHHHHHHHHHH-HHH----H--=-=-======= =                                                 ==-----H-HHHHHHHHH
+CCCCBCCCCC CCCCCCCCCCCCCCCCBC BCC    C                                                                       C CCCBBBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMOMMMXZZMAMAOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++++++++++++==- -- -          -=- -----++++++++++XXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''                              ''''''''''''''''''''''''''
+..........................................................    .                               ..........................
+HHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHH-----=-====== ==                                            =  =---H-H--H-HHHHHHH
+BCBCCBCCCBCC CCBCCCCCCCCCBCBCCCCCCCCCCC                                                                   C C  C CBCBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAXAMAZZZZZXMOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++++++++++++++++++++++==--              ---- =-=++++++++++XXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''                              '''''''''''''''''''''''''''
+........................................................ ..                                   ..........................
+HHH-HHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHH-----=--=== = == ==                                           ====--------H-HHHHHHH
+CCC CCCCCCCCCCCCCCCBCCBCC CCCCCCCCCCC                                                                          C CBBBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOAZMMAXZ1MAMAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXX+++++++++++++++++=-== -              ---==+++++++++++++XXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''                             ''''''''''''''''''''''''''
+.............................................................  .                              ..........................
+HHHHHHHHHH-HHHH-HHHHHHHH-HHHHHHHH-HH--HH----===---== =                                              =====H-H-H-H-HHHHHHH
+CCCCCCCCCC CCCC CCCCCCCC CCCCCCCC CC  CC                                                                 C C C C CBBBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAXAMMAMAXXXZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++++++++++++++++++++++-=-                -=++++++++++++++XXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '' '                          ''''''''''''''''''''''''''''
+.............................................................                               ............................
+HHHHH--H--H---HH---HHHH---HH-H--HH-H------=---==== ====                                           = ===------H--H-HHHHHH
+CCCCC  C  C   CC   CCCC   CC C  CC C                                                                         C  C CBBBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMMXMMMOMMXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+++++++++++++++++++++==---          -     -++++++++++++++XXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                           ''''''''''''''''''''''''''''''
+.............................................................                               ............................
+HHHHHHH-H-H--HHH-HHH-HH-H---HHH-HH-HH-H---==--======== == =                                 = = === ===----H-HHH-HHHHHHH
+CCCCCCC C C  CCC CCC CC C   CCC CC CC C                                                                    C CCC CBBBBBB
+                                                                                                                    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOMOOAMMMOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++++++++++== ---- --    -- ----=++++++++X+++++XXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                         ''''''''''''''''''''''''''''''
+............................................................                              ..............................
+HHHHHHHHHHHHHHHHHHH-H-HHHHHH-HHHHHHHH-------HH-=-=== ==                                      ====-=====--HHHHHHHHHHHHHHH
+BCCCCCCCCCCCCCCBCCC B CCBCCB CBBCCCCC       CC                                                           CCCCCCCCCBBBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOOOMMOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX+X++++++++++++++++++=-= =-- ---  --  -===++++++++++X+++XXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       ''''''''''''''''''''''''''''''''
+............................................................   .                         ...............................
+H-H-H--------H-HH--HHH------H-------H--H--==---=-=== = =  =                                = === =-===--HHHHH-H-HHHHHHHH
+C C C        C CC  CCC      C       C  C                                                                CCCCC C CCBBBBBB
+                                                                                                                    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++=+++==------     --++++++++XXXX+XXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      '''''''''''''''''''''''''''''''''
+.............................................................                            ...............................
+HH--HHH-HHHHHHH-HHHH-HHH-HH-H-HHHH-H-H----------=====   ===                                  -H--=----HHHH-HHHHHHHHHHHHH
+CC  CCC CCCCCCC CCCC CCC CC C CCCC C C                                                        C       CCCC CCBCCBBBBBBBB
+                                                                                                                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++++=+=+==-- ---- ----=+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                     ''''''''''''''''''''''''''''''''''
+..............................................................                           ...............................
+HHHHHHHHHHHHH---HHHH-HHHHHHHHHH-H-HH-HH-H-------=-==== == =  =                            ===----------HH--HHHHHHHHHHHHH
+CBCCBCCCCCCCC   CCCC CCCBCCCCCC C CC CC C                                                              CC  CCCCCBCBBBBBB
+                                                                                                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++++++++++++=+=+==++==-----+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                    ''''''''''''''''''''''''''''''''''''
+..............................................................                         .................................
+HHHHHHHHHHHHHHHHHHH-HHHHHHHHHH--HHHH-H--HHH--HH---==-====                                ======--------H-HHHHHHHHHHHHHHH
+CBCCCCCCCCBCCCCCCCC CCBBBCBCCC  CCCC C  CCC  CC                                                        C CCBCCCBCCCBBBCB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX++++++++++++++++==++-=-=++-==++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''               '  ''''''''''''''''''''''''''''''''''''
+.............................................................                        ...................................
+H-HHHHH-HH-HH-HHHHHHHH-HHHH-H-H--H-------HH---=----===== =                             =========---HH--HHHHHHHHHHHHHHHHH
+C BCCCB CC CC CCCCCCCC CCCC C C  C       CC                                                        CC  CCBCBBBCBCBBBBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX+++++++++++++++=+==-=---==-==+++++++++++XX+XX+XXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                   ''''''''''''''''''''''''''''''''''''
+...........................................................    .                    ....................................
+HHHH-H---H-----H--H-H---H-HHH-----------=----------== ====                             ====--=--=--HHHHHHHHHHHHHHHHHHHHH
+CCCC C   C     C  C C   C CCC                                                                      CCCCCCCBBBBBBBBBBBBBB
+                                                                                                                  V  VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++++++++=+++=+++++++++++X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''        ''''''''''''''''''''''''''''''''''''''''''
+.............................................................. .                . ......................................
+HHHHHHHHHHHHHHH--H-H-H-----HH----H-H------------=-=========                         = =-===---H-H--HHHHHHHHHHHHHHHHHHHHH
+CBCCBCCCCCCCCCC  C C C     CC    C C                                                          C C  CCBBBBCCBBBCCBBBBBBBB
+                                                                                                                     VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXX+XX+X+++++++++++++++++++++++++=++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '  '  '''   '''''''''''''''''''''''''''''''''''''''''''
+..............................................................                 .. ......................................
+HHHHHHHHHHHHHHHHHH---H--------------=-=-----=--=-=========                      =  ====-=-----HHH-HHHHHHHHHHHHHHHHHHHHHH
+CCCCCCCCCCCCCCCCCC   C                                                                        CCC CBCBBCCCCBBBBCCCCBBBBB
+                                                                                                            V      VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+X++++X+++++++++++++++++++++++++++=+=+++++++++++XX++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''           '''''''''''''''''''''''''''''''''''''''''''
+.............................................................. .             ...........................................
+HHHHHHHHHHHHHHHHH-H-HH--H-H--H-----=--=-====-======  ===                       = = ===--==-=H---HHHHHHHHHHHHHHHHHHHHHHHH
+CCBCCCCCCCCCCCCCC C CC  C C  C                                                              C   CCCCCCBBCBBCCCCBBBBBBBBB
+                                                                                                                     V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++++X++X+++++++++++++++++++++=++=++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '    '''''''''''''''''''''''''''''''''''''''''''''
+................................................................            ............................................
+HHHHHHHHH-HH-HHHHHHHHHHHH-------------=---====-==-===     ==                   = ====-------HH-HHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCCCBC CC BCCCCCCCCCCC                                                                   CC CCCBCCCBBBBBBCCBBBCBBBBBB
+                                                                                                                    V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX+X+++++++XX+++X+++++++++++++++++++++=++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................  ..        ............................................
+HHHHHHHHHHHHHHHHHHH-HHHH----==---=-=======--===-====      =                    =====----HHHHHHHHHHHH--HHHHHHHHHHHHHHHHHH
+BBCCCCBCCCCCCCCCCCC CCCC                                                                CCCCCCCBBCCC  CCBBBBBBBBBBBBBBBB
+                                                                                                                 V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+XX++++X+XX++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................   .  .    .............................................
+HHHHHHHHHHHHHHHHHHH-HHHH---==--=--== =-=--========== ====                     ==---HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCBCBBCCCBBCCCCCCBC CCCC                                                           CC CCCBBCCCCCCCCCCCBBCCCCCBBBBBBBBBBB
+                                                                                                               V     VV
+                                                                                                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX+XX++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................... . .................................................
+HHHH=HHHHHHH-HHHHH-HH-HH-------=--==== =  == = =  == ====              =     ===---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCCC CCCCCCC CCCCC CC CC                                                           CCCCCBCCBCCCBCCCCCCBBBBBCBBBBBBBBBBBB
+                                                                                                                  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' '''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................. .    .. .............................................
+HHHHHHHHHHHHHHHHHHHH--HH-H--------=-=-=====     = = == =  = =                ==----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBBBCCCCCCCCBBCCCCCC  CC C                                                         CCBBBBBBCCBBBBBBBBBCBCBBBBBBBBBBBBBBB
+                                                                                                         V   VVV V V VVV
+                                                                                                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++X++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................. .    ................................................
+HHHHHH-HHHHHHHHHHHHHHHHHHH------=--==-===== =   ====  == ====  =            ====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBCBCC CCCCCCCCCCCCCCCCCCC                                                       CCCBCCBBBBCBCBCBCCBBBBBBBBBBBBBBBBBBBBB
+                                                                                                            VV  VV  VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................ ........... ..... .   .................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHH-H-H----==-======  =    =   =    =              = =---HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBCCCBBCBBCCBCCBCCCCCBCCCC C C                                                  CC CCBBBCBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBB
+                                                                                                      V       V V  VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+X+++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''
+............................................ ........... ....... ...    ................................................
+HHHHHHHHHHHHHHHHHH-HHHHHHHH----=---=-=====   =        =          =        = ==----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCBCBCCCCCBCCCCCC CCCCCBCC                                                       CCCCCCCCBCBCCCBCBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                             V V   VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XX+++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................... ..........   . ...............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHH--====--= ==        =                       =  ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBCCCCCCBCCCCBCBCCBCCCCBCCCC                                                    CCCCCBBBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                 V   VV   V VV   VVVVVVV
+                                                                                                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++=++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''' '     '' ' '''' '''''''''''''''''''''''''''''''''''''''''''''''''
+................................................... ..                 .................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H----== = =    =                           = ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBCCCCCCCCCCCCCCCCCCCCCCCC C C                                                 CCCCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                             V    V V      V   V  V VVVV
+                                                                                                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++=++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '' '''  '  ''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................               .      ...............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---======   =                             =====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCBCCBCCCCBBCCCCCCBCCCCCCCCCCCC                                                 CCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                              V    V      V      V     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''' '''            ''' ''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................                     ................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH--H---== ====  =                              ==-----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCCCCCCCBCCCCCCBBCCBCBCCBC CCCC  C                                                  CCCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                             VV  V V  V V V      V  VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X++++++++++++++++++++++++++=++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '         '''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................... ..                 ...............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--=-=-==== ===   =                        == ==---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBBBBCBBCCCCCCBBCCBCCCCBCCCBCCC C                                                  CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                        V V VVVVVVVVVVVVV VVVVVV V   VVV
+                                                                                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++X+++++++++++++++++++++=+++==++=+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      '       '''''''''''''''''''''''''''''''''''''''''''''''
+..................................................... .                   ..............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-----=====-= ====  =                          ====-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCBBCBBBCBBBBCCCCBBCBCBBCBCCCC                                                   C CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                        V VVVVVV  V VV VV VVVVVVVVVVVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX+++++++++++++++=+===++++=++++++++++XXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '   '' ''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................                ................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----=-=--=====  =                       = ==---HHHHH-H-H-HH-HH--===------HHHHHHHHHHHHH
+CBCBBBCBBBCBBCCBCCCCBBCBBBCBCCCCCC                                               CCCCB C C CC CC           CBCBBBBBBBBBB
+                                                                                                                VV VVVVV
+                                                                                                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOMOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX++++++++++++++++++++++++++++++++++++++++++++====-==+---  -- =-----++++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''                         ''''''''
+.......................................................  .          .................                            .......
+HHHHHHHHHHHHHHHHHH-HHH-HHHHHHHHHH-------=-=--========                 ==  === =                                    -HHHH
+CBCCCCBCCBBCCCBCCB CCC CCCCCCCCBC                                                                                   CCBB
+                                                                                                                      VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMMMMMMOAXZZZZXX1XXXAZZ1ZAAMOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++++++++++++++++++++++++++++++++++++====--- -       -                    --+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '                                        '
+.........................................................  .............. ..
+HHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHH---=--== ==            ==     ==
+BCBBCCCCCCCCCCCC CCCCCCBCCCCCCCCCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOMMMMXZXXXXXZ))++1))+=++=-=-+))))
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++=-=-  --
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '
+..................................................................... .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---------====     == ========
+CBBBCCCCBCCBCCCCCBCCCCCCBBBCCBBCBCBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAXZ1X1)+++====-=-- -- ----
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+++++++X+++++++++++++++++++++++++++=+=--=------
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''
+.........................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--H---==--=======-=====  =      =
+BCBCBCCCCCCCBCCCCCBBBCCCCCBBCCCCCC C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMMZ)Z1)1)+=-===---  --
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++XX+XX+XX+++++++++++++++++++++++++++++++++===++ ---
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
+..............................................................................    .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH------=-===--=--=--== ===    =======
+CCBBCCBBCCCCCCCCCCCCCBCBCCCCCBBCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMZAX)1))===-==-- ------
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+X+++++++++++++++++++++++++++++++++++++++++=-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................  .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-----=-----HH--=-========== ==  =======
+BBBBCCCBCCCCCCCCBCCCBBCCCBBCCCCC CC           CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAX111)++===-- ---- -
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+X++++++X++++++++++++++++++++++++++++++++++-=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................................................... .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-HH----HHH-HH--==-=-======-================ == =    =
+BCCCBBCCCBBCCCBBCCCCCBBCCCBCBC CCC CC    CCC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXX11)1+)=----- ---
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++X++XX+X+++XXXX++++++++++++++++++++++++++++=++--
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH-HHHHH----H---======-==--=-===----========== == =  ====
+BBCBCBBBCBCCCCCCBCCCBBCCCCCCCC CCCC CCCBC    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMAZ1)+-==-- --
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+XXXX+XX+XXX+X++X++++++++++++++++++++++==+=- -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHH--H-HH-------=----=----=--=---=-==-==  ====== = == ==
+BCBCCBCCCBBBBBCCCBCBCBCBCCCCCC CCCCCCBBCCC  C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMXA1)+===-==
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+X++++++XX+++++++++++++++++++--
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHH-------------H--------=-=-=-======--========= =
+BCBBBBBCBBBBBBBCCBCCBCCCBCCCCCCCCCBBCCCC CC CCCCC             C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAZ1))1)
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX++X+++++X++++++++++++==--
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H---H------H---H----------------=----==-=====-= = =
+CBCCBCBBBBBBBBCBCBBBBCCCCCCCBBCBBBCCCCBCCBCCCC   C   C      C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA11Z
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXX+XX+XX++X+X++++++++++++++++++----
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
+.......................................................................................................... .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH--H-HHHH-----H-------H---===-----------=--=--==-=-==========
+BBBBCBCCBBCCCBCCBCCBBCCBCCCCBBBBCCCCCCC  CC  C CCCC     C       C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOMMA
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++++++XX++XXXXXXXXXXXXXXXXX+XXXXXX++XX++X++++X+X+++++++++++++   -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
+..............................................................................................................
+HHHHHH-HH-HHHHHHHH-HHHH---HHHHHHH----H-H-HH-----=H--======--==----H--H-----H---=-H-H-H==--==-====-=-=  == =
+BBCBCC CC CCCBBCCC CCCC   CCCCCCC    C C CC      C                C  C     C     C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+XXXXX++++++++++++++++===
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH--HHH-H-------H---H-----H----HHH---=------=-----====== ==  =
+BBBBCCCCCCBCBBBCBCCBCCBBBBBCCBBBBCCCCCCCCCBCCC CCCC  CCC C       C   C     C    CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXX+X+XXXX+X+++X+++++++++++=-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
+...................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HH-H-----HHHHH-------HH----H--H---------==-----=-=----=-===-= ===
+BBBBCBCBCCBCBCCCBBBBBBBCCBCCCBBCCCCCCCCCCCCC C CC C     CCCCC       CC    C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXX+XXXXXXXXXXXXXXX+XXXX++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................................................................................... .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH--HHHHHH---H-H-HHH--HH-H-------=-HH-H------H-=---------------=----===  ==
+CBBBCBBCCBBCCBCCBBBBCBCCCCCCBCCCCCCB CCCCC  CCCCCC   C C CCC  CC C         CC C      C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+X+X+++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH-HH--HH----HH----------H-H-H-H-----=--------------------=---------=-=-=== ==
+BBBBCBCBCBBBBCCCCCCCCBCCCCCCCCCCC CCCCCCC CC  CC    CC          C C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XX++X++X++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH----HH----H----H-H=--H------HHH-H-HH-HH-H-HH-HH--HH---H----------=---=--==-==-====
+BBCBCCCBBCBBBBCCCCCCCCCCCCBCC CCBBCC    CC    C    C C   C      CCC C CC CC C CC CC  CC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+XXXX+++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H---HHH-H--HH--H-HH----H-HH--H----H-HHHHH-HH-H--------------=----=----==========
+CBBBBCBBCCCBBBBBCCBCCBBBBCBCBBBCCCCBCC C   CCC C  CC  C CC    C CC  C    C CCCCC CC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXX+X++X+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----H---HHHHH-H-H--H-H-HH----HH---HH-H--H-HH--H------=--------------=-==-==
+CCBCBCCCBCBBCCCCBCBCBCCBCBBCBBBBBBCBCCCCCCCC    C   CCCCC C C  C C CC    CC   CC C  C CC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-------H------------=--=H----------HH-HH------H----HH----HH-------------H--==-======
+BCBCCCBCCBCCCCCCCCCBBCBCCCCCBCCCCCCC       C                C          CC CC      C    CC    CC             C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXX++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH--HHHH--H-H-HHH-HH-HHHHH-H-HHHH-HH-HHHHHHHH-H-H-----H---H------H---=-=---====
+CBBBCBBCBCCBBCCCCBBBBBCCBBCCCCBCCCCCCCB CCC  CCCC  C C CCC CC CCCCC C CCCC CC CCCCCCCC C C     C   C      C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+X+X+X+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHH-HH-HHHHHHH---HHH------HHHH-=HH----=-=-=-=
+CCCBBCCCBCCCBBCBBCCCCCCCBCCCBCCCCCCCCCCCCCC  CCCCCCCCCCCCCCB CCCCCCCCCCCCCCCCC CC CCCCCCC   CCC      CCCC  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HH-HHHHHHHHHHHHH-HHHHHH-H-H-HHHHHHHHHHHHHHHHH--H-HH-HH-H-H-HH--==-----
+CCBBCCBBCCBBCCCCBCCBCCCBCCBBBCCCBBBCCCBBCCCCCCC C CC CBCBCCCCCCBCC CBCCCC C C CCCCBCCCCCCCCCCCC  C CC CC C C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HH-HHHHHHHHHHHHH----HHH-H--H--HHHHHHHHH-H--HHHHH---H------------=------=
+CBBBBBCCCBCCCCBCCBCCCCCCBBBCCCCCCBCCBCBCCCCCCC  CC CCCCCCCBCCCCC    CCC C  C  CCCCCCCCC C  CCCCC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH--HH-HHHHH-HHHHHHHHHHHHH-HHH-HHHHH-HHHHHH-HHHH--H-H-H-----------=--=
+BBBBBBCBBBBBCBBCCBBBCBBCBBCCCCBCCBCBCBCBCCCCBCBBC BC  CC CCCCC CCCCCBCCCCCCC CCC CCCCC CCCCCC CCCC  C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH-HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH---HH--H--H---
+BBBCBBBCBBBCBCBBCBCBBCBBBBCCCCBCCBCCBCBCCCBCCCCBBCCCCCCCB CCCC CCBC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCC   CC  C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHH---HH--HHH
+CCBBBBBBBBBBBBCCBBBBBCBBBBBCBBCBBBCBBBCCBCBCCCCCCBBBBBCBBBBBBCCBBBBCBCBC CCCCCCCCBBCCCCC CCBCCCBCBBCCCCCCCCBCC   CC  CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H---=--H---H
+CCBCBBBBBBBCCBBBBBBBBBCBCBBCCCCBCCCCCCBCCBBBCCCCBBCBBCCBCBBBBBCCCCCCBBCCCCCCCCCCCCCCCCBCCBBCCCCBCCCBCCCCCCC C      C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHH-H-H-------
+CBBBBBBBBCBCBBBCBBBCBBBBBCCCBCBBBBBBBCBBBBBCBBCCBCBBCCBBBBCCCCCBCBBCCCCBCCCCCCCCCCCCCCCCCCCC CCCCCBBCCBCCCCCC C C
+                V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHH-HHHH---H--HH
+BBBBBBBCBBCBBBBCBBCBBBBBBCCBCBBCBBBBBBBCCCCBBBBCBBBBCBCBBBBCCCCCCBCCCBBCCCCCBCBCCCCBCCC CCCCCCCCCCCCBCBCCCC CCCC   C  CC
+                                 V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHHHHHHHHH--HH-H--H
+BBBBBBBBBBBBCBBBBBBBBBBBBBBCBBBBBBBBBCBCBCBCBBCCCCBBBBBBCCBCCBCBCBCCCCCCCCCCCCBCCCCCCCBBCCBCCCC CC CBCBCCCBCCCC  CC C  C
+V     VV                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHH--HHHH-----H-
+BBBBBBBCBBCCCBBBBBCBBBBBBCBCBBBCBBBBBBCCBBBBBBBBCCCBBBBCBCCBCCBBCCCBCCCBBBCBBBCBBCCBCCCCCCCCCCBC CCCBBBBCCC  CCCC     C
+                                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH---
+BBBBBBBBBBBBBBBBCBBBBBBBBBCBBBBBBBBBBBBBCCBCBCBCBBBBBBBBCBBBCBCBCCBBCBCCCBCBCBCCCBCCBCBCBCCCBCBBCBBCCBBBCBCCCCCC CCCC
+     V V         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH--H-
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBBBBBBBBBCBBCBCBBBBBBBBBBBBCBBCBCCBCBBCBCBCBBBCCCCCBBBBCBBBBCBBCBCCBCCCCCC CCC  C
+ V    VV  V                    V      V  V                V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H
+BBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBCBBCBBCCCBBCCBBCBCCBCCBBCCBBCBCBBBBBCCCBBCBCBCCBCCCCC   C
+VV V  V        V    VV      V                V              V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H----H-
+BBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBCCBBCBBBBBCBBBBCBBBCBCCBBBBBBCBBBBCCBCCBBBCBCCBCBBCBBBCBCCBCCBBCCCCCC C    C
+VV VV      VVVVV      V    V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBCBBCBBCBCBCCBCCBCCBBBCCCBCBBCBBCCBBCBBBBCCCBBCCCCCC
+VVVV V   VVV V  VV VVV V V     V       V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCCCBBBCCCCBBBBCBBBBBBBBBCCBCBBBBBBCBCCCBCBC
+ VVV VVVVV VV   V V V V     V V    VVVVV  V VVV         VV           V
+ AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBCBBBCCBBBBCBBCBCBCCCBBBBCBBBCCCCCCBBBBBB
+VVVVVVV VVVVV V VV   V V  V  VV VVV VV  V  V  VV VVVV V   VVV V V
+A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBCCCBCCCBCBCBBBCBBCBBBBBBCBCBCCBBCCBCCBBCCCCC
+VVVVVVVVVV V VVVV  V VVV     V    VV   V VV  VVV  V  VVV V V          V
+ AA   AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBCBBBBBBBBBBCBCBCCBCCCBBBCBBBCCB
+VVVVVVVVVVV V VV  V  V   V  V      VVVV V VVV VV     V VV  VVV VV   V     V
+A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBCBBBBCCBCBBBBBCBCCBBBBCBCBB BB BCBBCBCCCCCBBC
+VVVVVVVVVV VVV  VVVV  V    V VV VVVVVVV   VV   V VVV V V VV  VV V   VV
+A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBCBBCBCBCCCCBBBBBBBBCCCCBBCBCCCCCBBBB
+VVVVVVVVVVVVV VVVV VVVVVV VVV VVVV VVVVVVV VVVV VV  VV VVVVVVV VVV V       VV
+ AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBCBBCCCCCCCCBBCBCCBBBCBCCCBBCBBCC CCCCCCB
+   V VVVV V VVVVV    V V   V VV VVVVVVVVV VVVVVVVVV V   VVVV VVV V V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCCCCCBBBBCCBBC
+       V  VVVVVVVV VVVVV V V VV VVV VV VVV VVVVV V  V VV   VV V VV         V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBCBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCBBCCBBCBBBBBBCBC
+         V   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVV  VVVVVVVVVVVV VV VV V VV   V            V
+                                   A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBCCBBBBCCBBBCBBBBCBCBBBBBBCBBCBBCC
+               V  V VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV  VVVVVV    V                  V
+                                 A      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHH--HHHHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHH
+BCC  CBBCBBCC   CCCBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBCBBBBBCBBBBBBBCCBBCBBCCCCCCCBBCBBCBCCCCCCCCBCCBBCCCCCCBBCCCCCC  CCBCC
+                        V        VV V V    VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBCCBCBBBCBBBBBBCCBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBC
+                          VVVV VVVVVVVVVVVVV V  VVVV VV VV VVVV V VVVVV      V VV  VVV                               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCBBBCBCBBBCBBCBCBCCCCBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBCBBBBCBBBBBCCBBBBBBCBBBBBBB
+                                V VVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVV V   V   V VVVVVV                       V
+                                   A A  AA       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCCBCCBCCCCBCCBCBBBCCCBCBCBCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB CBBBBBBBBBBBCBBBBBBBBBBBBBBBBBC
+                                   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV   VVVV VV VVVVV   VV           V         V
+                                    A   AA  AAA  A    A AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHH-HHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCCCC CCCCCCBCCCCCBCCCCCCCCC CCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBBBBCBCC
+                                      VVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVVV VV V  V   V    V V
+                                                 AAA  A       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCCCC CBCCCCBCCCCCCCBCCCCCCCC CCCCBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                             V VVVVVVVVVVVVVVVVVVVVVVVVV VVVVV VVVV V VV   V V VV     V VV   VV
+                                                 A AA AAA  A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+--HHHHHHH-HHHHHHH-HHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  CCCCCCC CCBBBCC CBCCCCCCCCCC CCCCCCCCBBBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                               V    VVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVV V VVVV VVVV  V  V VV V V  V
+                                                       A AA  A                   A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCCC  CCCCCBBCCCCCCCCCCCCCCCCCCC CCBB  CBCCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                    VV V VVVVVVVVVVV V V VVVVVVVVVVVVVVVVVVV V V V    VVVV    VV   V  VV
+                                                             AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHH-HHHHH-HHHHHHHHH-HHHHHHHHHHH-HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCCCCC CCCCC CCCCCCCCC BCCCCCCCCCC CBCC BBBBBBCBBCCBBBCBCBCBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                 VVVVVVV VVVVV VVVVV  VV    V VV V  V VVVVV V  VV  VV  V
+                                                                    A    A     A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHH-HHH-HHHHHHHH-H-HHHHHHHHHHHHHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CBCC CCC CCCCCBCC C CCBCCCCBCCCCCBCCC   CCBBBBBBBCCCBBCCBBBCCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                VVV VVVVVVVVVVVVVVVVVVVVV VVVVV  V   V V  VVVVVVV V V V
+                                                                     AA  AAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHH-HHHHH-HH-HH-HHHHHHHHHHHHHH-HHHHHH--HHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCC CBCCC CC CC CCCCCCCBCCCCCC CCCCCC  CCCCCCCCCCCCCCCBCBBBBCC BCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                        VVVVVVVVVVVVVVVV    VVVVVV    VVVV  V   VV
+                                                                            A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH-HHHHHHHHHHHHHHH-HHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+CCCCBBBBCBBCCCCCCCCBCCCCCCCCCC CC BCCBCCBCCCCCCCC CBCBCB CCBCCCCCCCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                          V VVVVVVVVVVVVVVVVVVV V  V   VVV  VVVV VVVVVVV
+                                                                                AAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-----------H----H-HHHH-HHHHHHHH-H--HHHH---HH-HHHHHHHHHH-HHHH-HHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+           C    C CCCC CCCCCCCC C  CCCC   CC CCCCCCCCCC CCCC CCCCCCCCCC CCCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                V VVVVVVVVVVVVVVV V  VVV V   VV   V VV V
+                                                                                   AA AA A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXX++XXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-=---==-HHH--H--H-HHH-HH-H-==H-HHHHHHH-HHHHHHH-HHHHHHHHH-H-HHH--HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+        CCC  C  C CCC CB C   C CCCBCBC CCCCCCC CBCCCCCCC C CCC  CC CBCCCBCCCBBCCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                      VVVVV VVV V VV V V  VV VVVV VV VVV
+                                                                                       AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X++++XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=-====-----=------HH---HH----HHH-HHHHHHH-HHHHH-HHHH---HH-HHHHHHHH-H--H-HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                  CC   CC    CCC CCCCCCC BCCCC CCCC   CC CCCCCCCC C  C CCCC CCCBCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                         VVVVVV  VVVVVVVVVVV VVV  V    V
+                                                                                                             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XX+++XX++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=====--===--==-==-----H-----HH---HHHHHHHHHH-HHHHHHHHHHH-HHHHHHHHHHHH-HHH-HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                      C     CC   CCCCCCCCCC CCBBCCBCCCC CCCCCCBCCCCC CCC CC CBBCCCCCBCBCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                            VVVVVVVVVVVVVVVVVVVVV    V V
+                                                                                                AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++X+++++++++XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+= ===  == ==  =-= = =====----==--H-H-----H-HHHH-HHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                 C C     C CCCC CCBCCBCBCBCC CCCCCCCCCCCCCCCCCCCCCCCBCBCCCCBBCCBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                               VVVVVVVVVVVVVV VVVVV V VV
+                                                                                                  A  A        AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X+++X+X+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=-===-=-=== = =  ========= ======-----H--H----H----HHHH-HHHHH--HHHHHHH--H---HHH-HHHHHHHHHH--H---HHHHHHHHHHHHHHHHHHHHHHHH
+                                      C  C    C    CCCC CCCCC  CCCCCCC  C   CCC CCCCCCCCCC  C   CCBBBBBBBBBBBBBBBBBBBBBB
+                                                                                                   VVVVVVVVVV VVVVVVVVVV
+                                                                                                      AAAA         A
1
 -- -- -- -- --- -- ----  -  - - ---
 ----- -- - --  --- ---- ----- ------
   - -- --  -- --- -- -- -- -- -- ---
   --------- -- -  - --------  -  - -
    - ---- -   -- ----- --- -----  --
 - - - - -- -------- -----  --  - ---
 -  -   ---  ---  -- ---    --  - ---
 -- ------   -- --- -----------    --
  ----  - - -- -  --  ----     ---- -
  -- --  -    --   -  ---  --  - - -
  --  ---  --         -   ----- -   -
 -- --        -   -  ----  -  --- - -
  -- - - -- - ----  -- -   --   -
  --  --  -  ----    --  -     - -  -
   - - -  - --  - -- -   - --  --- --
   - -- - -    - -  -   - - ---   ---
 --  - +-- -   -   --     --- -  ----
 --- --  -  - - - -  - ---- - - -
 -  --- --  --   ---   --- ----  ----
 --  ---- ------ - --  -  --- - -----
 ----- ----    -- ----  - -- -- -   -
  -- -- -- - --  - ------ ------  ---
  -   --- ------  ------- ----     --
   --  -   -- --      ------ ----   -
    --   -  - -  -  -- - --   - -  -
 - -   --  -- -  - -  --- --   -----
 -  -- - --     -     -- - - -  --- -
   --  - --   -    - -- --  - -- --
 - - - -- -- -  ---- - -  -   -- - --
    --  - -  -- - ----   --  ------
 -  -- -  -----     - -----   --   --
  -  ----     --- -----   - - ------
  --  ----  -    -      - -  - --
 -  --- ---    --           -    ----
 -  --   -  -  -- - - -    -- -- -
   -    - -      --  -- ---   ---  -
 --- -  -  --     -- --    - ----  --
      -      - -- -    ---  - --  - -
      -  - -  - - - -     --- -  -
 --    -    -- -  -          --   -
  -   -          -     -      -
 --- ---  --         -   - -   - -
 -     -  ---   -- -   -- -- --   --
  -   --  - ---    -    - -  -   - -
  -       --- ---- -   -       - -  -
  -            -   ---- -       -  --
 ---      -   -   - --  -  -- -
 -   -   -   -- -   -  -- -   -   - -
   --        --  - ---     -- -   ---
 -    ---   --     - - --  -  -----
 -  ----   -  -- -----  ---     --
  -  --    --   -  -      -  - --- --
 - - -   -    --- --- - --      -   -
 - -    -             - --    -  - --
 -   -- -       -- -  -  -     -    -
 -   -  -- - -        --      - --  -
 -- - - -  ---  -- -   - -      -- --
  -  -     -  ---- --- -    -     --
 --    - -  - - -  -   -- -   - -
 ------  ---- --    -    --- - - ---
   -- ----  -    --     --   -
  --- -  -    -       -   --   -   -
  -   --                 -  -   --  -
 -  --  ---     -  -    -  -     ---
    ----    ----        ----  -  --
   --- -  --   -- --  -  -- --- --  -
 -- ---- - -  -  ---    -  - -   ----
  ----    -  -    --           ---  +
 -- -       -         - - ----+==---+
  --  -  -       -   --  -=+ZZ+-===++
  --      -        ----- =)AM1==)1Z1+
  -   -     -       -- ---+1)=)ZAMMA1
      --   -       -------=+)1AOOOMOA
+                              --- -
     -       -  -=+)+=-+)))1XMA1+---+
   -      -     =1AZ11)))11ZZX1)=-==)
  ---  -   - -  )XXXZZAZZZZ111AMMAMMM
        -  -  -=XAZ1XMOOOMM1)ZOOOOM11
+                     =+=     -++=
+                      '       ''
              -1AAAXMOOOOOMAXXZ)-- --
+                    -+++=
+                     '''
+                     ..
+                      =
    -         +XMMMOOOOOOMAOOM+- ----
+                  -=+++-  --
+                    ''
+                     .
      -      =ZMMOOOOOOMMOOOMA+-- -)X
+                -=+++-  --=
+                  '''
   -        -ZMOOOOOOOMOOOOOM1ZZ)+ZOO
+              ==+++++ -----       -=
+                 '''
+                 ...
+                   =
           -)AMOOOOOOOOOOMMMMMMMMMOOO
+              -==++===--         --=
 -         =1XAMMOOOOOOOOOOOOOOMMOOOO
+                --+=++=-------  --==
+                     '
  - --  -=)ZXMAXMOMOOOOOMXAOOOOOOOOOO
+                - -++++   -+++==++++
+                   '''           '''
+                     .            .
     --1OOOMAXAMMMMOOOOO)+)XOOOOOOOOO
+       -=-        --++-    --=++++++
+                     '         '''''
+                                 ...
   - -XOOOOMXAMOOOMMOOOZ=-===)1ZXOOOO
+      +++=    ---  -=-          -=++
+      '''                         ''
+       ..                          .
+       =
 --=-+AOOOMMMOOOOMMOOOO1=----=-=-=)AO
+      +++   -+++  -++-             =
+      ''     ''     '
+      ..      .     .
+              =
 ----+)AAXZMOOOOOMOOOOM+=---- =---=ZO
+           ++++= -+++              -
+            '''    ''
+            ...    ..
+            =      =
 =-----+)ZAOOOOOAXMOOOM)==-==+==-=1OO
+          -+++=   +++             -+
+            '      ''
+                   ..
+                   =
 -=--=--)1XAMOMMXAMOOOM11)1)++++=+ZOO
+            -     -==             =+
 --=---+))+11ZZAMMOMOOMX1XZ1))))+)AOO
+                 - --             ++
 -===+=++=+))11AOOMOOOOMZAX11+))=)ZOO
+               -- ----            --
 ==-===+)))+)1ZMOOOOOOMOMMAMXZ1)11ZAO
+               -=+++= -            -
 =======+))+)1AMOOOOOOOOOOOOOOXZZXXMO
+               =++++++===----      -
+                '  ''
 +===--==+)))+ZMOOOOOOOOOOOOOOOOAXMOO
+               =++++++++++++---   =-
+                '''''' '  '
 1)+=++==++)++1MOOOOOOOOOOOOOOOMMMMOO
+               -+++++++++++=--    =-
+                 '''
+                 ..
 OMZZX1)1ZZ1)ZZOOOOOOOOOOOOOMAAOOOMMX
+-             -=++++++====-   ---
+                '''''
+                ...
 OOOOOOOOOMOMMMOOOOOOOOOOOOOAMOOOOOMM
+++++++=-- -   =+++++++=----  -=+--
+''''''         '''''''
+..              .....
+==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX++++++++=++++++++==-=+++++++++
+'''''''''''''   '  '''       ''''''
+..........         ...       .....
+-H----===           =          ===
+ C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+++++++-=====+++++XXXXX++
+'''''''''''''''''        '''''''''''
+.................          .........
+-HH-HHHHHH-===              =-----==
+ CC CBCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+XXXXXXXXX+X++++==-+==+++++++++
+'''''''''''''''''''         ''''''''
+...................         ........
+----H=-H-HH-HH-=-=           ==== ==
+    C  C CC CB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXX+XXXXXXXXXX++++++++++++=++++
+'''''''''''''''''''''''''''''    '''
+......................... .      . .
+=====---=-H-HH--HHH==== =
+          C CC  CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+X+XXX+XXXXXXXXXXXXXX++X+++++++++
+''''''''''''''''''''''''''''''''''''
+................................ .
+---=-=---=--------HH-HH-==H=== =
+                  CC CC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+
+''''''''''''''''''''''''''''''''''''
+....................................
+-HHHH-HHHH--HH--------H--HH--HH-==-=
+ CCCC CCCC  CC        C  CC  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX+XXXXX+XXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+-HH--HHHHHHHHH--=-----=----HHHHHHHHH
+ BC  CBBCCBCCC             CCCBCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+=HH-HHHHHHHHHHHHHH--------=--H-H-HHH
+ CC CCBCCCCCBBCCCC           C C CCB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+------HHHHHHHHHHHHHHHH-HH---H-------
+      BCCCCBBBCBCBCBCC CC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+=--=-==--HHHHH-HHHHHHHHHHHHHHHHHHHH-
+         CCCCC BBBBCCBBBBBBCCCCCCCB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++XXXXX+XXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+====== =-----=----HHHHHHHHHHHHHHHHHH
+                  CCCCCBCBCBCBCCCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+X+XXXXXX+XXX+XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+H-H---=-=------=--H=HHHHHHHHHHHHHHHH
+C C               C CCCCCBBCCBBBBBCB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXX+++++X++++XXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+=HHHHHH-HH-=====-====---H--HHHHHHHHH
+ CCCBCC CC              C  CCCCBBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXX++++XXXXXX+XXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+=---HHHHHHHHH----====------=--HHHHHH
+    CCBCBCBCC                 CCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X+XXXXXXXXXXXXXXXXXX+X++++++XXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+=-=HH--HHHHHHHHHHH---=-======----H-H
+   CC  CCCBBBCCBBC               C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXXX+XX+X++XX
+''''''''''''''''''''''''''''''''''''
+....................................
+=------HH-HHHHHHHHHHH-H----=--=-==--
+       CC CBCBBCBCCBC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXX
+  ''''''''''''''''''''''''''''''''''
+  ..................................
+   = == =  =HHHHHHHHHHHHHHHHH-HH----
+            CCCBCCCCCBCCCCCCC CC
 -=1=++)1==)1AOOOOOOOOOOOOOOOOOOOOOOO
+             -++XXXXXXXXXXXXXXXXXXXX
+              ''''''''''''''''''''''
+              ......................
+               =----HHHHHHHHHHHHHHHH
+                    CBCBBBCCBBBBCCCC
 --=--- --    - =-)XXMOOOOOOOOOOOOOOO
+                     ++++XXXXXXXXXXX
+                     '''''''''''''''
+                     ...............
+                        =----HHHHHHH
+                             BBBCCCB
 =---- --+==-----------====)))1XXOOOO
+                                -+++
+                                 '''
+                                  ..
+                                   =
 -=-==--==+++-------- --------- ----=
 ==+)))====+)1==---==-=--==- --------
 XXZZ1ZXZ11Z11))+-=-+=-=---------=---
 AMMAAOOOOOAXXMA1ZZXZXZ+===+===------
+     -----
 1Z11ZMXAMMZZAXAOMZ1XZAXZZ1)+)1))+++=
+               -
 AMXZXXXXMA1)Z))1ZZ+1Z111Z++1))11))+)
 OOOOOOOOOOOMOMZ1ZAZ11))1)1))++=+1++)
+++++=++++++ -
+''''  '  '
+...
+=
 OOOOOOOOOOOOOOOOOOOOMOOOOOOAMOAXAXZZ
++++++++++++++++-=++- ------  -
+''''''''''''' '  '
+...........   .
+      =   =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++=+++==++=+++-=+--
+ ''  '''''' '''  '    '  '   ''
+     ....    .
+      =
 OOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOMO
+-+-=+++==---==--- =-==-==+==++==+= =
 OOMOOOOOOMMOOMAXXXMMMOOMMOXXOOMMOOMO
+== ----=-  -+        --  -  -=  =- -
 OOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMOOOOM
++++++++++==++=------=+=---     -+=-
+'   '   '
+    .
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++=++=++++===+=---++==+
+'''''''''''''''           '     '
+........ .  .
+    =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++-+++++++==+++=+++=++
+'''''''''''''''   '''''   ''   ''  '
+. .............   .            .
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++--=--++++++++==--+++++++++++++++
+ '        ''  ''     ''''''''''''''
+           .  ..      ..  ..   .. .
+              =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++==--+++++++=--+++++
+'''''''''''  ''''        '''    '''
+ .. .        ...          .      ..
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++=---==++
+''''''''''' ''' '''  '   ''       '
+ ......      .       .
+     =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++==++++++=+++++
+'''''''''''''''''''          '     '
+............... ...
+===========
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XX+XXX++XX++X++++++++++=++++-=+-
+'''''''''''''''''''''''''''  '    '
+...........................
+====--=-H-==--==-======  =
+        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++X++XX++X++++X+XXX+X+++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+ ==== ==- =--==-====-=---=-==== ====
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++++X
+'''''' ''  '''''''''''''''''''''''''
+   ..  ..   .. .....................
+                      ==== ========-
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++=--++-+++--+++++++++
+'' ''' '''    '    '   '    '' '''''
+.  ...                 .    .   . ..
+                                   =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOAOMOMMMOO
++++++++++++++++++-++++--+=- - -   --
+''''''''' ''''''   ''
+........  ..       .
+ ==  ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOO
+++XXXXXX++++++++++++++++==+=  =+=--+
+''''''''''''''''''' '''
+...................  .
+==------= ====  ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X++++++XX++++++X++++++++++++++++++
+''''''''''''''''''''''''''''''''''
+.................................
+ =-======-- === =-=== ==    =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++X++
+'''''''''''''''''''' '''''''''''''''
+.................... ...............
+ =========== =   =     === = ====-=
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++X+X++++++++++++++++=+=+++++=-
+''''''''''''''''''''''''''   '  ''
+......................  ..      ..
+== ====-=-===== ==  ==           =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++X+++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+= = ====== =-== === ===========
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++XX++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+.................................. .
+--==--======== = ======= = == = =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++++++++++
+'''''''''''''''''''''''''''''''''' '
+...............................  . .
+=== ====== == =======   =     =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++X++++++++++++
+'''''''''''''''''' '''''''''''''''''
+.................   ................
+==========     ==      -========= =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX+XXXXXXX+++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+.................  .................
+=--=-------======    = ==    ===  ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++X++X+++X+++X+++X+++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+===-==-===-===-== -====== ==  ===  =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+++XX+++++++++XX+++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+---===--==== ====--== ==  ====== ===
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX++X++X++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HH--------H-==-==-=   == =    == ===
+CC        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX+XXX+++X++X+++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+---HHH--HH-HHH--=H--===-==-==== ==
+   CCC  CC CCC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++X++X++XXX+X+XXXXXXXXXXXX+++X+X
+''''''''''''''''''''''''''''''''''''
+....................................
+-=====-==-==---=-=--H---------===-=-
+                    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++XXX++X+XXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+======= ===========---==-=-------HH-
+                                 CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+================= ==================
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+-  ====== === =     === = ==   =   =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+XXXX+X++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+-----=----=-====== =  = =         ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+X+++XX++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+--HHH-H----H-H-H-=-===--===== ==   =
+  CCC C    C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X++++++XXXXX++XXXXXXXXXXXXXXX+++
+''''''''''''''''''''''''''''''''''''
+....................................
+====-======HHHH-==-HH-H----H--HH-===
+           CCCC    CC C    C  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X++++++X+++++++X+XXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+====-  = ==-=======-=------H--H----H
+                           C  C    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XX++++++++X++++++++++++++++++++XXX
+''''''''''''''''''''''''''''''''''''
+....................................
+==--==== ===-======= === ========---
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++X+XXX++XXX+XX+X++++X+X++++
+''''''''''''''''''''''''''''''''''''
+....................................
+======= ==-=---==---=--=-====-=-===
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++XX++++++++++++++X+XXXXXXXXXXXX+X
+''''''''''''''''''''''''''''''''''''
+....................................
+HH==--==============-=-------H----=-
+CC                           C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+XX++X+X++++++++++++XX
+''''''''''''''''''''''''''''''''''''
+....................................
+-----H---H----=--==-=-==== =======--
+     C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++X+++++XXX+++++XXXXXXX+XXXXX+++
+''''''''''''''''''''''''''''''''''''
+....................................
+-=====-= ===---=== =-------=-H---===
+                             C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXXXXX+++++++++++++X+++++X+X++XX+
+''''''''''''''''''''''''''''''''''''
+................ ...................
+H=-------======    ===-=== =-=-==H-=
+C                                C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X+XXX+XXXXXXXXXXX+X++X+++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+=-=---=HHH-------H=-==-= === =======
+       CCC       C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++XX+XXX+++++XXXX+XX+XXXXXXXXXXX+X+
+''''''''''''''''''''''''''''''''''''
+....................................
+-==--=-H-=====----=--=--HH--H----=-=
+       C                CC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++XXXXX+X++XXXXXX+++XXX++++++XXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+H===---H-=-==---H--===---======H----
+C      C        C              C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++X++++++XXXXXXXXXXXX+XX+++XX+++
+''''''''''''''''''''''''''''''''''''
+....................................
+==   =-==  ==--HH-----H-H=--===--==
+               CC     C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX+++++++++++++++++++XXXXXXXXXXXX++
+''''''''''''''''''''''''''''''''''''
+....................................
+=--==   ===   ==== ===--H------HH-=
+                        C      CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+++++XXX++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+-HH-=====HH-   = ===    ==   =======
+ CC      CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X+++X++XXX++++++XX++++++XX+++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+=-===-==---==== =--==   =--==     =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXX+X+++XXX+X++++++++XXX+++++XX+
+''''''''''''''''''''''''''''''''''''
+....................................
+====-H-=-===-H-=-========---==  =--=
+     C       C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++XXX++X+++++++++++XX++++++X++++XXX
+''''''''''''''''''''''''''''''''''''
+....................................
+-==---==-=  ====== =-- == ==-====---
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+XX+XXXX+XXXXX+XXXXX+++++XXX+++++
+''''''''''''''''''''''''''''''''''''
+....................................
+-H-=--=----=-----=-----= = =-H-=== =
+ C                           C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXX+XX+++XX+XX+++XXXX+X+XXXXX+++
+''''''''''''''''''''''''''''''''''''
+....................................
+=------=--===--=--===----=-=-----===
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+XX+XXXX++X+++X+++X++X+XXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+-H--HH-=--=----==-===-===-==-=--H---
+ C  CC                          C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX+X+XXX+++XX+XX+++X++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+--HH----=-=---===--=--===-===== ===
+  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+
+''''''''''''''''''''''''''''''''''''
+....................................
+=-HHHHHH-HHHHHH---HHH------H---==--=
+  CCCCBC CCCCCC   CCC      C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+X+XXXXXXXXXXXXXXXX+XXXXX++XXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+---H-=-=--HH--H--HHHH-H-=-HHHH==---H
+   C      CC  C  CCBC C   CBCC     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+XXXXXXX+++XXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHH--=----H--===--H-------HHH--H-HHH
+CCC       C       C       CCC  C CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXX+X+X+++++++XX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHH---H-----=-=-=======-H
+CCCCCCCCBBCCCC   C                 C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+XXXXXXX+XXXXXXXXXXXXXXXXX++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+--=-------=-HHH-H---HHHHHHH-=  =====
+            CCC C   CCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX+++XXXX+X++XXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HH---H--===----=-==--H--H----HH--H--
+CC   C               C  C    CC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+X++XX++X++++++XXXXX++++
+''''''''''''''''''''''''''''''''''''
+....................................
+-H-HHHHHHH--=-==--==-======--H--====
+ C CCCCCCC                   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXXX+XXXXXXXXXXXX++++++XX++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+= ===----=----------H-======--======
+                    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX++++++XX+X++X+XXXXXXX++XX+XXX+X
+''''''''''''''''''''''''''''''''''''
+....................................
+-----======--=-==-=H-H--H-==-H=---=-
+                   C C  C    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+++++++++++XX+XXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+H-HHH-H---H------===========--=-----
+C CBC C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXX++XX+X+X+++
+''''''''''''''''''''''''''''''''''''
+....................................
+H--H-----H----HHHHHH---H-==--=-=-==
+C  C     C    CBCCCC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X
+''''''''''''''''''''''''''''''''''''
+....................................
+--HH-H-----H---H-----HHH------HH--=-
+  CC C     C   C     CCC      CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+=-HH-HHH-HH-H-H--HHH-------H---HH-HH
+  CC CCC CC C C  CCB       C   CC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X+++X+++X++XX++XXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+==-===-===-==--==-HHH-H-H-HH-HHH---H
+                  BCC C C CC CCC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++X+++XXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+========= ===    =-===----HH--H--HH-
+                          CC  C  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX++++++++++++++++++++++++++X+
+''''''''''''''''''''''''''''''''''''
+....................................
+--------====  = = =          ==  =-=
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+X+X+++X+++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHH-HHHHH-=-=-===-====  =  =  ==
+CCCCCB CCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHH--H---HHH-H--==========
+CCCCCCCBBBCCC  C   CCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+H-H-HHHHHHHHHH-HHHHHHHHHHHHHHH------
+C C CBCCBCCCCC CCCCCCCCCCBCCBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+--=HH------HHHHHHHHHHHHHHH-HHH-HHHHH
+   CC      CBCCCCCCCBBCCBC CCB CCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX+++X+XXXX+XXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+---H----===-=--HH=-HHHHHHH-HHH-HHHHH
+   C           CC  CCCCCBC CBB CBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX++++++XXX++XXX+++++XXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+--HHHH--======---= ---=====---HHHHHH
+  CCCC                        CCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXXXXXXXXXXXXX++XX++++++++XXXXX++
+''''''''''''''''''''''''''''''''''''
+....................................
+-=----H-H-H---HH-==--========-----==
+      C C C   CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXX+X++XX+X++++
+''''''''''''''''''''''''''''''''''''
+....................................
+--HH----HH--------HH--HH=-==--=-===
+  CC    CC        CC  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXX+
+''''''''''''''''''''''''''''''''''''
+....................................
+--HH--HH--H-H--------HHH---H=------=
+  CC  CC  C C        CCC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX
+''''''''''''''''''''''''''''''''''''
+....................................
+===-=-H--HH------HHHH-HH--H-----=--H
+      C  CC      CBCC CC  C        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X+X+XXXXX+++++++XXXXXXXXXXXXXXX+XXX
+''''''''''''''''''''''''''''''''''''
+....................................
+=-=-=-----=======-----H-H-------=--H
+                      C C          C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+XX+++++++++X+++++++XXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+H--HHH-H--=--====== ==-  === =------
+C  CCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XX++XXX+XXXXXXX+X++++++++++X++XXX
+''''''''''''''''''''''''''''''''''''
+....................................
+===--==---=----H--=-======= ==-==-H-
+               C                  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX++XX+XXX++XX+++XXX+XXX+XXX+
+''''''''''''''''''''''''''''''''''''
+....................................
+H-HH-----==--=---==-- ==---=---=---=
+C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX+X+XX++X++++XX+XXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHH--H----=-=--==-====H-=-H---
+BCCBCCCCC  C                C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+H--HHHH-H-HHH--HH-------=-== =======
+C  CCCC C CBB  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''
+....................................
+=====--H--HHH--HH-HHHHHHH---H------=
+       C  CBC  BC CCCCCCB   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++XX++XXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+  ============--==-HH--HH-HHHHHHHHHH
+                   CC  BC CCBCCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++XXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+===== =====  === === === ==H---HHH-H
+                           C   CCB C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+XX+++++++++++++++++++++++++++++X
+''''''''''''''''''''''''''''''''''''
+....................................
+H--=--=====  =======   =    =  ====-
+C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXX+XXX+XX+++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+==-H-HH-=HH-=--============ === =
+   C CC  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++XXXX++++XXXXXXXXXXXX++X++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+-==----= ==-----H----H-==-======  =
+                C    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+++++++++++XXXX+XX+XXXXX+XX
+''''''''''''''''''''''''''''''''''''
+....................................
+HH--HH---====== ====-H--=--=--H--=--
+CC  CC               C        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+XXXXXXXX++++++++++++++XXX+XXX
+''''''''''''''''''''''''''''''''''''
+....................................
+-----H=-HH-HH--=======      =-H-=-HH
+     C  CC CC                 C   CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++X++X+X++XXXXXXX++X+++++++X++
+''''''''''''''''''''''''''''''''''''
+....................................
+-=======-==-=-==-HH-HH-==-=======-==
+                 CC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+X+X+XXXX+++XXXXXXXXXX++XX+
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHH-----=-=-=----===---HH--H--==--=
+CCCC                    CC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXX++X++XX++++X+XXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+==--HHH--HHHHH----- =-==--====-=-H--
+    CCC  CCCCC                   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+XX+++++XXXXXXXXXX+X++X+++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+H-=--=====-HH---HHH-=-==-===========
+C          CC   CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX++X+X+++++XX+XXXXXXX+++
+''''''''''''''''''''''''''''''''''''
+....................................
+-HHHH--H-----==-=-=====--=-------===
+ CCCC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX++++++++X++++XXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+--HH------H--------========-====----
+  CC      C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+XXXXXXXXXXXXXXXX+XX+X+
+''''''''''''''''''''''''''''''''''''
+....................................
+--HH-HH----H-=--------H-------=--=-=
+  CC CC    C          C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+X++X++XX++XXX+XXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHH--=-==-==--==---=-HHH--HH---
+CBCCCBBC                  CCC  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX+XX+X++X+XXX+XXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHH-H-H-=--=-==-=---=--H
+CBCCBBBCCBCCCCC C C                C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X
+''''''''''''''''''''''''''''''''''''
+....................................
+=-H------HH--HHHHHHHHHHHHH------=-=-
+  C      CC  CCCCBBCCCBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+==-=-----------HHHH-HHHHHHHHHHHHHHH-
+               CCBC CCBCBCBCCCCCCCB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++XX++XX+XXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+ =  =============--==--=HHH-HHH--HHH
+                        CCB CCB  BCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+X+++++++++++++++++X+++++X++XXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+-=-=================-=====-==----HHH
+                                 CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+XX++++++++++++++++++++++X+
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHH----=--===    ======== === ==-=
+CCCBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+X+X+++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHH--H-=-=-===  ===== = ==
+CCBBCCCBBBBBC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++X++XXXXXXXXXXXXXXXXXXX+XXXX++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+===-==-HHHHHH--HHHHHHHH-H=----=  = =
+       CCCCCC  BBCCCCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++XX+XX+++XXXXXXXXXXXXXXXXXX+++
+''''''''''''''''''''''''''''''''''''
+....................................
+=======--=-- ==-HHH-H--HHHHHHH---===
+                CCC C  CBCCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+XXXX+++++XXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+----H-----H-- ----== ==HHHHH--HHHHHH
+    C     C            CCCCC  CCBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X+++++X+XXXXXXXXX++++XX+++++XXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+==-=== =-=-----H---====--=====---H-H
+               C                 C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX++++++XXXXXXXXXXXXX+XX++++
+''''''''''''''''''''''''''''''''''''
+....................................
+-H-H-H----======--H--HHH---H-=--= ==
+ C C C            C  CCC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXX+XX+++++XXXX+XXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+=----H--HH------=--  ===----=--H---H
+     C  CC                     B   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++X++X+XX++XXXXXXXXXXXX+XXX++X+XXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+-==-==-=--==------------=--- =-=---H
+                                   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+XXX++++++X+++XXX+XXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+H----H-=---== = =-===---=-HH-HH-----
+C    C                    BC CB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++XXXXXXXXXXXXX++++++++++X++XXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+-==--H-HHH-HHH--====== = =-==--HH-HH
+     C CCC CCC                 CC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXX++X++XXXXXXXX+XXX+++++++++++XX
+''''''''''''''''''''''''''''''''''''
+....................................
+-=----==-==-H------=H--===========--
+            C       C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXX+X++++XX++++++XXX+++++XXX++XX+
+''''''''''''''''''''''''''''''''''''
+....................................
+===HH-=-====H-===  =---=====--H==--=
+   CC       C                 C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++X++++XXXXX+X+++XX++X++++XXX+XXX
+''''''''''''''''''''''''''''''''''''
+....................................
+ ====-====-HH--=-===--= -====-H-=H--
+           CC                 C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++X++++++XXXXX+XX+++X++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+===== === =-======-HHH-=--===-===  =
+                   CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+++XXX++++++++++++X++++XXXXXXXXX+
+''''''''''''''''''''''''''''''''''''
+....................................
+--- ==-H-== = ==== ==-====-HHH-----=
+       C                   CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXX++X+++++++XXX+++++++++++X++++++X
+''''''''''''''''''''''''''''''''''''
+....................................
+=---==-=======HH-=    ===  =-===  =-
+              CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+++++XX+++X++XX++++X++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+----===  --===-==--====H==   ====
+                       C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++X++++XX++++++XX++X++++++++XXX+++
+''''''''''''''''''''''''''''''''''''
+............... ....................
+-===-====--==   =--==-======  -H-=
+                               C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++XX+++XX+++++++X++++X++++
+''''''''''''''''''''''''''''''''''''
+....................... ............
+========== =--== --     ==-====-====
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX+++++X++++XX++++++X++++XX++++++X+
+''''''''''''''''''''''''''''''''''''
+....................................
+=--=====-====--======-= ==--==   =-=
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX++X++X++++XX++++++XX+++XX++++XX+
+''''''''''''''''''''''''''''''''''''
+....................................
+----==-==-====-- =====--===--====-H=
+                                  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+++XXXXX+++++++X+++X+++++
+''''''''''''''''''''''''''''''''''''
+....................................
+H-------H--== -----=  ====-===-=====
+C       C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX++XXXXXX++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HH-----HHHHH---HHHH-==------  == ===
+CC     CCCCC   CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++X+++XXXXXXXXXXXXXXXXXXXX++++X+XXX
+''''''''''''''''''''''''''''''''''''
+....................................
+===-===--H-H----HH------HH-== =-=---
+         C C    CC      CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+XXX+X+++++XXX++++XXXXXX++++XXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+--H-=---=-===  ---====--HH-H====-HH-
+  C                     CC C     CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+XXXXXXXXXXXXX++++++++++XXXXXXXX
+'''''''''''''''''''' '''''''''''''''
+...................  ...............
+----=HHHHHHH---H--=    = ===----HHH-
+     CCCCCCC   C                CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+XXXXXXXXXXXXX+XX++X+++++++XXX
+''''''''''''''''''''''''''''''''''''
+....................................
+------=-HHHH-H--HHH-=--==-==  ===---
+        CCCC C  CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+XXXX++++XXXXXXXX++X++++X++++
+''''''''''''''''''''''''''''''''''''
+....................................
+-H-----=----====------H-==-====-====
+ C                    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+++XX++X+++XX+XXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHH--H-= =--==-===--=--H-HHH-HH-
+CCCCCCC  C                 C CCC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXX+++XXXXXXXXXXX+++++++++++++++XX
+''''''''''''''''''''''''''''''''''''
+....................................
+=H---===--HH-HH----== === ========-H
+ C        CC CC                    C
 )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ +XXXX+++X+X+XX++XXXXXXX++++++++++XX
+ '''''''''''''''''''''''''''''''''''
+ ...................................
+  -H--===-=-=--  -----H-==========--
+   C                  C
  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -XXXXXXXXXXX+++++++++++XXX+XXXX+++
+   '''''''''''''''''''''''''''''''''
+   .................................
+   -HHH-HH----===========---=-H--===
+    CCC CC                    C
   -XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    +XXXXXXXXXXXXXXXX++++++++XX++XXX
+    ''''''''''''''''''''''''''''''''
+    ................................
+    =HH-HH-HHH-------== = ===--==-H-
+     CC CC CCC                    C
     )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     +XXXXXXXXXXXXXXXX+XXXX+++++++XX
+     '''''''''''''''''''''''''''''''
+     .......................... ....
+     =HHH---H-------HH=HHH-===   =--
+      CCB   C       CC CCC
  -   =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      +XXXXXXXXXXX+XXXXXXXX+XXXXXXXX
+      ''''''''''''''''''''''''''''''
+      ..............................
+       HHH-HHH--H-=-H---H--=-HH-----
+       CBC CCC  C   C   C    CC
 -  -  =OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       ++XXXXXXXXXXXXXXXXXXXXXXXXXXX
+       '''''''''''''''''''''''''''''
+        ............................
+        =-------H--HHH---H---H---HHH
+                B  CCC   C   C   CCC
 =--- - -OOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        =+++++++X++XXXXXXXXXXXXX+X+X
+         '''''''''''''''''''''''''''
+         ...........................
+         =======-==----HH-HHH-H-=-=-
+                       CC CCC C
 1+- -    OOOOOOOOOOOOOOOOOOOOOOOOOOO
+         =XXX+++++++X+++++XXXXXXXXXX
+          ''''''''''''''''''''''''''
+          ..........................
+          ---=====  -==== ----HH-H-H
+                              CC C C
 Z+=-     -OOOOOOOOOOOOOOOOOOOOOOOOOO
+          =XXXXXXX++++++++++++++XXXX
+           '''''''''''''''''''''''''
+           .........................
+           -HHH---=======   =  =----
+            CCC
 MX1+--    -OOOOOOOOOOOOOOOOOOOOOOOOO
+           -XXXXXXXXXX++XX++++++++++
+            ''''''''''''''''''''''''
+            ...................... .
+            -HHH-H-H--==--==== ==
+             BCB B C
 OOAZ=-   - -OOOOOOOOOOOOOOOOOOOOOOOO
+=-          +XXXXXXXXXXXXXXX+XXX++++
+             '''''''''''''''''''''''
+             .......................
+             -HHHHHHHHHH-H--=---====
+              BBCCCBCBBC C
 OMMA)=  - -  OOOOOOOOOOOOOOOOOOOOOOO
++            +XXXXXXXXXXXXXXXXXXXXXX
+'             ''''''''''''''''''''''
+              ......................
+              HHHHHHHHHHHHHHHHHH--H-
+              BBCCBBCCBCCCCBCCCC  C
 OOOMM1-   -   OOOOOOOOOOOOOOOOOOOOOO
++==           =XXXXXXXXXXXXXXXXXXXXX
+               '''''''''''''''''''''
+               .....................
+               -HHHHHHHHHHHHHHHHHHHH
+                CCBCCCBCCCCBCBCBCCCC
+                      V
 OOOOMX)---  -  OOOOOOOOOOOOOOOOOOOOO
++=+=           -+XXXXXXXXXXXXXXXXXXX
+'               ''''''''''''''''''''
+                ....................
+                =HHH-HHHHHH---HHHHHH
+                 CCC BBCCCC   CCCBCB
 OOOOOMX=--     -OOOOOOOOOOOOOOOOOOOO
++++++           -+X+XXXXXXXXXXXXXXXX
+'                '''''''''''''''''''
+.                ...................
+                 =-=-----HH---HHHHHH
+                         CC   CCCBBB
 OOOOOOMX=-  ---  MOOOOOOOOOOOOOOOOOO
+++++=-            XXX+X++XX++++++XXX
+''                ''''''''''''''''''
+.                 ..................
+                  ---=-==-H==== =-H-
+                          C       C
 OOOOOOOOZ1- -    -AOOOOOOOOOOOOOOOOO
+++++++--           +XXXXXXXX++++++++
+'' '               '''''''''''''''''
+                   .................
+                   =HH---H--=== ====
+                    CC   B
 OOOOOOOOOA+- -     )OOOOOOOOOOOOOOOO
++++++=---           +XXXXXXXXXX++++X
+'  '                ''''''''''''''''
+                    ................
+                    =HH-HH-H---====-
+                     CC CC C
 OOOOOOOOMMZ)=       -OOOOOOOOOOOOOOO
+++=+=+==             +X+X++XXXX+XXX+
+'' '                 '''''''''''''''
+                     ...............
+                      -=-==----=H--=
+                                C
 OOOOOOOOOOAZ)--      -OOOOOOOOOOOOOO
+++++++++==            +XXXXXXXXXXXX+
+''  '                 ''''''''''''''
+.                     ..............
+                       -HH------HH-=
+                        CC      CC
 OOOOOOOOOOOMZ+-       =OOOOOOOOOOOOO
+++++++++++-            =+XXXXXXXXXXX
+''''''''                ''''''''''''
+.. ..                   ............
+                        =HHHHHH-HH--
+                         CCCCCC CC
 OOOOOOOOOOOOMZ+--      -MOOOOOOOOOOO
+++++++++++=-             +XXXXXXXXXX
+'''''''''                '''''''''''
+.  .. . .                ...........
+                         =--HH--H-HH
+                            CC  C CC
 OOOOOOOOOOOOOOZ+--   -   1OOOOOOOOOO
++++++++++++=--            +XXXXXXX++
+''''''''''                ''''''''''
+..........                ..........
+      =                   =-HHH---==
+                            CCC
 OOOOOOOOOOOOOOM1)---  --  )OOOOOOOOO
++++++++++++++=             +XXXXX+++
+''''''''''''               '''''''''
+............               .........
+    = =  =                 =HHHH-  =
+                            CCCC
 OOOOOOOOOOOOOOMA1+-        =OOOOOOOO
+++++++++++++++              +XXXXXXX
+'''''''''''''               ''''''''
+............                 .......
+=   = ==                     -HHH---
+                              BBC
 OOOOOOOOOOOOOOOO1)=-   --   =OOOOOOO
+++++++++++++++=-             -+XXXXX
+''''''''''''''                ''''''
+.............                 ......
+ = ===== =                    =----H
+                                   C
 OOOOOOOOOOOOOOOOMZ+-  -      -MOOOOO
++++++++++++++++=               +XXXX
+''''''''''''''                 '''''
+..............                 .....
+ ==========                    =H---
+                                C
 OOOOOOOOOOOOOOOOMXZ)--         ZOOOO
+++++++++++++++++                +XXX
+'''''''''''''' '                ''''
+..............                  ....
+== = ===== =                    =HHH
+                                 CCC
 OOOOOOOOOOOOOOOOOOX1=-   - -    )OOO
++++++X+X+++++++++-               +XX
+''''''''''''''''                 '''
+................                 ...
+=====-=-=== =                     HH
+                                  CB
 OOOOOOOOOOOOOOOOOOMZ+-- -   -   -+OO
++++++++++++++++++-                +X
+'''''''''''''''''                 ''
+................                  ..
+============= =                   =H
+                                   C
 OOOOOOOOOOOOOOOOOOOOZ+=--  -     -=O
+++++++++++X++++++---               +
+'''''''''''''''''                  '
+................
+==========-====
 OOOOOOOOOOOOOOOOOOOOX1----    -
++++X++++++++++++++=-
+'''''''''''''''''
+................
+===-======= ==
 OOOOOOOOOOOOOOOOOOOOM1==-
+X++++X+X++++++++++=-
+'''''''''''''''''
+.................
+-====-=-======
 OOOOOOOOOOOOOOOOOOOOOAZ+=-       -
+++++++++X+X++X++++++-
+''''''''''''''''''
+.................
+========-=-==-=
 OOOOOOOOOOOOOOOOOOOOOAA)+-
++X+++++++++X++++++++-
+'''''''''''''''''''
+...................
+=-=========-====
 OOOOOOOOOOOOOOOOOOOOOOMZ)==-  ---
+++++XX+++++++++++++++-
+''''''''''''''''''''
+....................
+====--==========
 OOOOOOOOOOOOOOOOOOOOOOOM1)=- - -
++XX+++X+XX+++++++++++=-
+'''''''''''''''''''''
+.....................
+=--===-=--======= =
 OOOOOOOOOOOOOOOOOOOOOOOOM1)=---    -
+XX+XX++XX++++++++++++++-
+'''''''''''''''''''''
+.....................
+--=--==--==========
 OOOOOOOOOOOOOOOOOOOOOOOOMAZ+---
++X++XX+X+X+++X+++++++++-
+''''''''''''''''''''''
+.....................
+=-==--=-=-===-=== = =
 OOOOOOOOOOOOOOOOOOOOOOOOOMX)+--
++XX+++++X+++++++++++++++-
+'''''''''''''''''''''''
+......................
+=--=====-===========
 OOOOOOOOOOOOOOOOOOOOOOOOOOMX)=--
+++XX++++++++++++++++++++=-
+''''''''''''''''''''''''
+.......................
+==--================ =
 OOOOOOOOOOOOOOOOOOOOOOOOOOMX)==- -
+XX+X++++XX+++++++++++++++=
+''''''''''''''''''''''''
+........................
+--=-====--======= = ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOX1+=--
+XXXX+XX+X+XX++++++++++++++=-
+'''''''''''''''''''''''''
+.........................
+----=--=-=--========= ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOMX1)=---
+XXXX+X+XX++X+X+X++++++++++==
+''''''''''''''''''''''''''
+.........................
+----=-=--==-=-=-= =====
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAZ)=--
+X+XX+X+X++++X+X+++++++++++++
+''''''''''''''''''''''''' '
+.........................
+-=--=-=-====-=-== ====
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)+=-
+XX+++XXX+X+XXXX++++++++++++++-
+'''''''''''''''''''''''''''
+......................... .
+--===---=-=----==========
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ)+-
+XXXXXXXX++X++++++++++++++++++--
+'''''''''''''''''''''''''''''
+...........................
+--------==-=========== ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1+
+XXXXX+XXXXXXXX++++++++++++++++---
+''''''''''''''''''''''''''''
+............................
+-----=--------==== == ===
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM1)
+XX++XX++++++++++++++++++++++++=-
+''''''''''''''''''''''''''''''
+.............................
+--==--=============== = ===
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ
+XXXXXXXXXX++++++++++++++++++++++=
+''''''''''''''''''''''''''''''
+.............................
+----------===================
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAX
+XXXXX+XXXX+XX+XXX+XX++X++++++++=+
+'''''''''''''''''''''''''''''''
+..............................
+-----=----=--=---=--==-====
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM
+XXXXXXXXXX+++XX+++XX++++++++++=++-
+''''''''''''''''''''''''''''''
+..............................
+H--HH-----===--===--=========
+C  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+XXXXXXXXXXX+++++X+++++++++++++++++-
+''''''''''''''''''''''''''''''''
+...............................
+-----------=====-=== =========
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+XXXX+X+X+++++++++++++++++++++--
+''''''''''''''''''''''''''''''''''
+................................
+-H--=----=-=-================
+ C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+++X+++++XX++++++++++++=
+''''''''''''''''''''''''''''''''''
+.................................
+H-----------===-=====--=====  =
+C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''
+..................................
+HHH-H---------====== ========   =
+CCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX++++X++XXX+++++++++++++
+'''''''''''''''''''''''''''''''''''
+..................................
+H---H--------====-==---==== ====
+C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''
+...................................
+H---H----------===============
+C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+X+XXXXXXX+XX+++++X+++++++++++
+''''''''''''''''''''''''''''''''''''
+...................................
+H-----=-=-------=--=====-======
+C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+...................................
+HH-------------=== = ==== == = ===
+CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+XXX++XX+XX+X++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+-HH-HH-=---==--=--=-======== === ===
+ CC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+XX++X++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+H----H---HH-=--==-======= ======= =
+B    C   CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+XXXXXX+++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHH-----------=------===============
+CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX++X+X++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHH--H-H---==-=-================= =
+CBC  C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+XXXX+X+XX+++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HH-H---=----=-=--=========  = == ===
+CC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+XXX++X+X+X+++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHH------=---==-=-=-==============
+CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+X+X+XX+X+++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHH--H=-=-=--=-========= =======
+BCCCCCC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX++X+++X++X+++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+-HHHHHHH-----==-===-==-=============
+ CCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+X++XX+X++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHH--HH=-==--=-=========== ======
+BBCCCC  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHH-H------==============  == === =
+BCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+XXXX+XXX++X+++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHH=----=---==-=====  ==== === =
+CBCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+++XX+++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHH----===--======= == = === == =
+BCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+X+++X+++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHH---=-===-==========  === =
+BBCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+X++++X+++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHH------=-====-====  ====  = =
+BBBCCCCC
+V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+XXX+X+++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHH----=---=-=========== =====
+BBBCCCCCC
+V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+X+X++++X++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHH-----=-=-====- ===== ===  == =
+BBBCBC
+VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHH-H--================== =  ==
+BBBCBC C
+V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+X+++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHH----=-============  =====  =
+BBCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+XXX+++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHH-=---============  =====  ==
+BBBBCCCC
+VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHH---====   ===  =     = =   =
+BBBCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX+XX+++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHH--------=--====  = == === ==
+BBBBBCCC
+VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHH--------===  == =======     =
+BBBBBCC
+VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+XXX+X++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHH-H--=---=-==========  ==== =
+BBBBBCBC C
+ VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+++X++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHH-H-----===-===== ==== ====
+BBBBBBC C
+VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+X++X++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHH-------=-==-====== =  =  ==
+BBBBBBCC
+VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHH------====== = ====  =  ==
+BBBBBBC
+V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+XXX++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHH-HH-=---========= === ==   =
+BBBBBCCC CC
+VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX++X++X+++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHH---H---==-==-==== =
+BBBBBBBC   C
+ V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+XXXX+X+X+++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHH-H-=----=-=-===== == = =
+BBBBBBCCC C
+VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX++XX++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHH------==--=======  == ===
+BBBBBBBCCC
+VVVV V
+ AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+XXX+X+++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHH---=---=-====== ==== ===
+BBBBBBBBCC
+VVVV V
+ A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX+X++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHH-HH-----=-================
+BBBBBBBBBC BC
+VVVVVV
+ A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXX++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+==-HHHHHHHHHHHH-----====== === = ===
+   CBBBBBBCBCCC
+    VVV
 11AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   ==+XXXXXXXXXXXXXXXXXX++++++++++++
+     '''''''''''''''''''''''''''''''
+     ...............................
+      -HHHHHHHH---------=== ==  =
+       CBBBBBCC
 ---=-+1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        -+XXXXXXXXXXXXX+++++++++++++
+         '''''''''''''''''''''''''''
+         ...........................
+         =-HHHHHHHH-H--====== == =
+           CBCCCCCC C
 -   --  --+XOOOOOOOOOOOOOOOOOOOOOOOO
+            ++XXXXXXXXXXX+++++++++++
+            ''''''''''''''''''''''''
+            ........................
+             =HHHH-------==== =====
+              CCCC
 -  -         +OOOOOOOOOOOOOOOOOOOOOO
+              -++XXXXXXXXXX+++++++++
+               '''''''''''''''''''''
+                ....................
+                =H-HHHH----========
+                 C CCCC
 -              --MOOOOOOOOOOOOOOOOOO
+                  ++XXXXXXXXX+++++++
+                   '''''''''''''''''
+                   .................
+                    -HH------=====
+                     CC
 - -               --1OOOOOOOOOOOOOOO
+                     ++XXXXXX+++++++
+                      ''''''''''''''
+                      ..............
+                      =HHH---====  =
+                       CCC
  ----                 -XOOOOOOOOOOOO
+                        +XXXXX++++++
+                        ''''''''''''
+                        ............
+                        =-HHH-====
+                          CCC
 =----                    =MOOOOOOOOO
+                           +XXXX++++
+                           '''''''''
+                           .........
+                            -H--====
+                             C
 )=-------                  -)OOOOOOO
+                             -++XXX+
+                              ''''''
+                              ......
+                              ==---=
 1++==----- -                  -AOOOO
+                                +X++
+                                ''''
+                                ....
+                                =-==
 Z1))))+==-- -- -                -+OO
+                                  ++
+                                   '
+                                   .
+                                   =
 MAAAAX1)+=-=--   -                 =
 OOOMMOAX)1++=--- --
+==-  -
 OOOOMOOMZAZ1)====---  -
+++=- =-
+''
 OOOOOOOMMOMZXZ)++-=+------
++++++=-  -
+''
+..
 OOOOOOOOOOOOAAXA1++==----   --
+++++++====--
+''''''
+.... .
+=
 OOOOOOOOOOOOOOOMMZZ)++==--- -- - --
++++++++++++=---
+''''''  '
+......
+  ==
 OOOOOOOOOOOOOOOOOMXZ1Z1=+=-=-----  -
++++++++++++++=---
+'''''''''''
+.........
+  == =
 OOOOOOOOOOOOOOOOOMMOZZ111)++--=- ---
+++++++++++++++++-  -
+'''''''''''''''
+..........  .
+=====   =
 OOOOOOOOOOOOOOOOOOOOMMXAX11)+=------
+X+X+++++++++++++++==
+''''''''''''''''
+................
+-=-====   ==
 OOOOOOOOOOOOOOOOOOOOOOOOMMMAZ1))+-==
++XX+++++++++++++++++==--
+'''''''''''''''''''
+.................
+=--====== ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXXZ))1
+++++XX+++++++++++++++++==--=-
+'''''''''''''''''' '''
+..................   .
+====--== ======
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXX
+X+X+X+X++++++++++++++++++++++---
+'''''''''''''''''''''''
+................... ...
+-=-=-=-===== ======
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX+X++X++++++++++++++++++++++==----
+''''''''''''''''''''''''''' '
+......................... .
+=--=-==-====== === =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++XX+X+X++X++++++++++++++++++++==+-
+''''''''''''''''''''''''''''''
+..............................
+-==--=-=-==-========       =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+X++XX+++++++++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''
+..................................
+---=-==--============= = ====
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+X++++X+++X+++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+---H--=-====-===-==== = ======   =
+   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+XXX+XXXXX+++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHH=---=-----========== === ===== =
+CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+---H--------================ == ==
+   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+X+++++X+++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+H--H---------=-=====-====== =======
+C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+XX+X+X++++++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+---H---H-----=--=-=-================
+   C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX+++X++X+X++X+++++X++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+-HH-H-H-H--H===-==-=-==-=====-======
+ CC C C C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+X++++X++++++++++++
+''''''''''''''''''''''''''''''''''''
+....................................
+H--H--HH---------=-====-======= ====
+C  C  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX++X+XX+++XXX+++++
+''''''''''''''''''''''''''''''''''''
+....................................
+H-HH-HH--H---------==-=--===---=====
+C CC CC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXX++XX++XX+++X+++
+''''''''''''''''''''''''''''''''''''
+....................................
+-H--HH-H-HH----------==H-==--===-===
+ C  CC C CC            C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXX+XXXX++XXX+X+
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHH-H--H--H---=----==---=-=
+CCCCCBCCCCCC C  C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHH--HHHHH-H----H-H---------=-
+CCCBCCCCC  CCCCC C    C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+XX+
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHH--H-----H---HH--=--=--=
+CBCCBCCCCCCCC  C     C   CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+XXXXXXXXXXXXXXXX+XXXX+
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHH-=-HHHH-----------=----=
+CBCBCCCCCCCC   CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+XXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHH-H-HHHH-----H=--H--=----
+CCCCCBCCCCCC C CCCC     C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+X+X
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHH-HH-H-H----=-----=-=-
+CCCBCCBCCCCCCCC CC C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHH-HHH-HH---H---------=---=
+BCCCCCBCCCC CCC CC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX++XXX+X++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHH-HH-H-H--HHHHH------==---=-==
+CCBBCCC CC C C  CCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHH--HH-HH-HH------=-===
+BCBCCCBCCCCCCCC  CC CC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHH-HHHHHHHH--HH---------
+CBBBCCCCCCCBCC CCCCCCCC  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHH-H--HH--H------
+CCBBCCCCCCCBBCCCCBCCC C  CC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHH-HHH-HHHHHHHHHHH----HH----H--
+CCCCCCC CCC CBCCCCCCCCC    CC    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHH--H-HH----H---
+BBBBCBBCCBBCBCBCCCCBCC  C CC    C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHH--HHH-H-H-HHH
+CBBBBBBCBCCBBCCCBCCCCCC  CCC C C CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHH-HHH-H----HHHH
+BBBBBBBCBBBCCBCCBCCCCC CCC C    CBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHH-HHHHHH-HHH-HHH-H
+CCCCCCBBCBCCCBCCCCB CCCCCC CCC CCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHH
+BBBBBCBBBBBBBBCBBBCCBCC CCCCCCCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH
+BBBBBBBBBBBBBBBBBBCCCCCBCBCC CCCCCBC
+  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBCBBBBBBBCBCBCBCCCCCBCBBB
+       V  V    VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBCCCCBBBBCCBBCBB
+   V V         VV  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBCBBBBBBBBBBBBBBBBBCCCCCBCCCCCBCBB
+        V V     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBCBCBBBBCCBBBBB
+ V V     VVV      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBCBBCBBCBBCBBBBB
+VVV V VV VVVV  VV V V           V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBCBBCBCBBBBBB
+  VVV      VV   VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBCBBBCCBBBBBBBBB
+ V   VVVV  V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBB
+  VV V VV         V              VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBB
+VVVV  V        V  V          VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+V VV V VV   VV  VVV   VVV  VVV V  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''
+....................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+   VV VVVV V      VV  VVV VVVVVV V V































