1
 =11)+=11=+)+1111))+)11)1+)Z))1)))))1)1+))+Z1111Z))+1Z+1)1))11)=+11)))1)1Z11)++)++==11)1111))+))Z)1ZZ11Z11)Z11+Z1))111)
 1Z11111111))))))+++111))))Z+=1))=1))+)1+))1+)11Z1Z1+111)1))11)11111)11)111)))1++Z111)))11111)Z111Z)1)111)11111ZX111Z11
 11Z11)))111)+)+1+==)111))1)1+))))+)))+++=+)++))11)))))))1))+)1)++11))1+1))1)1Z1)1))1)1)1))Z1))1)1111))+1Z1111111Z)1))Z
 ))Z)=+))1)1)+))1+)))+)))=)1)+++)+=)=)))+=+)))++))1)))))+1)+=+11+)))))1)))))1)111))11)+))))11))Z11Z1Z1)Z1ZZZ1111ZZ)1)))
 11)ZZ11))1+))++1=)+)))+)=-=)-=+===-)=1)+)+))+=++)++-+))=++))++))))++)))++)1)))+))1+Z+1)))1)==+))11)111+Z11)Z111+)Z11Z1
 111)+)11))=)1)=++=1+))+)==)=)1==---+)==+)==++++++=++)1+++=)=)))+)-++==1==+)++)+)1)+=)++++++++)))+)11Z1)1Z)))11111))111
 +)1)))+)+1))1++++))+Z+++=+=-=1+=-)++-+))+)))+)++)+++=)+=++)+))+1+)=+)=1+++1))+)+++)=))++)+)))+)+)=)))))1111))1)11)1))1
 ))1))1+))+++)))-)+)=))=+=++=+1=+=+++-+))))+)))==++))+)))==++)==+))++++)+++1)++)))++===))+++1+=+1)))+)+)11))))11)1)1)11
 )+1))+1)=)+-))+))==+1==++=--)=----==+-+=======-=+++=)==+++=))==))))-+)+)))+)=)))=1=)=))--++)==+)+))11++++))))111)))1))
 )+1=-+)+=====+++)-+)==-==--+))+---+=+=====)====+)=+)+)+=++)=)++)+)11)1)))=))))))+)))+++)++))+)))+=))++))1))1111111111+
 ++)=+=++++--=+=+++=+-====-=====--==-=+-+==+-+===)=++=++==+++))+=+))11)1+++)=-=+)))+++=)=)+))+-=)++))=)+)))))1)1)1))))1
 =)=-+))=)=-=+=+)++=+==+=--=---==)==+=++=++==+++++++===++-+===+1+++)+)1))=+)=+=+++1))++)+=)1++=)1)+)1++))1)1))Z11Z=))1)
 ))=1)-++=)+=-=++==+)+===-=-====-=-==-==)1+- ====)======++-++=-=++++=))=++1)++=)+=+++=1=)+)-+)=)+)+)))+111=)))11)))=)))
 )1+)))+=+=-+--+==-=-===+==-====-=-+===+++++=+=-=+==+=-++-=+=))+=++)++))++))))))=-)+)==+)==++)=+)++)))))+)))Z1))11)))1)
 )1+=)++=+-=====-=-===-+==+=+=-==-====-+=+==+=+====+-==+==++==+=+++++)++)+1)++)))===++++)++)=)==)+)))++1+)))+=+++++++)+
 +++=+)===+=+==-+=-=== ---====-==-+=-=-======-==++++-=+-=+++====++))==++)))=+=+)1)==++++==)+=+-++==+))==+)+))++))+))+)+
 +)=-==---=======---==-=---=--==++==-=)=-=--=+=+=---+===-====++-===+=-==+))=++=)1)-==+)))++=====)===))++)+)+)++1)=+=)++
 =+====++===--=--===+=----========---===-=-----===-====+===-==+==+====-++===))))++=++=++--=+++=+)====-=+=+=+=+==+++=+)+
 =)==-+)==--==---=--===---=--=--==-==---------==+===+===-====++==-====-++=+======++==+=+==++)))++=+==+++++===+-==+==+++
 +)-+=+)++===-===--===---===---==-==+==-=+=-==-=+)=++--=-==---=====+-=)++))++=-+=+)+=-+)++=+=-===)+==+==+====-=+=+=====
 =+=+==++-=--=---=-=====-+----=-== -)==-===-======----+=-=======-====++)+==+==)+-=+)=+=+=== =+=+=-++=+===+=-====-+=-=-=
 =-===+++=+==---==--==+-=+=--==---=======-=----=-- -======-===+==--======--)===))++++===-=====++==-+-==-=====-==---+-==
 =--====+=++=--=----==----=----=-=---=======-=---=-===-==-===-+====-====-=-=+===+)=+++-====+=+=+=+==-----===--= ====-==
 ---+-=++---====-=---===--=--+=----=--=====--=----=---=--===--===---==-=-==++=-====-)==-=-==+==+==--+=---===---=--===-=
 +---=)=-=-=+=--=----==-----== ---=- -=-=-=--------===----=======-=+===+=+====+==)+==+===-=)===--+===+===)====+-=-=----
 =====++=++==---=-====---===-==------======-----===+-==-=---==+ ==-)=+====++)))+==+===++-+==-+===-=+======+=-=-++=-==--
 ====---====----=-==-=----=====----=-==-==-=-=-=-====-=-=--=---==+=+==========+=--=--+-===-===+-+ ========-==++===-=--=
 -=---+======--------==-------===--=+--===-=-=-==-==-====-----=+====-=-=-=-=-===+ --====-= ===--=--=====-======-=-==-==
  -=-==-==-=- ---------=-=-==------==-=---=--===---- =--- ===+==-=-=====+=-+=-=+=-==--==---+===-=========-=-=----=-===-
 ===--==+====-=---==---- --=-=-=-==-===--=+----==-======--===+==--===-=====+===++=-===----=--=---==-=====-=+====-=-====
 ++----==-+====------=----==-=---=--=-====--==-===-==--=-----=-=+--=+-==+=+)--=----======-==--==---=---=--==-===--=+-=-
 ++====+-==--==-----=---===-=----==- -==+==-==-=----=---==----======+=-===+=-===---=-----==-=-=-=-====---=+=====+==-=-=
 -=--=-=-= - ---- -  -=----------- --   ---------=------- =--==-------- -- -=-=----- ---------------==-----=-==--=---==
 ==-==-- =--- -- ------- ---  =------ =--- =-===-=-=---=--===---==-==--=--==-------=-------- ----==--=+=-=-+==+=-===---
 -----=--= ------=---- -- - -----= ---=-- ----=-=--==-===------=--=----==-=+-= ------------- -----=-=-==-==--+==- ==-=-
 -=-- =+==----=====--==------ =----=----===--=+===----===-=-=-==+----=-==--+=+--=---==-=--------=-=-====-==---+=-=---==
 -==--=--=-=--  =--=- =---=--==--==-------=---- -+=+-=====-==-====-==--==-=++==----===-------= -===-==+=-=+-===----- --
 +=-----=----==------==--------=---=--=--==---==--=-= -=-=--=-====-=---==-====--=--=-==-=-=======-========-=====--=----
 ===----------------=-===-----=-----==--------------   -------------- --=-=-=-----------------======-==--=-=-=-=--- ---
 +==- -=--- ----- ==--=--=-----= -==--=-=- +====- -=------ ------------===-==== -=-- -----------=+===-=-==-=-==== ---==
 )+=--=---=---=---=-- -==----=== ===--=--+==-- -=--=-----====-----===--==+=-==-=-+=-----=----=====-=-====-=--==--- -=-=
 )==--=----=-------=--==-=======-==-=-   ==-----=---=-=--- ===--=+=--=--=  -----==- -- -=--===-==-----=--==-=--- --- -=
 ++= ---=---- ------- ---------=--=------=- ----------------==---=-=-=-==--===-===-----===----=-=-------===--------- -=
 -==----==--   ----- ---- ------------- -  --- -----   --- -===== --==--=-=====-===-====------------==--=-=--=---=--=-
 =)---=---=1111)+))+=+)+++=--=--= -- ----    ----- -- ---- --=--=- ----- -==---=-----------=-== -=---==---==---    --=-
 )=- - -- 1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXMMAMAXAZ1Z1)))))==)+=)=++===)++===----------- ----==- ----------=----- -
+          +XXXXXX+++++++++++++++++++++=-=--
+          '''''''''''''''''''''    '
+          ...................
+          =HHHHH-==     =
+           BCCCC
 +---=----1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOMOOOOOOMOAMAAMXAZXZ1Z111++)-=+==+==+==== -=
+          +XXXXXXX++++++XXXXXX++++XXXXXXXXXXXXXXXXXXXXXXX++++++++++=---  -- -===-- -
+          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ......... ..............................................
+          =HHHHHH-=  ===------====HHHHHHHHHHHHHHHHHHHHH--=== == =
+           BCBCCC                 BBBBBBBBBBBBBBBBBBBBC
+                                   VVVVVVVVVVVVV VV
+                                    AAAAAA     A
 ==-=--- -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+          +XXXXXXX+++++XXX+XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++X+++XXXXXXX+++++++++++++++++++++++++++++++++++
+          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ..........................................................................................................
+           HHHHH-- ====-H-=-H--==-HHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHH== =-===---HHH-================= ==  = === =  =
+           CBCCB        C   C     CBBBBBBBBBBBBBBBBBBBBBBB CCCCCCCC           CCC
+                                    VVVVVV VVVVVVVVVVVVVV
+                                     AAAA   AAAAA AAAAAAA
 -= ------)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXX+XXX+XXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXX+XXX+++XXXXXXX+XXXX+XXXXX+X+XXXXX++
+          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ...........................................................................................................
+          =HHH-HH=-HH=-HH-===---HHHHHHHHHH--HHHHHHHHHHHHHH-HHH-H--HH---=----HHH-H--=---===------H=----=-----=-=---HH=
+           CCC CC  CC  CC       CCCCCCCCCC  BCCCCCBBBBBBBC CCC C  CC        CCC C               C                 CC
+                                                     VVVV
+                                                       A
 ==----- -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXXXXXX+XXXXX+XXXXX+XXXXX++XXXXXX++XX+X++XXXX+XXXXX+XX+XX++XXXXX+X+++++++++++XX+++X+++++++++X++X+++++XX+
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ...........................................................................................................
+          =-HHHH---HH=-H-H-=-----=-H---==------==--=-==----=-----=--=--==-H---=-===========--===-====== ==-==-== ==H-
+            CCCC   CC  C C         C                                      C                                        B
 ==--- ---)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXX+XXX+X++X++X++X+XXXX++X+++++X+X+X+++++XX+
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ............................................................................................................
+          =HH--HH-HHHHHHHH--HHHH-----------------------=-----HH---HHH---HHHH-=---=-==-==-==-=----==-=====-=-=-==  =H-=
+           CC  CC CCCCCCCC  CCCC                             CC   CCC   CCCC                                       C
 -=----=--1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXXXXXXXXXXXXXXXXXX+XXXX+XXXXXXXX+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++X+XXX+XX++++++++X+XX+++++X+
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ............................................................................................................
+          =H-HHHHH-H--HHH---H---H=---H=--H-----=-------=-H--HHHH-H--------H--HH-----=======-=---=--========-=--== ==-=
+           C CCCCC C  CCC   C   C    C   C               C  CCCC C        C  CC
 ----- - -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXX+X++XX++++++++++++++X+X++++X+++
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ...........................................................................................................
+           HH-HHHH-HHHHHHHHH-H-------H=-------H--=-------HHHHHHHHH----H------H---==----=-==--====== ====== -=-====-==
+           CC CCCC CCCCCCCCC C       C        C          CCCCCCCCC    C      C
 -------- )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXX+XXXXXXXXXX+XXXXXXXXX++X+++++++++++X+++++++++++++X+XXXX++++++
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ...........................................................................................................
+          =HH-HHH---HH--HH-HH---------==-H--------H------=H-H-H-----=---------==-===========-=============-=----=====
+           CC CCC   CC  CC CC            C        C       C C C
 ---- --- 1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXX+XXX++XXXX+XX+XXXXXXX+XXXXXXXXXXX+XXXX++++++++++XX++XX+++X++X+XX+XX+++XX++
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ............................................................................................................
+          =HHH-HH-----HH----H------=-H------=---==----=--=--H----=-H-------H-=----==========--==--===-==-=--=--===-H==
+           CCC CC     CC    C        C                      C      C       C                                       C
 =- ---   1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXXXX+XXXXXXXXXXXX++XX++XXXXXXX+XX+++XXXXXXXX+++++++X++++++XXXXXXXX++++++++++++++++X+++X+++++++++++XX++X
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ............................................................................................................
+          =HHH-HH--=--------H---==--==-------=--===--------=======-====  --------================-===-====== ====-H==-
+           BCC CC           C                                                                                     C
 =--  - --ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=- =-=++++=++++X++++++++XXX+++XXX++X+XX+++++++++XX++++X++XX
+          '''''''''''''''''''''''''''''''''''''''''''''''''      ''''    '''     '''''''''''''''''''''''''''''''''''''
+          .................................................       ..     ...     .....................................
+          =HH-HHHHHHHH----=-HH-H-------H---------H--------=       =       -      ==---===---==-=--=========--== =-= -H
+           CC CCCCCCCC      CC C       C         C                                                                   B
 =-- --  -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXXX+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+=---  =+++==-=++=---- +++++++++++XXX++X+++++++++X++++XX+++X
+          '''''''''''''''''''''''''''''''''''''''''''''''''       ''     ''      '''''''''''''''''''''''''''''''''''''
+          .................................................       ..     ..      .....................................
+          =HHH----=--=--H--H-H---HH---H--H---HH----H------        =               ==== =====---==-=========-====-- ==-
+           CCC          C  C C   CC   C  C   CC    C
 ------   ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          XXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXX+XXXX+----- +++==-=-++=-- --++++++++++++XX+++X++++++++++++++X++++
+          '''''''''''''''''''''''''''''''''''''''''''''''''       '      ''      '''''''''''''''''''''''''''''''''''''
+          .................................................       .       .      .....................................
+          --HHHHHHHH---HH---------HH=H----HH------HH-=----=                       ===========--===-=== ======== =-====
+            CCCCCCCC   CC         CC C    CC      CC
 -- ----- ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOMOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX+X+X+XX++X+  --- ++=-=---++=--- -++X++++XXX+++X+++XX+X++++++XXX++++++X
+          '''''''''''''''''''''''''''''''''''''''''''''''''       '      ''      '''''''''''''''''''''''''''''''''''''
+          .................................................       .       .      .....................................
+          -HHHH---HH----H------------=----HH----=-=-=--==-                       ==-====---===-===--=-==== =--H = =  -
+           CBCC   CC    C                 CC                                                                  C
          1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXAXMMOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXXXXXXX+XXXXXXXXX+XXXXXXXXX+XX+++X+++++X+++++      =++-----++-- ---+++++++++++++++++++X+++++++XXX+=+++++
+          '''''''''''''''''''''''''''''''''''''''''''''''''       '      ''      ''''''''''''''''''''''''''''''' ''  '
+          ................................................        .              ............................... ..  .
+          =---------H=---------=---------=--===-=====-====                        ==================-===  ==HHH= =   =
+                    C                                                                                       CBC
   -------1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMMOOOOOOOOOOOMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOO
+          +XXXXXXXXXXXXXXXXXXXXX+XXXXXXX+XXXXXX++X++X++X+X+ --  -+++===--++ --- -++++++++++X++X+X+++++++++++++X+- ++-+
+          '''''''''''''''''''''''''''''''''''''''''''''''''       ''     ''      '''''''''''''''''''''''''''''''  '' '
+          .................................................       .      ..      ....................... .......   . .
+          =HHHH-HHHHH-HH-H---H--=-------=------==-==-==-=-        =              ==========-==-=-======    = =-=     =
+           CCCC CCCCC CC C   C
 ---- --  1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXXX+XXXXXXXXXXXXXXXXXXXXXXX+X+++++XXXXXXXXXXX+----  +X+-----++=---  +X++++X+XXXXXX+XXX++++++++++++++--+-=
+          '''''''''''''''''''''''''''''''''''''''''''''''''       ''     ''      '''''''''''''''''''''''  '''''''
+          .................................................       .      ..      ......................     .  .
+          =HHHHH=-HHHHHHH--HHHH--H--H---=-=====----HHHHHHH        H       =      =-====-=------=---====
+           CCCCC  CCCCCCC  CCCC  C  C              CCCBCBB        C
+                                                         V
 -- -  -- 1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMMMOOOOMOOMOOMMMMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXX+--+XXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXX+-     +X+- -- ++     -+X+++++++XX+XXXXX+++++=+=--==-=+-====
+          ''''''  '''''''''''''''''''''''''''''''''''''''''       ''     ''      ''''''''''''''''''''''
+          ......  .........................................       .      ..      ....................
+          =HHHH=  =-HHH---------HHH--HH-==== =--H-HHHHHHHH=       -      =       =H==  ===--=-----===
+           CBCC     CCC         CCC  CC         C CBBBBBBB                        C
+                                                   VV VVVV
+                                                       A
  -     - +OOOOOOZ11MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOMOOOOMOAOOOOOOOOOOOOOOOOOOOOOOOOMOM)1MMOMMOOOO
+          +XXX++    ++XXX+X+XX++XXX+X+++++=+++++XX+XXX++XX+---  -+X+---- ++-- - -+XXX+X+X++X+X+++++++++= -     -  -=++
+          ''''''    '''''''''''''''''''''   '''''''''''''''      '''     ''      '''''''''''''''''''''              ''
+          ......    ....................     ..............       .      ..      ....................                .
+          =HH-==     =---=-=--==---=-=         =--=---==--=       -       =      =HHH=-=-==-=-= =  ==
+           BC                                                                     BBC
+                                                                                  VV
 ------  -1OOOOOOA1XZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMOMOOOOOOAOOOMMOMMOOOOOOOOOOOOOOOOOOOOOOOOMOOO11ZMOOOOOO
+          XXXX++      +++XXXXXXX+XXXXX+++++++++XX+XXXXXXXX+  - - +X+--- -++  -  -+XXXXXX+++X+++++++++--- ---    =---++
+          ''''''       ''''''''''''''''''''''''''''''''''''       ''     ''      ''''''''''''''                      '
+          ......       .................. .................       .      ..      ..............
+          -HH-=        ==-H-H---=H--H-==   = ==--=------HH=       H      ==      =HHHHH-===-===
+           BB             C C    C  C                   CB        C               BBBBC
+                                                                                  VVVV
+                                                                                   AA
 -- ----  )OOOOOOMZZX1)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAAAOOOMMOOOOOMMMMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOO11-XOAMOO
+          XXXXX+       -++++++XXXXXXX++++++XXXXXXXXXXXXXX++      +X+  ---++      +XXXXXXX+++++++++++++++++++-    -  =+
+          ''''''        '''''''''''''''''''''''''''''''''''       '      ''      ''''''''''''   ' ''' ''''''         '
+          ......         .................................        .      ..      ...........       .    ....
+          -HH--=          ====---H---======-H-HHHH-HHHHH-=        -       =      =HHHHHH-===              ==
+           BB                    C          C BBBC BCCCC                          BBBBBB
+                                                                                  VVVVV
+                                                                                   A A
  --  -- -1OOOOOOOZZZZZZXAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMOOOOOOOOOOMMMMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO) =1XAOM
+          XXXXX+-          -==+++XXX++++=+++XXXXXXXXX+XXX++-     ++=----=++      +XXXXXXX+++++++++++++++XXX++-      -
+          ''''''               '''''''    ''''''''''''''''        '      ''      ''''''''''   '''''''''''''''
+          ......               .......    ................        .      ..      ..........    ...... .......
+          -HHHH=                =---=      =--HH-----=-H-=        =      =       =HHHHHH-=      = =    =-H-=
+           BBCC                               CC       C                          BBBBBB                 C
+                                                                                   VVVVV
 --   --- 1OOOOOOOXXZAZXZ1X)ZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOMOMOOOOMMAXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-)ZAM
+          XXXXX+-            =+XXXXXX++++++X++++++++++XXXX+  ----=++- - -++-     +XXXXXX+++=+++++++++--+++++++++
+          ''''''              ''''''''''  '''''''''''''''''       ''     '       '''''''''  '''''''    ''''''''
+          ......              .........   .......  .......        .      .       .........  .......     .......
+          -HHHH=              =--HH--=     H  ==    ==HHH-        =               HHHHHH=     == ==      === ==
+           BBCB                  CC        C          CCC                         BBBBBB
+                                                                                   VVVV
+                                                                                   AA A
 -- --- - 1OOOOOOMZZXZXXAAAXXAMOOOOOOOOOOOOOOOOOOMMMOOOOOOOOMOOMOMOOOOOOOOOOOOMMOAOOOOOOOOOOOOOOOOOOMXMOOOOOOOOOOO1==11
+          +X++X+              +++XXXXX++++++=+X-   ==+++XX+ -- - +++==--=++--  - +XXXXXX++++++++++=   -++++++++++
+          ''''''               ''''''''''''' ''      ''''''       '      '       '''''''''''''''''      '''''''''
+          ......               .........  .. ..       .....       .               .......  ......       ........
+          =H==-                ==--H--==     =-         --=       =               -HHHHH=     ==             =
+           B                       C                                               BBBBB
+           V                                                                        VVV
 -- -   --1OOOOOOMAAAZXAZAZAZXXZMOOOOOOOOOOOOOOO11ZMMOOOOOOOMMMMOOOOOOMMOOOOOMMOMMOOOOOOOOOOOOOOOOOMZZMOOOOOOOOOOOOZZ1X
+          +XXXXX                =+++XXX++++++++     -=++XX+    --=+=-  --==-  -  ++XXXXX++++++++--    =+++++++++==
+          ''''''                 '''''''''' ''        '''''       '              ''''''''''''''        '''''''''
+          ......                 ........   ..         ....       .              .........  ...         ........
+          =H-HH-                  ==-H-==    =         =--        =               =-HHHH=                 =====
+           B BB                      C                                              BBBB
 ---- -  -)OOOOOOOAXAXMMXAXXAZXXZ1XOOOOOOOOOOOOOMOOOOOOOOOOOOOMOOOOOOOOMOOOOOOMMMMOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOMZ
+          +XXXXX-                 ++XXXXX++++++ -+++XXXXXX+-- ---+++-= --+=--    +++XXXXX+++++++=--  =++++++++++++--
+          ''''''                   '''''''''''   ''''''''''       '              '''''''''''''''      '''''''''''
+          ......                   ...........    .........       .               ..............       ..........
+          =-HHH-                    --HH-=  ==     =--HHHH=       =                =HHHH-=  ===        = ========
+            CCB                       CC              CBBB                          CBBC
+              V                                                                      VV
 -- - -- -)OOOOOOMXMMMMOOOAMZ1AXA11XAOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOMOOOOOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOX
+          ++XXX+      -=-           -++XXXX+++++XXXXXXXXXX+=--- -++= ==--++--   -=++XXXX+++++XX++++++++++++++++++=- -
+          ''''''                     ''''''''''''''''''''''       '      '         '''''''''''''''  '''''''''''''
+          ......                     ........ .............       .                ...............  .............
+          ==---                      ==H---=   =HHHHHHHHHH                         =-HHH=== =--=         ==   ==
+                                       C        BBBBBBCBBC                           BBC
+                                                                                     VV
+                                                                                      A
 ---  -  -1OOOOOOMZXZXAMOOOOMAAZZXXXZXMOOOOOOOOOOOOOOOOOOOOOMMOOMOOOOMOMMOOOOMMMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+          +X++++       +++-           ++XXXXXX++++===+++++=  -- --+- -  -==-    -=++XXXXX+++++X++++++++++++++++++=+++
+          ''''''       ''             '''''''''''     ''''                        '''''''''''''''''''''''''''''''  '
+          ......       ..              ..........       ..                         ....... ......................
+          =- ==                         -HHH-- =                                    -HHH-   ==-====   = =     ==
+                                         CCC                                         BBC
+                                                                                     VV
 - - --   1OOOOOOOZXAAXOOOOOOOMXXXXZXZAXMOOOOOOOOMMAMOOOOOOOOMMOMOOOOOOMOOOOMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          XXXXX+-     -++++++           ++X+++--    -=-+++=-  - -++--- --++   - -+++XXXX++++++XXXXXXXX+++++++XX++++++-
+          ''''''       '''''             ''''           ''        '      ''      ''''''''''''''''''''''''''''''''''''
+          ......       .....             ....                     .      ..       ......... ........................
+          -HHHH=       =====             =-==                     =      ==        =HHHH==   =--HH-H--==   ==--=   =
+           CCCB                                                                     CBBC        CC C
+                                                                                     VV
    ---   ZOOOOOOMZMAMXOOOOOOOOOOAZXAAAXAAOOOOOOOOOOOOOOOOOOOMMMMOOOOOOMOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXX+      =X++++X++-         -+++XXX+X+++++++++-    -+X+-- --++- ----+++XXXXX+++++XXXXXXXX++++++XXXX+++++=
+          ''''''       '' '''''            ''''''''''''''''      ''      ''      ''''''''''''''''''''''''''''''''''''
+          ......       .. ....             ...............        .      ..       ...................................
+          =HHHH=       -=  =-=             ==---=-=  =====        -      =         =HHHH-=  ==HHHHHHH-     =-HH-====
+           BCCB                                                                     BBBC      CBBBBCC        CC
+                                                                                     VV
+                                                                                     AA
 =  - -  -ZOOOOOOMXZXAMOOOOMOOOOOOOAAXXXXXZXMOOOOOOOOOOOOOOOAMOMOMOOOOOOMOOOMAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+          XXXXX+      =++- -++X++-          ++XXXXXX++++XX+  - - ++=--- -++      ++XXXXX++++++XXXXXXX+++++++XXX++++++
+          ''''''       ''   '''''            ''''''''''''''      ''      ''      ''''''''''''''''''''''''''''''''''''
+          ......       ..    ...             ..............       .      ..      .......... ........... .............
+          -HHHH=       =     =-=             =HHHH--====-H        =               =-HHHH==   =HHHHHH-=    ==---==  ==
+           BBBC                               CCCC       C                          BBBC      CBBBBC
+                                                                                    VVV
 -------- XOOOOOOMAXMXMOOOOOOOOOOOOOMMAXZAAXXAMOOOOOOOOOOOOOOOMMOMOOOOMOOOOOOOMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          XXXXX+      =X+==--=++X++           ++XXXXXXX+XX+--  - ++== --=++-- -  +XXXXXXXXX++++XXXXXX+++++++XXXX+++++=
+          ''''''       ''     ''''             '''''''''''       ''      ''      ''''''''''''''''''''''''''''''''''''
+          ......       ..      ...             ...........        .      ..      ........... .......................
+          -HHHH=       -       =-              =-HHHH--=--                       =-HHHHHH--=  =HHHHH-== ====--HH==
+           BBBB                                  CCCC                              BBBBBC      CBBBC          CC
+                                                                                   VVVVV
+                                                                                    AAA
 --- ---- XOOOOOOMAAMXXOOOOOOOOOOOOOOOOAXXAXXXXAMOOOOOOOOOOOMOOOMMOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          +XXXX+      =X+===---=++X++-          =++XXX+++++ ---  ++=-==-=++--=-  +XXXXXXXXX++=+++XXXX+++++X++XXX+++++-
+          ''''''       ''       '''''            ''''''''''      ''      ''      ''''''''''''  ''''''''''''''''''''''
+          ......       ..        ...             .........        .      ..      ...........   ......................
+          =HHHH=       H=         -               =-H-====        =      ==      =HHHHHH---=    =HH--===  -==---== =
+           BBBB        C                            C                             BBBBBB         CC
+                                                                                   VVVVV
+                                                                                   AAAAA
 ---- ----XOOOOOOMXAM1XOOOOOOOOMOOOOOOOOOXAAAAAAZXMOOOOOOOOOMOMMMMOOOOOOOOOOMOOMMMOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOO
+          XXXXX+      =X+==--- ---++X++-          -++X+++++ -    ++=-=--+++ --   XXXXXXXXXXX+- -+++XX+++++X++XXX+++++-
+          ''''''       ''          ''''            ''''''''      ''      ''      ''''''''''''   '''''''''''''''''''''
+          ......       ..          ....             ......       ..      ..      ............   .....................
+          -HHH-        -            -=              =-====        =      =       -HHHHHHH---=    ==--=== =-==---=====
+           BBC                                                                    BBBBBBC
+                                                                                  VVVVVV
+                                                                                  AAAAAA
   =-  -- ZOOOOOOMXAXXAOOOOOOMOOOOOOOOOOOOMXXAXAXAZX1MOOOOOOMOOOMOOOOOOOOOOOOMMOMOOOOOOOOOOOOOOZZOOOOOOOOOOOOOOOOOOOOOO
+          XXXX++      =++=== -------++X++            ++++++ --- -+X=--===++-  - -XXXXXXXX++X+=  -++++++++++++XXX+++++=
+          ''''''       ''            ''''            '''''       ''      ''      ''''''''''''    ''''''''''''''''''''
+          ......       ..            ....             ....       ..      ..      ............     ............... ...
+          -HHH=        =             =-=              ====        -      =       HHHHHHHH==-=     ===========H--=
+           BBC                                                                   CBBBBBBB                    C
+                                                                                  VVVVVV
+                                                                                  AAAAA
 --   --- XOOOOOOOMMMMAOOOOMMOOMOOOMMMOOOOOOAMXXAAAZXZXMOOOOOOOMOMOOOOOOOOOOMOOOMOOOOOOOOOOOOOOMZMOOOOOOOOOOOOOOOOOOOO1
+          XXXXX+-     -++=  -- =--   -++++=            -=+==-- - ++=----=++ --- =XXXXXXXXX++++   -=+++++++++XXX+++++-
+          ''''''       ''              '''                       ''      ''      '''''''''''''     '''''''''''''''''
+          ......       ..              ...                        .      .       ............      ..............
+          -HH-H                        ===                               =       HHHHHHHH-===        ===   =-H-=
+           BB C                                                                  BBBBBBBB                    C
+                                                                                  VVVVVV
+                                                                                  AAAAAA
 ---- ----ZOOOOOOMMMAMXOOOOOOOOMOOMMMOMOOOOMAAAXAXZZXXXAAAMOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOAXMOOOOOOOOOOOOOOOOOM1+
+          XXXXX+      =++==--= --   - ++++                -------=+==- -=++------XXXXXXXX+X+++-   -++++++++++X+++-=
+          ''''''       ''              ''                         '      '       '''''''''''''      ''''''''''''
+          ......       ..               .                         .      .       ............       ............
+          -HHHH=       ==                                                        HHHHHHHH=-=         =====  =H=
+           BBBC                                                                  CBBBBBBB                    C
+                                                                                  VVVVVV
+                                                                                  AA AA
 ------=--ZOOOOOOAMMXMAOOOOOOOOMOMMOOOOOOAAAAXXMZXZ1XMOOOOOMMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1XAOOOOOOOOOOOOOZZ)=-=
+          XXXXX+      =++=---= -  -==++=             -=-=-  --- -=+-=-=-=++------XXXXXXXXXX+++--   ++++++++++X+=
+          ''''''       ''            ''                           '      '       '''''''''''''      '''''''''''
+          ......       ..                                                .       ............       ...........
+          HHHHH        =                                                         HHHHHHHH--=           ======-
+          CBBCC                                                                  CBBBBBBB
+            V                                                                     VVVVVV
+                                                                                  A    A
 --- - -- 1OOOOOOMXAAXXOOOMOOMMMOOOOOOOZZZAZZAXX1Z)OOOOOOOOMOOMOMMOOOOOOOOOOMMOMAOOOOOOOOOOOOOOOOX)MOOOOOOOOOOOOMMMZ+--
+          +XXXX+      =++ --   --=-=++            -+XX++++ -- -  ++-----=++  -  -XXXXXXXX+X++++-   ++++++++++++
+          ''''''       ''           '              '''''''        '      ''      ''''''''''''''     ''''''''''
+          ......       ..           .              ......         .      ..      ............       ..........
+          =HH--=       =            =               --=                  =       HHHHHHHH=-=          = = == =
+           BB                                                                    CBBCCBBC
+                                                                                  V   V
 - -----  1OOOOOOMZMAZAOOOOOOOMOOOOOOOOOMMXMAAZZMOOOOOOOOOOOOMOOOOOOOMOOOOOOOMOOMMOOOOOOOOOOOOOOOX1OOOOOOOOOOOOOMMMA))+
+          +XXXX+      -X+---- ------++=         =+XXXXXXXX+- ----++- ---=++- --  XXXXXXXXXX++++=  -+++++++++++=
+          ''''''       ''           ''           ''''''''''      ''      ''      ''''''''''''''    '''''''''''
+          ......       ..           ..           ..........       .      ..      ..............    ...........
+          =HHHH=       -             =           =-HHHHHH-               =       HHHH-HHH--===           ===
+           BBBB                                    CBCBBB                        CBBC BBB
+            V V                                                                   V
 ----==-  ZOOOOOOO1MXAXOOOOOOOOOOOOOOOOOOAXXAAXMOOOOOOOOOOOOOMMOMOOOOOOOMOOOMOOMMOOOOOOOOOOOOOOOM)1MOOOOOOOOOOOMZ)+=))1
+          XXXXX+-     +X+-------=---=++-       +++XXXXX++X+-  - -++=--- -++ --  -XXXXXXXXXXX+++    +++++++++++
+          ''''''       ''            ''        ''''''''''''      ''      ''      '''''''''''''     '''''''''''
+          ......       ..            ..        ...........       ..      .       .............     ..........
+          -HHHH=       -=            =          ==-HH-H==-        =              HHH---HH---=       ==   ===
+           BBBB                                    CC C                          CBB   CC
+              V                                                                   V
  --=---- 1OOOOOOMXAZXZOOOOOOOOOOOOOOOOOOAZXAXZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMOOOOOOOOOOOOOOOX)ZOOOOOOOOOOOOMZXMMOMO
+          XXXXXX      +X+=-++++------+++       +++++XX+++++-=----++====-=++- -  -XXXXXXXXXXX++-   -+++++++++++     - =
+          ''''''       ''   ''       '''        ''''''''''       ''      ''      '''''''''''''     '''''''''''
+          ......       ..   ..        ..          ........       ..      .       .............     ..........
+          -HHHH-       -     =        =            =--===                =       -HHHH-HHHHH=       ==
+           BBBB                                                                   BBCC CCCCC
+           VV V                                                                   VV
 = --=- --XOOOOOOMXAXZXOOOOOOOOOOOOOOOOOOMZZXXZXXMOOOOOOOOOOMOOOMOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOMZ)ZOOOOOOOOOOOOZXAOOOOO
+          XXXXX+      =++++++++------=++         -+XXX+XX++ --- -++-----=++---- =XXXXXXXXXXX++    =+++++++++++   -++++
+          ''''''       ''''''''       ''          '''''''''      ''      '       '''''''''''''     ''''  ''''     '''
+          ......       .. .. ..       ..          ........       .       .       ............      ....   ..       ..
+          -HHHH=       =     ==        =          =---=-H=                       HHHHH--HHH-=       ==
+           BBBC                                         B                        CBBBC  CCB
+           V                                                                      VVV
+                                                                                  A
 ------ - AOOOOOOMXXAZXOOOOOAMOOOOOMOOMOOOOXXXXMZXOOOOOOOOOOOMOOOOOOOOOOOOOOOMMOAOOOOOOOOOOOOOOM1ZAOOOOOOOOOOOOXZXOOOOO
+          XXXXX+      =+++-  +++-- -- =++-       -++++XXX++- ----==-----=++-  - =XXXXXXXXXXX++    -++++=--+++-   =+++=
+          ''''''       '''    ''       ''         '''''''''              ''      '''''''''''''     ''''    ''     '''
+          ......       ..     ..       ..         ........               .       ............      ...            ...
+          -HHHH=       ==      =        =          = =--H=               =       HHHHHHHHHHH=                      =
+           BBCC                                         C                        CBBBBCCCBBC
+                                                                                  VVV    V
+                                                                                    A
 ------ --XOOOOOOMAAXZZOOMXXXXAOOOOOMMOMOOOAXZXXXAOOOOOOOOOOMOMMOOOOOOOOOOOOMOMMMOOOOOOOOOOOOOOMZAOOOOOOOOOOOOOA1XOOOOO
+          +XXXX+      -=      +++--  - +++       ++++++X+++ -  ---=---===++ -   =XXXXXXXXXXX++   -++++==--+++-   =+++=
+          ''''''              ''        '        '''''''''               ''      ''''''''''''      ''             '''
+          ......               .        .         ........               .       ............                      .
+          =HHHH=               =        =         =====-=                        -HHHHHHHHHH                       =
+           CCCB                                                                   BBBBCCCBBC
+                                                                                   VV
+                                                                                   A
 - - -- =-XOOOOOOMXAXXZAZZZXAAXMOOOOOOMMOOOOAZMAZXOOOOOOOOOOOMOMOOOOOOOOOOOOMOOMOOOOOOOOOOOOOOOAZMOOOOOOOOOOOOOAXMOOOOO
+          XXXXX+               +++---  -++-      -XXXXXXX++- - --++===--=++ -- -=XXXXXXXXXXX+=   -=++++=-=++=-   =++++
+          ''''''               ''       ''        ''''''''       ''      '       ''''''''''''      ''     ''      '''
+          ......               ..        .        ........       ..      .       ............       .             ..
+          -HHHH=                =                 -HH-H--=        =      =       -HHHHHH-HH-=
+           CCBC                                    CB C                           BBBBBC BC
+                                                                                   VVVV
 ---- ----MOOOOOOMAAMXAAX1XXXAAXOOOOMMMOOOOOMXAAXZXOOOOOOOOOMOMMMOOOOOOOOOOOMOMMMOOOOOOOOOOOOOOZZMMOOOOOOMOOOOMAMOOOOOO
+          XXXXX+               -++-   ---+=       ++++++++= -   -++=====+X+ -   +XXXXXXXXXXX++    ++++== ==+=   -+++++
+          ''''''                ''       '        ''''''''       ''      '       ''''''''''''     ''''           '''''
+          ......                .                  .......        .      .       ............      ..             .  .
+          -HHHH=                                   ======                -       HHHHHHHHHH-=
+           BCBB                                                                  BBBBBBBBBB
+                                                                                  VVVVV
+                                                                                  A  A
 ----     OOOOOOOM1AZXAXAZZXZ1XXAMOOOMOMOOOOOMXAAAXXOOOOOOOOOMOOOMOOOOOOOOOOMOMMMOOOOOOOOOOOOOOAAMMOOOOOOOOOOOAA1OOOOOO
+         -XXXXX+                 ++- - --=++       ++X+X++=- --- ++=----+++ -   +XXXXXXXXXXXX+    =++++=-=++-   -+++++
+          ''''''                 ''       '        '''''''               '       '''''''''''''     '''           '''''
+          ......                 .        .         ......               .       ............       .              ...
+          -HHHH                                     =-=-=                =       HHHHHHHHHHH-
+           CBBB                                                                  BBBBBBCCBCC
+                                                                                  VVVVV
+                                                                                  AAAAA
 ----- ---OOOOOOOAZXXZAAZXZAXZXXZXOOOOOMOMOOOOXXXXXZOOOOOOOOMMMMMMOOOOOOOOOOOMMOMOOOOOOOOOOOOOOOMMMOOOOOOMOOOOX1ZOOOOOO
+         -XXXXX+                 +++-- - -++=      -+XXXX+=      =+==---+X+-  - +XXXXXXXXXXXX+-   =+++=- -+=-   -+++++
+          ''''''                 ''       ''        ''''''        '      ''     ''''''''''''''     '''            '''
+          ......                 ..        .        ......               .       .............                    ...
+          HHHHH=                                    =-H--=               H       HHHHHHHHHHHH                      =
+          CBBBB                                       C                  C       BBBBBBBCBBBC
+                                                                                  VVVV
+                                                                                  AAAA
 -  --- --MOOOOOOMXAXZXXAMOOMXXZ1XOOOOOMOMOOOOOXXAMXZOOOOOOOOMOMMOOOOOOOMOOOMOMMAOOOOOOOOOOOOOOOOMMOOOOMOOOOOMZ1MOOOOOO
+          XXXXX+         +=      -++=- - --++-      =++XXX=- -  -++=--- +X+ -   +XXXXXXXXXXXX++-  =+++ --=+=    =+++++
+          ''''''                  ''       ''        '''''        '     '''      '''''''''''''     ''            ''''
+          ......                  ..       ..        .....               .       .............                   ....
+          HHHHH=                  =         =        ==---               -       HHHHHH--HHHH=                    ==
+          CBBBB                                                                  BBBBBB  BBBC
+                                                                                  VVVV
+                                                                                  AAAA
 ---  - --MOOOOOOA1Z1ZXAOOOOOX11AXAOOOOOMMOOOOOMXAXAXZOOOOOOMMMAAMOOOOOMOOOOOMOOMOOOOOOOOOOOOOOOOMMOOOOMMOMOOX)1OOOOOOM
+          XXXXX+       +XX+-      +++--  --=++       ++XXX=      ++=-- -+X=- -- +XXXXXXXXXXXX++-  -==-  - +-   =+++++
+          ''''''       ''''        ''       ''        ''''       ''     ''      '''''''''''''''                 ''''
+          ......        ...        ..       ..        ....        .      .       ..............                  ...
+          -HHHH=        -H=        =                  =-H-               -       HHHHH--HHHHH=                   ===
+           BBBC          C                              C                        BBBBB  CBBCC
+           V                                                                     VVVV
+                                                                                  AA
  - - ----XOOOOOOXXAMOOOOOOOOMZAZZXXOOOOOMMOOOOOXXXXZZOOOOOOMOOOMMOOOOOOOOOOMOOMMOOOOOOOOOOOOOOOOOOOOOOAMMOOOMOOOOOOOMX
+          XXXXX+    -++XXXX+       +++--  --=++      -+XXX+ ---  ++=--===++ --  +XXXXXXXXXXXXX+=--===-   ==- -+++++=
+          ''''''     '''''''       ''        '        ''''       ''      '       ''''''''''''''                ''''
+          ......      ......        .        .        ....       ..      .       ..............                ....
+          -HHHH       =HHHH         =                  -HH               =       HHHHH--HHHHH-=                 ==
+           BBBB        CBBC                             BC                       CBBBB  CCCCC
+                                                                                  VV
 ---   ---XOOOOOOXOOOOOOOOOOOOX1ZZ1ZMOOOOOOOMOOOOXXXZZXOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOAAMOOMZMOOOOOOMM1
+          +XXXX+ -++XXXXXXXX+       ++=---- -++-      =+XX+------++----=+++-- --+XXXXXXXXXXXXXX++==+-   --   +++X++
+          ''''''   '''''''''         '       ''        '''       ''      '       '''''''''''''''             '''''
+          ......   .........         .       ..        ...       ..      .       ...............             .....
+          =HHHH=   =HHHHHHH-                           =--                       HHHHHHHHHHHHH-               ==-=
+           BBBB     CBBBBCC                                                      BBBBBCCCBBBCC
+            V                                                                     VVV
+                                                                                   A
 --  ---- ZOOOOOOOOOOOOOOOOOOOOZ1XZXXOOOOOOMMOOOOOMZXXXXOOOOMMOMOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOXXOMA1)OOOOOAXMA1
+          +XXXX+++XXXXXXXXX++-      -++---  -=++-      =++-  - --++=--==+++--  -+XXXXXXXXXXXXXX++==--  -    -++++
+          '''''''''''''''''''        ''       ''        '        ''     '''      ''''''''''''''''            ''''
+          ...................        ..       ..                 ..      .       ...............             ...
+           HHHH= =HHHHHHHHH=          =                          =       =       -HHHHH--HHH---=              ==
+           CBBB   CBBBCCCCC                                                       BBBBC  CCC
+            VV                                                                     VVV
 - - --   )OOOOOOOOOOOOOOOOOOOOM)11Z1XOOOOOMMOOOOOAXXXXZZXOOMMOMMMOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOAZAAX)=1OOOMMXAAX1
+          ++XXXXXXXXXXXXX+XXX+       +++--  --++=        --  -   ++=====+++==- -++XXXXXXXX+++++X++--        =+=
+           '''''''''''''''''''        ''       '                 '       ''      ''''''''''''''''            '
+           ...................        .                                  .       ................
+           =HHHHHHHHHHHHH=---=        =                                  =       =-HHHH-HH=====-=
+            CBBCBBBBBBCCC                                                          BBBC CC
+                 V                                                                  V
   -- -----OOOOOOOOOOOOOOOOOOOOOMZXXZ1OOOOOOOOOOOOOAZZXXXZOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOA11Z+))MOOOOOMMMX1
+          -+XXXXXXXXXXXXXXXXXX+      -++=-----=++-       -+------=----==+++-=- -++XXXXXXXXX+++XX+++-        -----
+           ''''''''''''''''''''       ''                                ''       '''''''''''''''''
+           ....................       ..                                 .       ................
+           =HHHHHHHHHH-----HH-                                           =       =-HHHHHHH-===--=
+            BBBBBCCBCC     CC                                                      CBBBCCC
+              V                                                                      V
 -  ------ ZOOOOOOOOOOOOOOOOOOOOOZ1AXZAOOOOOMOOOOOOOAZXZX1AOMOOMOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ1)1ZAMMMMMMOMMX1
+           +XXXXXXXXXXXXXXXXXXX+      -++=- ----++-       = -- --  ----=+++=----+X+XXXXXXXX+++X+++=-             -
+           ''''''''''''''''''''        '         '                      ''       '''''''''''''''''
+           ....................                  .                       .       ................
+            HHHHHHHHH--H-HHHHH-                                          =       -=HHHH-HH-===-=
+            CBBCCCCCC  C CCBBB                                                     CBBC CC
+                                                                                     V
  -- --- - 1OOOOOOOOOOOOOOOOOOOOOO1ZZX1XXMOOOMOOMOOOOZZZZZ1MOOOOMMMOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOMZ1ZMMOMOMAAOMMMOM)
+           +XXXXXXXXXXXXXXXXXXX+-        =-- -- -++-       ----   -===-=++==-- -++XXXXXXXXXX++X+++=      - -   -   -
+           '''''''''''''''''''''                 ''                      '      ''''''''''''''''''
+           .....................                 .                       .       .................
+            -HHH--H----HHHHHHHH=                 =                               =---HHHH---==-=
+             BBC  C    CCBBCBBB                                                      BBCB
+                                                                                     V
  - -  -   1OOOOOOOOOOOOOOOOOOOOOOZZZ1Z11AAMMMOOOMOOOXXXA1ZXMOMMMMOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOXXAMOMMMOMMOAOMOOM)
+           ++XXXXXX+XXXXXXXXXXX++            --- +++        -    -==--==++-=-- -+XX+XXXXXX+X+XX+++-    -   -  - - =+
+           '''''''''''''''''''''                  ''                             ''''''''''''''''                  '
+           .....................                  .                              ...............                   .
+            =HHHHHH=-HHHHHHHHHH=                                                 -H=-HHHHH=-=--=
+             BBBCCC  CCBBCCCCCC                                                   C  BBCCC
    - -- - )OOOOOOOOOOOOOOOOOOOOOOA1X1XZXAOOOOOMMOMOOOAAAXXZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOMMMMMMMMMMMOOOOOX
+           ++XXXXXXXXXXXXXXXXX+++        -==--  - ++-       -=-=-++=+=====--=---+++XXXXXXXXXXX++- - -           =+++=
+           ''''''''''''''''''''''                  '              '              '''''''''''''''                 '''
+            ....................                   .                             ...............                  ..
+             -HHHHH---HHHH----=                    =                              =--HHHH-----=                   ==
+              CBBCC   CCCB                                                           BBCC
  - - -- --ZOOOOOOOOOOOOOOOOOOOOOOOOZ1XZZZMOOMMMMOMOOOOZXZA1ZMOOOOOOOOOOOMOMMOMOMOOOOOOOOOOOOOOOMMAMOMMMMMAMMMAMOOOOOOA
+           ++XXXXXXXXXXXXX+++XX++=-       =+    - -++-       ----+++---- -  - - -++XXXXXX++++++    -           =++++=
+           ''''''''''''''''''''''                  ''             '               '''''''''''''                 ''''
+           ......................                  ..             .               ............                  ....
+            =-HHHHHHH-HHH-  =H-=                                                   ---HH-====                      =
+              BCCCCCC CCC    C                                                        CC
 -  ----- -ZOOOOOOOOOOOOOOOOOOOOOOOOOZZZZZXMOOOMMMMMOOOAZZZZZMOOOMOOOMOOOMOOOOMMOMOOOOOOOOOOOOOXZXAMOOOMOMMOMMOOOOOOOOM
+           ++XXXXXXXXXXXXX++XXXXXX+-       ---     =++       -+- ++= --- ----  - +++XXXXX++++-     --- -  -  -=+++=++
+           ''''''''''''''''''''''''                 '            ''               '''''''''''                   '  '
+           ........................                 .             .               ..........                       .
+            =-HHHHHHHHHH--==--HH--=                 =                              =--HH-===                       =
+              BBCCBCCCCC      CC                                                      CC
  -- -  -  1OOOOOOOOOOOOOOOOOOOOOOOOOMZZ)ZXZAMOOOOMOOOOOZZ1XZXMOOOOOOOOMMOMOMOMOOOOOOOOOOOOOO11XXMMMMAMAMXMOOOOOOOOOOOA
+           ++XXXXXXXXXXXXXXXXXXXX+++         ---- --+++       =--++==-  - - - --=++++XXXX++-              -+=-===-=++
+           '''''''''''''''''''''''''                 '           ''              ''''''''''                '       ''
+           ........................                  .           ..              ..........                        .
+            =HHHHHHHHH-H-----HHH-=                                                  =---H=
+             CBBBCBCBC C     CCB                                                        C
   ---   --AOOOOOOOOOOOOOOOOOOOOOOOOOOAZXAX1ZMOOOMOMOMOOMXZAXZXOOOOOOOOOOOOMMOMMOOOOOOOOOOMAXXZ1XXXMMOOA1XOOOOOOOOOOOOO
+           ++XXXXXXXXXXXXXXXXXX+===+=        +-- - - ++       -+++===--=-+  -  -=++++XX++           --   -+======-=+++
+           '''''''''''''''''''''   '                 ''        ' '               ''''''''                          ''
+           .....................                     .                           .......                           .
+            =HHHHHHHHHHHH--HH--=                                                    =--=
+             BBBBBBCBBCCC  CC
 - --- -   AOOOOOOOOOOOOOOOOOOOOOOOOOOOZZZZ1XOOOOAMMOMOOOMXXXXZAMOOOOOOOOOOOOMMMOMOOOOOOAXZZZXXZXZAAMX11ZOOOOOOOOOOOOOO
+           +XXXXXXXXXXXXXXXX+++--==++-      =++-   - -++        =++=----++--   - =++++-                 ---===--=-=+++
+           '''''''''''''''''''      '        '        ''         ''     ''         '''
+           ...................               .        ..         .       .         ..
+            -HHHHHHHHHHHHHH-=                =         =
+             BBBBBBCBBBBCBC
  - ---  --AOOOOOOOOOOOOOOOOOOOOMOOOOOOMZZAXZAOOOMMMOOAOOOMXAXAXMOOOOOOOOOOOOOMOOOOOOMZZXZZAOAMZXMMMMMOMOOOOOOOOOOOOOOO
+           +XXXXXXXXXXXXXX++=-- -===++       ++=   -- =++       +X+=----+++-- -----=       -         - =++++==++++++++
+           '''''''''''''''''                 ''        ''       '''     ''                                          ''
+           .................                  .        ..       ...     ..
+           =-HHHHHHHHHHHHH=                            =         -       =
+             CBBBBCBBBBBBB
+                        V
 ------   -MOOOOOOOOOOOOOOOOOOOOOOOOMOOOZ1X111MOOMOMMMOMOOOAZMAZXOOOOOMMOOOOOOMMMOOOMXZZZZXXXXZXXMOMMOOOOOOOOOOOOOOOOOO
+           ++XXXXXXXXXXXX+--------- =+=       ++ -   - +++      -++=-  -++---   +X+              -  ++++++===+=--++=++
+           '''''''''''''''           '        ''       ''        ''     ''      '''                  ''              '
+           ...............                    ..       ..        ..     ..      ...                                  .
+            =HHHHHHHHHHHH=                     =        =        =       =       -
+             CBBBBBBCBBBC
     -    =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1ZZ)1)MOOMMMMMMOOOMXZXZAAOOOOOMOOOOMMMAMOOOOOOAAZZ11XZZXMMZ)ZMOOOOOOOOOOOOOOOO
+          -+XXXXXXXXXXXX+-=-----=-=++++-       ++      -++       +++=- -++-     +XX++-                =+++===+====+=++
+           ''''''''''''''           '''        ''       ''       '''    ''      '''''                                '
+           ..............           ...        .         .        .     ..      .....                                .
+            -HHHHHHHHHH-             =                            =      =       -H=
+             CBCBBBBBBB                                                           C
+                   V
    --  - )OOOOOOOOOOOOOOOOOOMOOMOOOOOOOOMZ1ZZ1AOOOOOMOOMOOOMAXXAAMOOOOOOOOOMOMMMOOOOOOOOAZ1XXXZAAMA1)XOOOOOOOOOOOOOOOO
+          =+XXXXXXXXXX++=--- -- ++++++++       +++-- -- -++       +++===++- -   +XXXX++=              -+=+=-+===++==++
+           ''''''''''''          ''''  '       '''       ''       ''    ''      '''''''                             ''
+           ............          ....           .                 ..    ..      .......                              .
+            -HHHHHHHHH=           ==            =                  =     =       -H--=
+             BBBBBBBBB                                                            C
+                V   VV
     ---- 1OOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOM1XZ)ZMOOOOMAMMOOOOMZZAAAOOOOOOOOOMMMMOOOOOOOOOOOMXAAXMAOMMMMMOOOOOOOOOOOOOOO
+          =+XXXXXXXXX++-=-----=++++--  ++       ++=-    -+++      -++==+++=    -+XXXXXX+++       -     +=++==++=++-=++
+           '''''''''''         ''''    ''        '        '        ''   ''      ''''''''''             '            ''
+           ...........          ..               .        .        .    ..      .........                           .
+           =HHHHHHHHH=          =                         =             ==       --H-H-==
+            BBBBBBBBB                                                              C C
+             V  VV  V
 ----  -  )OOOOOOOOOOOOOOOMOOOOOOOMMMMMMOOMZZ+1111OMMMMMOMOOOOAXXAAAMOOOOOOMOOAMOOOOOOOOOOOOOMAMXMMMMMOOOOOOOOOOOOOOOOO
+          ++XXXXXXXXX+--- ----+X+      -+        -     - -++-       +=++++ --  -+XXXXXXXXX++         --==+++==-=++-++=
+          '''''''''''         ''        '                  '            ''      ''''''''''''                        '
+           ..........         ..                           .            .       ...........                         .
+           =HHHHHHHHH          -                                                 ---HHHHH-=
+            CBBBBBBBC                                                               CCCCC
+               VVVVV
    --- --1OOOOOOOOOOOOOOOOOOOOOOMMMMOMMMOOM11XZ11AOOMOOOMOOOOMXXAAXXOOOOOOOOMOOMOOOOOOOOOOOOOMAAMAMMOOOOOOOOOOOOOOOOOO
+          +XXXXXXXXX+-------+++=    -   =+        == --- --++       =++++--- -- +XXX++++++++-       -=++++++=+++++-+++
+          '''''''''''        ''                            '         '          ''''''''''''          '      '' '  '''
+          ..........         ..                                                 ............                        .
+           -HHHHHHHH          =                                                  -H-== = =
+            BBBBBBBB                                                              C
+             V V
   ---    ZOOOOOOOOOOOOOOMOOOOOOOOOOMMMMMOOM11ZZ1ZZOOOOOMMMMOOAZZAXZXOOOOOOOOMMOMOOOOOOOOOOMOMZAAMMMMOOOOOOOOOOOOOOOOOO
+          +XXXXXXXX+---- --+++-----     -=        ++=--    =-       -+++----  - +++++=--=- -        =++==+=+=+++++=++=
+          ''''''''''       '''                     '                 ''         '''                          ''''' ''
+          ..........        ..                     .                  .          ..                          ....  ..
+           -HHHHHHH=        ==                                        =                                      == =
+            BBBBBBB
+                V
  ---  -  1OOOOOOOOOOOOOOOOOOOMMMMOOMOOOMMOOOZZZZXZMOOOMMMOOOMX)XAMXAXOOOMOOMMOMMOOMMMMMMMMMZA11XXAAOOOOOOOOOOOOOOOOOOO
+          +XXXXXXXX=----+=+++    -- ---  ---       ++-   ---         +++ +-  -  --                 -+++==+=+++=++++++=
+          '''''''''        ''                      ''                 ''                            '       '  ''''''
+          .........        ..                       .                 ..                                       ..  ..
+          =HHHHHHH-        =                                          =                                         =  =
+           CBBBBBB
+             VVVVV
 -----    ZOOOOOOOOOOOOOOOOOOOOOMMMMOOMMOOMOOOXXZ1)1MOOOOOMOOMMXXZAAXZOOOOOMOOOMOAAOOOOOOOMAXXAXXAMMOOOOOOOOOOMMMOOOOOO
+          +XXXXXXX+------+++---    --  -- ++-       ++--- --         -++=- --- -  ------=          +++=====++   =+++=+
+          '''''''''       ''              ''        ''                ''                           ''      '      '' '
+          .........       ..              ..        ..                ..                                           .
+          =HHHHHHH        =               =                            =                                           =
+           CBBBBBB
+            V  VVV
   ---    AOOOOOOOOOOOOOOOOOMMMMOOMMXMMAOOOOOOMZZ1ZZ1OOOOOOOOOOM1AAXAAAMZ)ZMOOOMMMMOMOOOOOMAAXXXAAOOOOOOOOOOOOMAOOOOOOO
+          +XXXXXXX+-----=++    --      -++XX+       =++-------             ---    - -====        -=+++===+++-  --+++++
+          ''''''''       ''             '''''        ''                                            '       '       ''
+          ........       ..              ....        .
+          =HHHHHH-        =               H-         =
+           BBBBBB                         C
+           V VVV
 -    -   MOOOOOOOOMOOMOOOOOOOMMMMMMMOAZOOOOOOOAZ1111AOOOOOMOMOMA1XXAAM1 -1OMOOMMMMMOMOOOOZZZXZXAAOOOOOOOOOOOMAMMOOOOOO
+          XXXXXXX+ -- --+++--       -  =+XXXX=       +++-- - -            - --     - ===-        =+======++-    -+++++
+          ''''''''       '              '''''         '                                                   '         ''
+          ........       .              .....         .                                                              .
+          -HHHHHH        =               -HH-
+           BBBBBB                         BB
+            V VV
   -  -  -MOOOOOOOOMOOOMOOOMMMOMMOOOOOAZAOOOOOOOX1X11ZOOOOOOMMMMMZZAAXAM-=XMOOMOOOOOOOOOMAZXXAAXXMOOOOOOOOOOAMMMOOOOOOO
+          XXXXXXX+ --- -++   -  -++++   -++XX+=      -++---                -- -----=-==          ++=-=-==+=    --+++++
+          '''''''       ''       '''     '''''        ''                                                             '
+          .......       ..        ..     .....         .                                                             .
+          HHHHHHH       =         ==     ==HH=
+          CBBBBBC                          CC
+             V V
 - - -    AOOOOOOOOMMOOOOOOMMMOMMOOOOOOOOOAOOOOOAZX1)1)OOOOOMMOMAAZAXXAA1=ZOOMOMOMMOOOOOAXZXMAX1OOOOOOOOOOOOMAOMMMOOOOO
+          XXXXXX+-  ---=++   -  -XXXX++=- ++X++       -++--  -            -- - -  -=---        -+==+===+++-  -   -=+++
+          '''''''       '        ''''''    ''''        ''                                               '           '
+          .......       .        ......    ...         ..                                                           .
+          HHHHHH=                -HHH==     -=         =
+          CBBBBB                  BBC
  ---   --OOOOOOOOOOOOOOOOOMMMMMOOOOOOOOOOOOMMOOMZZ1Z11XOOOOMOMOMOAXXXXA1=ZMOOMOMMMOOOMXXXXAZXXMOOOOOOOOOOMXAOMAMOOMOOO
+         -XXXXXX+=-----++-     -+XXXXXXX++-  --        =++- - - -          -- -   ---          ++=-=-==++   -   -- =+=
+          '''''''      ''       ''''''''''              '                                                           '
+          .......       .       ..........              .
+          HHHHHH=       =       =HHHHHHH=
+          CBBBBB                 BBBBBBB
+           VV
 --       MOOOOOOOOOOMMOOOOMMAAMOOOOOOOOOOOOOOOOO111Z1Z1MOOOOOOOMOMZZXXXX+ZMOOOOOOOMOOAAXXZAXZMOOOOOOOOOOMXZXMMAMMOAOOO
+          XXXXXX+---  -++-     -XXXXXXXXXX+++++=        ++----- -          ------- =-         -+====-==+         - -+-
+          '''''''      ''       '''''''''''''''         ''                                                          '
+          .......      ..       ...............         ..
+          HHHHHH                -HHHHHHHH-===
+          CBBBBB                 BBBCBBCC
+            V
         -MOOOOOOOOOOOMOOOMMOAAMOOOOOOOOOOOOOOOOOMZ1ZZZZMOOOMMOOMMOXZXXZA=ZMOOMOMMMOOMZAZX11ZXOOOOOOMOOOOAXAOMOOMOMAOOO
+          XXXXXX+---- -++  -   +XXXXXXXXXXXXXXX+        ++-  --  =         -- -   --         -+==== -++-   - =- -  -+=
+          '''''''      ''       ''''''''''''''''        ''                                            '             '
+          .......      .        ................        ..
+          HHHHHH                HHHHHHHHHH-HH--=        ==
+          CBBBBB                BBCBCBCCBC CC
+            VV
  -   ----OOOOOOOOMOMOMMOOMMOMAAOOOOOOOOOOOOOOOOOOOXXZ)11XOOMMMMMXM)ZZ1ZZ-ZMOMOMMMMMZZ11ZZZZXMOMMOOOMOOOAAAOOMAXZZAXAOO
+         -XXXXXX+ - -  +=  -   +XXXXXXXXX++++XXX++       --                - -               =  =-- =+=   -=        =+
+          '''''''      '       ''''''''''''''''''
+          ......       .       ..................
+          HHHHHH               =HHHHHHHHH====---=
+          CBBBCC                BBBBBBBCC
+                                 V VV
  - -    -OOOOOOOOOMOOOOOOOMMOMMOOOOOOOOOOOOOOOOOOOX1XXZXOOOOMMMMOO1XXZXZ=ZOOMOMMMOMAAAZXAXXMOOOOOOOOOOMAOOOOXZAAAMAZOO
+         -XXXXXX+- ----++-  -  +XXXXXXXXXXXXXXXXX+      -+=-    -=        -- -   -          ++=+++==++  ----        =+
+          '''''''      '       '''''''''''''''''''       '                                          '
+          .......      .       ...................       .
+          HHHHHH                HHHHHHHHHH-HHHHHH
+          CBBBBB                BBBBBBBBBC CBBBBB
+             VV                      V V     V
   --     OOOOOOOOOOMOOOOOMAMAAAOOOOOOOOOOOOOOOOOOOZ1Z1XXOOOMMMMOOOZZXAXA=ZOOOMOOOMXXXAXZZZAOOOOMOMMOOOOOMMMMAXMOOZZZMO
+         -XXXXXX+-- --=++      +XXXXXXXXXXXXXXXXX+      ++-    --=        --- ---          =+=- -  -----       --    =
+          '''''''      '       '''''''''''''''''''       '                                  '
+          .......      .       ...................       .
+          HHHHHH                HHHHHHHHHH-HHHHHH
+          BBBBBB                CBBBBBBBBC BCBCBC
+             V                      V
         -OOOOOOOOOOOOOMOOOMMMMAOOOOOOOOOOOOOOOOOOOZ)1Z1ZOOMMMMMMOMZX11Z1=1MMMOMOMA1XXMZZZXOMOMMMAAAMMMOOMMAMAMOOA11MAO
+         =XXXXXX+=---- ++-     +XXXXXXXXXXXXXXXXX+      -=      -            - -          - -         --      ++     =
+          '''''''      ''       '''''''''''''''''
+          .......      ..       .................
+          HHHHHH                -HHHHHHHHH----HHH
+          CBBBBB                 CBBBCCBCC    CBC
         -OOOOOOOOOOMOOOOOMMAAAMMOOOOOOOOOOOOOOOOOOZZZZXZMXAMAXMMOMZZXXZZ+AAAAMOMOXZZXMMOOOOOMOOMOOOOMOOOOOMMOOOOZZZXXA
+         +XXXXXX+-- ---++       +XXXXXXXXXXXXXXXX+              -             - -      --=-- -- --=- -=---  -++-
+          '''''''       '       '''''''''''''''''                                                            '
+          .......               .................                                                            .
+          HHHHHH=               =HHHHHHHHHH-HHHH-
+          BBBBBB                 CBBBCCCCCC CCCC
+           VV V
         -OOOOOOOOOOOOMOOOOMAAMAMOOOOOOOOOOOOOOOOOAZZ1ZAOOOMOMOMMOO1ZAAMAZMOOMOOOX+))XMMOOOOOOOOOOOOOOOOOOOOOOOOM1AMXMM
+         +XXXXXXX+--- -=+-      +XXXXXXXXXXXXXXX+      =+- - -  +-        -- ---       =+++++++=++=++++=--=-+++
+          '''''''       '        ''''''''''''''''                                        '''        ' '     ''
+          .......       .        ................                                                            .
+          HHHHHHH                -HHHHHHHHHHHHH-
+          CBBBBBC                 BBCCBBCBBCBBC
+           VV V
          OOOOOOOOOOOOMMOOOMMAAMOMOOOOOOOOOOOOOOOO)111MOOOOAAMMMMOMZAZMAXZMOMXAXZ+-))1ZMOOOOOOOOOOOOOOOOOOOOOOOOZ1AA1XA
+         =XXXXXXX+=--  -++     - +XXXXXXXXX+++++-     ++--      +         -            -=+=++++++++++++=++-+++-
+          ''''''''       '       ''''''''''''''       ''        '                             ''   '       '''
+          ........               ..............                                               .             .
+          HHHHHHH                 HHHHHHHH-===
+          BBBBBBB                 BBBBBBBB
+           VVVV
+             A
         -OOOOOOOOOOOOOOOOOOMMAOMAMOOOOOOOOOOOOMOOA1XMOOOMMMMOOMOOOAMXXMAXAAZ111)))))ZAMMMMOOOOOMOOOOOOOOOOOOOOO1AOAZM1
+         +XXXXXXXX+=----=+=   -   +XXXXXX+++-- -=    ++=    -- -+-                        --=== ---+-==+++++++-  -
+          ''''''''       '        '''''''''          ''         '                                      '' '''
+          ........                ........           ..                                                 . ...
+          HHHHHHH-                =HHHH--            =
+          BBBBBBB                  CBBC
+           VVVVV
+             A A
  -       OOOOOOOOOOOOOOMMOOOMMOMAXMOOOOOOOOMZMOOOOMOOOOMMMAMMOOOOMXXAAA)1ZZZ1Z111ZXXAOMMOOOMMOMMOZAXAOOOOOOOOOAZZA1XAA
+         =XXXXXXX++=---  ++=  -    +X+++=--   -+++ +++-      --+=                    -  ---  -  -    --==+++++
+          '''''''''       '        '''''       ''' '''                                                    '''
+          ........        .        ...          .   ..                                                    ..
+          HHHH--H=                  -=          =   =                                                      =
+          CCCC  C
   -      XOMX))1)1XOOOOOOOOOOMMMMMAOMOOOMMMMOOOOOOOOOMMAMAMMAOOOOOMAA1))+111)Z)ZAAMMOMMOMMOOMM1ZZZ1ZZXMOOOOOOO+1)MAAZM
+          -        -==---=++-      - ==-    -++XXXX++        -+=--                  -  -  --           ==++++-
+                          ''                 ''''''''         '                                          ''''
+                                              .......                                                      .
+                                              =HH--
+                                               CB
          -----   --XOOOOOOOOOMMMMMMAAMOMMMOOOOOOOOOMMAAAAAAMMOOOOOM)+====+1)1ZZAMMOOOOOMOMAMAZZ11Z))Z1XOOOOOOM+XMOAX)Z
+                    -==---=++         -   -++XXXX++          +-=--                ---=- -              --++++    -
+                           '               '''''''                                                         '
+                           .               .......                                                         .
+                                            =-HH-=
+                                              CC
      -   - -      -=MOOOOOOOOOMAAMMMMMMMMMOOOOOOOOAMMOMMMMMMOOOOOM+---==)++1XAAMMOOOOOOOMOMA)111111ZZZAMOOOOO)=AMOXZA1
+                     ====--=+=            -+++++--   -      +--+-                =--=--- -              -==+-    =
+                            '               ''              '
  -          ---     =OOOOMMMOOOOAXAXMMOOMMMMMMMOMMMAMMMMMMOOOOOOOZ-   --=)+1ZMOOOOOOOOOOOMMA11Z11111111MOOOOX+=AOMO)A+
+                     -==-   -++-      --       -          -++--==             --++=++==--               -=+-    - -
+                              '                            '
 --         -     - - +OOOOOOOOOOOOMMMMMOMAMMMAMMOMMMMOMOOOOOOOOOA     ---=)1AOOOOOOOOOOOMMMOZ1ZZZZZZZAAOOOOO)=)MOOOZ)1
+                      -=-----=++=-     -        -    - --=++-==+             --==++++=--   -           --+=-    -++
+                               '                          '                                                       '
           ----=-+11XMOOOOMOOOOOOOOOMAAAMMMMMOOMOOMMMMMOOOOOOOOOO-     ---=)XAOOOOOOOOOOMOMMMMZMAXXXAXAOMOOOA+=+MOOOX=1
+                     =++- ------++=         -- --     -=++----=+             --==+++==- -             - -=-     -=+
+                      '                                 '                        '                                '
+                      .                                                                                           .
          XOOOOOOOOOOOOOOOOOOOMAOMOOOOOMAAAAMAMAMMMAMMMOOOOOOOOO1     -  -=)1XMOOOOOOOOMMAAAMMAXMXMMAXAMOMOMZ=-=OOOOO-+
+          ++++++XXXXXXX++----  - =++=-                -=+------               --+++==-                 - =     -=++-
+          ''''''''''''''                                                         ''                               '
+          ..............                                                                                          .
+            ====--HHHHH=
+                  CCCBB
+                      V
          OOOOOOOOOOOOOOOOOMAMOMOMMMOOOOOOMMAMXMOMOOMMAOOOOOMOOO        --==1AXMOOOOOOOOAXAXXAA1ZAAAZ11MOMOM1=--AOOOO+=
+         =XXXXXXXXXXXXXXX+   - -   -=+++-      - --   ----- -==                =+++++=-                - =      +++-
+          '''''''''''''''             ''                                         '                               '
+          ...............
+          HHHHHHHHHHHHHH-
+          CBBBBBBBBBBBBB
+           VVV V VV V
          OOOOOOOOOOOOOOOOOOOAOMMMMOMMMOOOOOOOOOOOOOOOMMMOMMMOOM        ---=)XMMOOOOOOOOAMMAMAMMMMMMMAMMMOMA1+=-ZOOOOA+
+         =XXXXXXXXXXXXXXXX+- -    -   -==+++++++++=--   -   -=                 -===+---                 -       -++=
+          '''''''''''''''''                     '                                                                 '
+          .................                                                                                       .
+          HHHHHHHHHHHHHHH-
+          CBBBBBBBCBBBBBC
+           VV
 -        OOOOOOOOOOOOOOOOOOOOOOOMOMMMMOOMMOOOOOOOOOOOOOOOOOOOO+        -==)1AMOOOOOOOMOMMOMOMMMOOOOMOOOOMMM+))-)OOOOOA
+         =XXXXXXXXXXXXXXXXX++--- -    --  --------=---------=+                --===+= -  - -   ---- ----        -+++=
+          ''''''''''''''''''                                 '                                                   '''
+          ..................                                                                                     ..
+          HHHHHHHHHHHHHHHHH=                                                                                      =
+          CBBBBBBBBBBBBBBBC
+           VV            V
 -       -ZOOOOOOOOOOOOOOOOOOOOOOMMMMMOOMOOOMOOOMOOOOOOOOOOOOOO         - -+1MAMOOMOOOOMMMMMOOOOOOOOMOOOMOMA+))=-MOOOOO
+          +XXXXXXXXXXXXXXXXXX++-     -- --- --- -----=---=-=++                 -- -=--     ---=--== =-- -        ++++=
+          ''''''''''''''''''''                               '                                                   '''
+          ....................                               .                                                   ..
+          =HHHHHHHHHHHHHHHHH-=                                                                                    =
+           BBBBBBBBBBBBBBBBB
+            V VV         V
           MOOOOOOOOOOOOOOOOOOOOOOOMMAOOMMOOMOMMMMMOOOOOOOOOOOO          -=+)ZZMMOOMMMMAMMAOMMMMMOOOOOOMMAOX+=1)-MOOOMO
+           +XXXXXXXXXXXXXXXXXXXX+-   --  -- -     ----=---=++-                  --        -     -==-=-   -       +++ -
+           ''''''''''''''''''''''                          ''                                                     ''
+           .....................                            .                                                     ..
+           =HHHHHHHHHHHHHHHHHHH-                            =
+            BBBBBBCBBBBBBBBBBBC
+             V          V V
 --        -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMOMOMOOOOOMMMMOOOO)         -=+)XXXMMOOOMOOOOMOMMOOOOMOOOOOMMXXX)=)X=1MOOMO
+            +XXXXXXXXXXXXXXXXXXXXX+++=--  - - - -----    +=+=                   =-- ---- -  -=+= =+===            ++ -
+            '''''''''''''''''''''''                                                                               ''
+            .......................                                                                               ..
+             HHHHHHHHHHHHHHHHHHHHH=
+             CBBBBBBBBBBBBBBBBBBCC
+              VV  V   V
 -      - ---MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1)ZOOOMM-       - -=+)1XAAMOOOOMMMOMMMOOOOOOOOOOOMXA1)++1A)-AOOOO
+             +XXXXXXXXXXXXXXXXXXXXXXXX+++++=++++=--     ++=                     ----   -   ---=====-=-            ++--
+             '''''''''''''''''''''''''''''   '           '                                                         '
+             ............................                .
+             =HHHHHHHHHHHHHHHHHHHHHH--=
+              BBBBBBBBBBBBBBBBBBBBBC
+               VV V   V
  -         --OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO11)++)ZOOOOA        - --+1ZXXXMMMOOMMOOMOMOOMOOMOOMMMMXZ)==)=XA-+OOOO
+             -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++-       ++=-                      --  -= - -- -= ==               -+-=
+              ''''''''''''''''''''''''''''''''          ''
+              ................................          ..
+              =HHHHHHHHHHHHHHHHHHHHHHHHHH---=           ==
+               CBBBBBBBBBBBBBBBBCBBBBCCCB
+                 V   V
 -  -  -      =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMM))111)XOOOO)       - --==1XXXMMAMOOOMMOMMMMOMOOMOOOOMMZ)1-=)ZXOZ-+MOO
+              -+XXXXXXXXXXXXXXXXXXXXXXXXXX+++-          ++=-                      ---  -    - =- =---          -    --
+               ''''''''''''''''''''''''''''''           ''
+               .............................            ..
+                HHHHHHHHHHHHHHHHHHHHHHHHHH==            ==
+                CBBBBBBBBBBBBBBBBBBBBBBBBC
+                  V V                V
   -  - -   - -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOO+111ZXOOOO-        -=-==+1ZAAMMMMMAOMMMMOMOMMOOOOMMAZZ1+-=111MO)-+OO
+               -+XXXXXXXXXXXXXXXXXXXXXXX++-  -=++-      ++=-                         -    - -  -=--             +   --
+                '''''''''''''''''''''''''      ''       ''
+                .........................      ..       ..
+                 -HHHHHHHHHHHHHHHHHHHHH-=       =        =
+                  CBBBBBBBBBBBBBBBBBBBC
+                      VV  V
     - -    =  -)MOOOOOOOOOOOOOOOOOOOOOOOOAXOOOOOOO+1111ZOOOM           -==+1ZXAAXMAAMMMOMMMMMMMMMOMOOA1Z))-+)=+ZOM1-)Z
+                 ++XXXXXXXXXXXXXXXXXXX+=-  -+++XX-      ++=                            -         - --           -
+                 ''''''''''''''''''''''      ''''       ''
+                 ......................      ....       ..
+                  =HHHHHHHHHHHHHHHHHH-        =HH        =
+                   CCBBBBBBBBCBBBBBBB          CC
+                         VV    V
        -   --  -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=1))1XOOOZ        - -==+)1ZZXXMAAXAOOMOMXMMOMMAMAMXX11)==-+=+ZMOMX=)
+                 -++XXXXXXXXXXXXXXXXX+++=++XXXXXX-      ++=                          -- -    -                   =
+                  '''''''''''''''''''''   '''''''       ''
+                  ....................    .......       ..
+                  ==-HHHHHHHHHHHHHHH-     =-HHHH-        =
+                     CCBBBBBCCBBBBBC        CBBB
 -  -       --  -=AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+))==ZOOO-           --==)+ZXX1XZZAZMAMM1Z1XZZZZ111)=+=--   -1OOMXMZ
+                  ++XXXXXXXXXXXXXXX++++++XXXXXXXX       ++=                                                     -+
+                  ''''''''''''''''''''  '''''''''       ''
+                   ..................   .........       ..
+                   =-HHHHHHHHHHHHH-=     -HHHHHH-       ==
+                     CCBBCCBCCBBBC        CBBBBC
  -  --     --   =XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)))1ZMOOO-       ----=)+)ZXXZZXAAMZAMMMXXAXMMXXZ)Z1)+-++=-   +ZOOOOO
+                  ++++XXXXXXXXXXXXX+++++XXXXXXXXX-      XX+                                                      =---=
+                   '''''''''''''''''' '''''''''''       ''
+                   ..................  ..........       ..
+                   ===HHHHHHHHHHHH-=    HHHHHHHHH       --
+                      CCBBBBBBBBBC      CBBBBBBBC
+                                V         VV  V
   - - -     -  --)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)+)1)XOOO-     ----===+)111XZ1XZX1ZAXOAZZZZZXX1Z111+====-+-   -+ZZOO
+                   +++XXXXXXXXXXXX+++=++XXXXXXXXX-      +X+                            -                            -=
+                   '''''''''''''''''   ''''''''''       ''
+                    ...............    ..........       ..
+                    ==-HHHHHHHHHHH=    =HHHHHHHHH       =-
+                       CBBBBBBBBBC      BBBBBBBBB
+                                V         VV  VV
   - -        -  -=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM))1Z1AOOO       ---=-)+))111Z11111ZZZMAZ11ZXA1111+1++=======---=+-1M
+                   -++XXXXXXXXXXXX+==-=+XXXXXXXXX       +X=
+                    '''''''''''''''    ''''''''''       ''
+                    ...............    ..........       ..
+                     =--HHHHHHHHHH     =HHHHHHHHH       =H
+                        CCBBBBBBBC      CBBBBBBBB        C
+                                V            VVV
    -  -     ---   )AOOOOOOOOOOOOOOOMMMOOOOOOOOOOOM))1)1AOOM      -----=)1)1ZZ)Z1111))111X1Z1X111))+)+)1-=+)===-=1+ZZ--
+                    =+++XXXXXXXXXX+   -+XXXXXXXXX       ++
+                     ''''''''''''''    ''''''''''       ''
+                     ..............    ..........       ..
+                     ===HHHHHHHHHH=     -HHHHHHH-       ==
+                        CCCBBBBBBC       CBBBCBB
 --   --      --   =1AOOOOOOOOOOOOOOOOMMOOOOOOOOOOO1Z1X1MOOO     - ----=)+11)1111))))=11))+)+)))++=++1+1)--=+==- -=+XMO
+                     =+++XXXXXXXXX+--  ++XXXXXXX+-      ++-                                                          -
+                      '''''''''''''     '''''''''       ''
+                      .............     .........       ..
+                       ==HHHHHHHHH      =HHHHHHH=       ==
+                         CCBBBBBBC       CBBBBBB
+                             VV
   ----- -    -   -=+)XOOOOOOOOOOOOOOOAXOOOOOOOOOOM111Z)OOOM    - -==--=)++)1))))))++++)+1)1+)++++==+11ZA+--=--==---)XM
+                      -+++XXXXXXXX++=  -++XXXXXXX      -++
+                        '''''''''''     '''''''''       ''
+                        ...........      ........       ..
+                         =-HHHHHHH=      =-HHHHH-       ==
+                           CBBBBBB         CBBBB
+                             VV
 -  -- - -    --  -  =)XAOOOOOOOOOOOOOMMOMOOOOOOOOO11111MOOZ     -----=++==)+1)))))+)=+=-+)))======--++XAM++1++1Z)+)=11
+                        =++XXXXXXXX++  - =+XXXXXX-      ++
+                         '''''''''''      '''''''       ''
+                          ..........      .......       ..
+                          =-HHHHHHH        -HHHH-        =
+                            BBBBBBC         CBBB
+                                VV             V
 -      -     -      --=)ZOOOOOOOOOOOOMMMMMOOOOOOOA+1))1MOO)       --- =+===+))+==--=----===- - - -=---)AOOOAZMOOOA))1M
+                         -++XXXXXXX+=     =+XXXXX       ++                                              -=-   =++
+                          ''''''''''       ''''''       ''
+                           .........       ......       ..
+                           =-HHHHH-        =-HHH-
+                             BBBBB           CBB
 --  -- -     --   -    --1MOOOOOOOOOOMOOOOOOOOOOOA)1)11XOO1    - -- ===+=++)1))=+==-++=+====---------- -=ZMMMMXXZZAMXO
+                           +XXXXXX++= ---=++XXXXX       ++                                                           -
+                           '''''''''       ''''''       ''
+                            ........       ......       ..
+                            -HHHHH=        =HHHH-        =
+                             BBBBB          CCBB
 ------       --    -   - -)MOOOOOOOOMMMOOOOOOOOOOZ++)1)AOO=        ----=+=+++++==---======-=--- -------=--=XXMAMMMOOZX
+                            +XXXXX++   -+++XXXXX+       ++                                                        +-
+                            '''''''      ''''''''       ''
+                            .......      ........       ..
+                            =-HHH-         -HHHH=       =
+                              BBB           CBBC
+                               V
 --- -  --     -           =ZOOOOOOOOOOOOOOOOOOOOOZ)))))MOO+     ----- --=+==++=====----=--------- ---  ---=+-=---MOZ1)
+                            +XXXX++===++XXXXXXXX+       ++                                                        -
+                            '''''''   '''''''''''       ''
+                             ......    ..........       ..
+                             -HHH=     =---HHHHH=
+                              BBB          CCCCB
      -        -            -OOOOOOOOOOOOOOOOOOOOO)=====1OO-            --=---=+-=-= -- -=-  -      -----  ----==OM)+++
+                            =+X+++++++++X++++++X+       ++                                                      -
+                             '''''  '''''''''''''       ''
+                             ....    ............       ..
+                             =-==     ==-======-        =
    -          -            +OOOOOOOOOOOOOOOOOOOOO1=+))=XOO=       --  =---=-==-----   - ---- -    -  ---  ---=++Z)111)
+                            =XXX++++XXXXXXXXXXXX+       ++
+                             ''''''''''''''''''''       ''
+                             ....................       ..
+                             ---= ==--HHHHHH-HHH=       =
+                                      CCCCCC CBB
  -    -       --           )OOOOOOOOOOOOOOOOOOOOOZ)==+=XOO1       -----------==----- - =- - -         -------=+ZAMMMOO
+                            +XXXXXXXXXXXXXXXXXXX+       ++                                                          ==
+                            '''''''''''''''''''''       ''
+                            .....................       ..
+                             ------HHHHHHHHHHHHH=       =
+                                   CBBBCCCCCCCCB
   ---  -      --          -XOOOOOOOOOOOOOOOOOOOOOZ)++1)MOO1       -----==--=---=-- - - -- ---      -----------==))11ZZ
+                            +XXX+XXXXXXXXXXXXXXXX       ++
+                            '''''''''''''''''''''       ''
+                            .....................       ..
+                             -H-=-HHHHHHHHHHHHHH-       =
+                              C   CCBBBBBBBBCCBB
    - --        -          =MOOOOOOOOOOOOOOOOOOOOOZ+)1+)MOOZ      ----- --- -=-==-- -    -          ---  -- ----+====+=
+                            +XXXXXXXXXXXXXXXXXXXX       ++
+                            '''''''''''''''''''''       ''
+                            .....................       ..
+                            =----HHHHHHHHHHHHHHH-       =
+                                 CCBBCCCBCCCBBBB
+                                               V
   - ----       -   -   - -1OOOOOOOOOOOOOOOOOOOOOOZ=+)+)OOOX   - ---   - =--=====--   - --           - -- ----=-==-+=+)
+                           ++XXXXXXXXXXXXXXXXXXX+      -++
+                           ''''''''''''''''''''''       ''
+                           ......................       ..
+                            =-H-HHHHHHHHHHHHHHHH=       =
+                              C CBBBBBBBBBCCBBBB
+                                              VV
   -    -                 =MOOOOOOOOOOOOOOOOOOOOOOZ+)++)MOOA-   -  - -- =-====-+=-      -                -- --===-==-=+
+                           +XXXXXXXXXXXXXXXXXXXX+       X+
+                           ''''''''''''''''''''''       ''
+                           ......................       ..
+                           =HHHHHHHHHHHHHHHHHHHH=       -=
+                            CBCCCBBBCBBCBCBBCBBB
+                                              VV
+                                               A
 -  --  -                -)OOOOOOOOOOOOOOOOOOOOOOO1++==)MOOM-        -  -----+-)=--                    - -----====++++)
+                          +XXXXXXXXXXXXXXXXXXXXX+       X+
+                          '''''''''''''''''''''''       ''
+                           ......................       .
+                           -HHH--HHHHHHHHHHHHHHH=       -
+                            BCC  CBBCBCCBCCCBBBB
+                                             VVV
 --    --                =ZOOOOOOOOOOOOOOOOOOOOOOO1=)=++AOOM=       -- -----==+)= -     -                 -----=--=+)=1
+                          +XX++++XXXXXXXXXXXXXXX+       ++
+                           ''''''''''''''''''''''       ''
+                           ......................       ..
+                           --====-HHHHHHHHHHHHHH=       =
+                                  CBBCBCBBCCBBBB
+                                      V      VVV
  -- -  -       -        -)MOOOOOOOOOOOOOOOOOOOOOO1=+=)=MOOM)        -  --=+=)))=-1      -           -- -   -=+=--)==)1
+                           +XXXXXX+XXXXXXXXXXXXX+       ++
+                           ''''''''''''''''''''''       ''
+                           ......................       ..
+                           =--HH--=--HHHHHHHHHHH        =
+                              CC     BBCCCCBBBBB
  ----                -  -+OOOOOOOOOOOOOOOOOOOOOOO1==+))OOOOM -  -- -  -=-=+++))+-1      -         ---- - - -----=)+)))
+                          -+XXXXX+++XXXXXXXXXXXX+      -+++
+                           ''''''''''''''''''''''       ''
+                           ......................       ..
+                           =-HHH-===-HHHHHHHHHHH=       =
+                             CCC     CBBCCCCCBBB
 -- -- -                  +OOOOOOOOOOOOOOOOOOOOOOO1=)XMOOOOOO- --   -----+++)+))+)X-                     - - --==+)+)11
+                          -+XXXXXX+++XXXXXXXXXXX+     =+XX++
+                           ''''''''''''''''''''''      '''''
+                           ......................      .....
+                           =-HHH--===-HHHHHHHHHH        H-==
+                             CBB      CBCBBCCCBB        C
  -    -                  -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-     -- -=--++1111=)O-                - ----=--=-==++)))1
+                           +XXXXX+X++XXXXXXXXXXXX=++++++=--                      -
+                           ''''''''''''''''''''''  '''''
+                           ......................  .....
+                            -HHH-=-==-HHHHHHHHHH-  ====
+                             CCC      CCBCCCCCBB
  - --- -           -  -   )OOOOOOOOOOOOOOOOOOOOOOOOOOAAAAXAM)      - ----)1)1Z1)1OO     -          - - -----=--=+++))1
+                           =+XXXXXXXXXXXXXXXXXXXX+++-                            =-
+                            ''''''''''''''''''''''''
+                            .......................
+                            =HHHH-----HHHHHHHHHHH==
+                             CCCC     CBBBBCCCCBC
 -      -                --+MOOOOOOOOOOOOOOOOOOOOOMXZAXZXAXMM1-- ----- -==+))ZXX1ZOO-                ------====--+))11X
+                            +XXXXXXXXXXXXXXXXX+++                                -+
+                            ''''''''''''''''''''                                  '
+                            ....................                                  .
+                             -------HHHHHHHHH-=
+                                    CCCBBBBBB
   --- --                  +MOOOOOOOOOOOOOOOOOMAXXXZXAAXXXXZA)    -    -=)))11XXZ1OOX                -- -===+=+=+)++111
+                            +XXXXXXXXXXXXXXX+                                    -+
+                            '''''''''''''''''                                     '
+                            ................
+                            =-HHHHHHHHHHHHH-
+                              CBCCCBBBBBBBB
                           =OOOOOOOOOOOOOOOMZ+11Z1111111ZZ11Z)         --=+++1)ZX)XOM     -             -----====+)+)+)
+                           -+XXXXXXXXXXXX+                                        -
+                            ''''''''''''''
+                            ..............
+                            =HHHHHHHHHH--=
+                             CCCCBBBCCB
+                                   V
   - -  -              -  =MOOOOOOOOOOOOOOZZ11X1Z1AZZAAMMOOOOO -     --==)1)1ZZXAMMOO               -  - ---+)1)111ZZ11
+                           +XXXXXXXXXXX+-               ==++-                     +=
+                           '''''''''''''                   '
+                           .............
+                            HHHHHHHHHHH=
+                            CBBBBBBBBBC
+                               VVVVVVV
+                               AAAAAAA
 ----                  --1OOOOOOOOOOOOOOZ1Z111ZZZZZXMOOOOOOMM1--     --==+Z1X1ZXAMOOO-                ----==++))1Z1Z1ZZ
+                         =+XXXXXXXXXX+-             +++++-                       -++
+                          ''''''''''''                '                            '
+                          ............
+                           -HHHHHHHHH=
+                            CBBBBBBBB
+                              VVVVVV
+                                  A
 - -- -          - ---=1OOOOOOOOOOOOOOAZ1XXXXAMMMOOOOOMX)1Z11=-     - -=))Z1XXMMMOOOO+               ---====++)+)Z1ZZXX
+                       -++XXXXXXXXX+-           -++=-                           -=++
+                        ''''''''''''              '                                '
+                        ............
+                         =---HHHHHH=
+                             BBBBBB
       -         -)11)MOOOOOOOOOOOOOXXX1XZZ1XZMOOMA11+1)1+11Z+      -====)1XZXAMMMOOO)             ------===)))+ZZ1ZZAM
+                      +XXX++XX+XX+=           =-                                 -++
+                      ''''''''''''                                                ''
+                      ............
+                       HH-==-H=--=
+                       CC    C
                 XOOOOOOOOOOOOOOOOOXZXAXXXAAOMMX)11A1))111Z1X)--- - --=+)1)ZXAMMOMOOO)               ---=+=+=+)11XXAAXA
+                 ++++XXXX++XXXXX+-         -                                   - =++
+                 ''''''''''''''''                                                  '
+                  ...............                                                  .
+                   = -HH-==--HH-=
+                      BC     CC
                 OOOOOOOOOOOOOOOOAXZXZXAXMAMAZ1)))1OZ1))11ZZA=  -   --==)))ZAMMOOOOOO-              ----==+=-)))1ZZZAAA
+                +XXXXX++++XXXXX+                  +                           ---==+
+                '''''''''''''''                   '
+                 ..............
+                 HHHH-=  =-HHH-
+                 CBBC      CBB
+                   V
       -        -OOOOOOOOOOOOOOOXXXZZXXAOOZ11+)1+))O)+)1XMOOO1-   -- -=+)1ZAMOOOOOOOO               ---===++++11ZZZAXAO
+                +XXXX++++XXX++=        --         -      =++                -----=+=                                 -
+                ''''''''''''''                            ''                      '
+                 ...... ......                            ..
+                 -HHH=  =---==
+                  BBC
+                   V
     -  -        OOOOOOOOOOOOO+))1Z11ZMOO1)))+)-+-=11XOOOOOOO=      - -=)ZXXMOMOOOOO+                 -=--)))))1ZZZMAMO
+                =++XXXXXXXXX+         ++             -++XX++                - --==+                                  -
+                 ''''''''''''         ''              ''''''                      '
+                 ...........                          .....
+                   -HHHHHHHH                           =HH=
+                    BBBCBBBB                            BC
+                      V  VV
+                         AA
       -         AOMOOOOOOOOOAZ1ZZZZXOOO1)+))++)=1XOOOOOOOOMX-     --===+11XMMOOOOOO                --=--==+1)11Z1ZAAMM
+                 - ++XXXXXX+        =++           =+++-++=                   --=++=
+                   '''''''''         '             ''   '                        '
+                    ........         .                  .
+                    =HHHHHH                             =
+                     BBBBBB
+                      VVVVV
+                        AA
 -    -          )XZOOOOOOOOAXAZZZAAOOA))+))+++ZOOOOM1+)OOOOX-     --==+1ZAAMOOOOOO=                 --====))+Z1)ZZZXAM
+                   -++XXXX+        ==          -+++    +X+-                 -==+++
+                    '''''''                     ''      '                       ''
+                    .......                      .      .                        .
+                     =HHHH                              -
+                      CBBB
+                       VVV
 -               =)1AMOOOOOAZZZXZZMOM1)+)+++=)AOOOZ)+==+OOOMZ-      ----1XXAMOOOOOO                    -=--=+=))11ZZXMA
+                     =+XX+        =           +++      -+=                  -=+++=
+                      ''''                    '''       '                       '
+                      ....                     ..       .                       .
+                       HH                      =        =
+                       CC
                 -=Z1)+1OOMX1Z11ZAOM====+=++ZOOOOO+ ==++OOOA)-       -==)XMMMOOOOO                   -- ----=+))1Z1XXAZ
+                       =+        +          =+XX+      =+-                  -=-++
+                                             ''''       '                      ''
+                                             ...        .                       .
+                                             =HH        =
+                                              CC
    -             )AMX++AXXZZAXXOOM+)))))+1AOOOOOO-==)+=OOOA+       ---)ZZMMMOOOOM                   -   ---==++11ZZAMM
+                               -+          ++XXX+      -+-                  -=++
+                                           ''''''       '                      '
+                                           .....        .                      .
+                                            =HHH        =
+                                             BBB
                 -+AAMZZMAAXXMXOOO=++))+)1OOOOOOOO=+++=+OOOA=       --=1ZXMOOOOOO                  -  ------=-+)1ZAAAMO
+                              -+-        =+XXXXX+      -+-                -==+++                                     -
+                               '          '''''''       '                     ''
+                                          .......       .
+                                          =-HHHH        =
+                                            BBBB
                  =1XOMAAXZXAAMOA==+=+==ZOOOOOOOOO==)+++OOOA-     ----+)ZXMOOOOO=                     - -==-==+)1XAXAMM
+                    -         +         ++XXXXXX+      -+-                -==++
+                              '          ''''''''       '                     '
+                                         .......        .
+                                         =-HHHHH
+                                           CCBBC
     -           =++1OOMMAAXXMMM+=)1+=+OOOOOOOOOOO-=====OOOA-    - ---+1XMOMOOOO                      ----===)+1ZXXXMMO
+                    --                -+XXXXXXXX+      -+-               - =++=                                      -
+                                       ''''''''''       '                    '
+                                       .........        .
+                                        HHHHHHHH        =
+                                        CBBBBCCC
                 ---1MZZ1Z1Z1+-=======ZOOOOOOOOOOO=-==+-OOMZ-      ---=1ZMMOOOO                        ------=+))1Z1XMO
+                                      +XXXXXXXXX=      -+                 -==+                                       -
+                                      ''''''''''        '                    '
+                                      ..........        .
+                                       -HHHHHHH-
+                                        BCBBBBC
                =- +AOXAZZXX1---=+==)ZOOOOOOOOOOOO=+=-==OOM1       --=)1XXMOOOO                     --- ---===-111XXAMO
+                    -                -+XXXXX++XX+      =+                 -=+-                                       -
+                                      ''''''''''        '                   '
+                                      ..........        .
+                                       -----==-H        =
+                                               C
                =-)AOMZAXZXA1=+--=-=+AOOOOOOMXXOOM-+==-+OOM)       -==+ZXMMOOO                   -   -----=-+=+))ZXAXAO
+                   -                 =+++++   -+       -+                 -=+                                        -
+                                      '''''    '        '                   '
+                                       ...              .
+                                        =
              -++ZMOMXX1ZZZO)+=))--+1MOOOM)=   -ZZ==-===MOA)  -  ---)++1XMMOOO                  ----- =-=====)+1ZZ1Z11O
+                  -       -          =++                +                 -+-                                        -
+                                      '                 '
+                                                        .
  - -        -XMOOOOAAXAAAOZ)+)))11AOO11=-=-  =1MM++====ZOA+    ---=+1ZAOOOOO=               ---=-+==)+++=)1)))1)1ZXAMM
+               -==-      -         --                   -              --=++
+                                                                           '
+                                                                           .
            +OOOOOOMMMMAMMA)))++1)MOA=----=+++ZMOO+===-=ZMX=   ----+)ZXAMOOOO             -+++=+)1)))Z)+==1X11)1ZZXXOMO
+            -==+++                +            =-                       -=+=                                       - -
           +OOOOOOOMAAAMXM1+)++))ZOO= ---++1ZZAMOA++==-=AMZ-   ---=))XAMOOOOM            -++)1)1111Z1Z)))+))+))Z1XZMMOO
+           -++++=-               +-            +                       -==+                                         --
+             ' '                 '             '                          '
+                                 .
          -AOOOOOOXXX11ZMM)++++=)OOO-   ---=++1AM1=-- -=AM)     - -++11AXMOO              --=1+)1+)1111+--=---=+))11ZAZ
+           +++++-               -+=                                      -+
+            '''                  '
+            ...                  .
+                                 =
         -1MMOOOOOAZ1ZZZMA++==+=)MOOA-   ---++1MO1-=---=MO1      ==+1XAAMOOO              -=)ZXXXMXXXXZZ+)))1Z11ZXXXOMM
+            -=+--                =-            -        =               --+                                        -
          ZMMOOOOOXZXZXZ)+++-=)))+==+=  -  -  -+A)-===-=AM1    ---+)XMMOMOOO             -=))11XZAAAXZZZ)))))1)Z1ZAXMOO
+            --=--                                                     - =+=                                         --
+                                                                         '
         ---ZMMOMMXZAAAA1=+=+=++MX1Z11ZZ11))=  -++-==-=)1Z+   ----+ZXMMOOOOO            =Z111XZAAMAMMAXZ1)Z)X1Z1XXMMMMO
+              -                                                       =-=+-                                          -
            AOOOOAZZ1Z1Z+==)=)+-  - ---1OOOOOO  -==-==-=-==     -=)1XMMOOOOZ          -+MAOMXXZAAOMOOMAZZ1)11))1AXAAMMO
+            +++=                       =+X++-                         -==+               -      - --                 -
+            '''                         ''''
+            ...                         ....
+             ==                         =-==
            AOM-=XAAAAX- -+)++=          -)OOO)-====++==-=-    --=1ZAMOOOOOX          )MMOOOOAAAMMOMMAAXZ11Z)1ZXZAXMAMM
+            +                             =++                        -==++              ++=-     -
+            '                              '                             '               '
+            .                              .                                             .
+            =                              =
             AM+1XAXAA1  =+)))-        =+ZZMA+  1+===-+=--    ---=)ZMOOOOOOX         -ZMOOOOOZAAMMOMO1XXZZ)1Z1Z1ZXXXXAM
+                                                                    --=+++             -+++-     - -
+                                                                         '              ''
+                                                                                         .
            --1AMAMAAX1  ++=)=       --XMOOO)- +MZ++++)+-=- ----=)1ZMMOOOOOM        -=MMOOOOOMMMMOOOMAMMZX11XZAXXAAAMOO
+                                        ++-                          ==+++             =+++-    ---                 --
+                                         '                              ''              '''
+                                                                         .              ..
            -  )XAXXXA1 -))===       -1OOOA=  -MOZ))+=++ =-   --=1)ZMMOOOOOO          XOOOOOOMMMOMMOMXAZZ111X)11Z)XZAAA
+                                      -++      -                     ---=+-           -=+++-   -  -
+                                       ''                                '              ''
+                                                                                         .
           -==--1ZAXXXM1=+++)+   ---)ZAMX= -+MMX)--+=-+=-=  -- --)ZZMOOOOOOO          =MOOOMMMMOMOOMOMMOAXXZZ11XZXXAMMO
+                                                                    -==++++            -++    - -= -  -              -
+                                                                        '''
+                                                                         .
            =++1AZXZZXOO)+=+)+1ZZZZAXZ1)===1AA+-  =+=++=+=  ---+)1XAMOOOOOOO          -)XMAAMMOMOMOMMAMMMZXXAZXXAAMMOMO
+                     --                                             -++++++                  - - -                 - -
+                                                                       ''''
+                                                                         ..
            -=ZXAXXZ1XMZ==-))+AOMX1)---+=+--      +1)1))+=- -==+)ZXOOOOOOOOO=        - -)1ZXXOOMOOMOAMMMMMAAXXAAAMMMOOO
+                              +                                   -==++++++                 -- -- -                ---
+                                                                     ''''''
+                                                                       ....
+                                                                        = =
             -)XMAXZZXA)=)+1)1+Z)    -- -        -))++))1- --==++XAMOOOOOOOOO        -=-)ZZZAOMMOOOMOAMMAMXAXZXMMZMOMMM
+                                                                   -+++++++=                -  --- -              -
+                                                                     ' ''''
+                                                                        ...
+                                                                         =
             --1AZZZZXA+=+))+)=-                -=)++=+)1- ---==)1XMOOOOOOOOO        ---+)Z1ZXAMOOMOA1AAXXMMXZXMMXMMOOO
+                                                                   -=+++++++                   -- -                ---
+                                                                      ''''''
+                                                                       .....
+                                                                          =
               -ZXXXZZZ++++===-         --===-++)=====-11 -- -=+1ZXOOOOOOOOOO)        --==+)1ZXAMMMXZZZ11ZZ1Z11Z1XMMOOM
+                                                                  -=++++++++                                       --
+                                                                     '''''''
+                                                                      ......
+                                                                          ==
               -ZXXXZZ1-====++     - --+)111XXZZZ)))+++1Z   --=)1XMOOOOOOOOOOO        --+1)1XMMMOMMXZ1X1Z11ZZXAAXMMMMOO
+                                                                  -=+++++++++                  -                    --
+                                                                     ''''''''
+                                                                       ......
                1ZXX)11--=+===-    --=))XAAMMMMMM))+1++1= - -==)1MMOOOOOOOOOOOZ        -+))XMMMMAAMAXZ11ZA1XZAMMMMMOOMO
+                                                                  -++++++++++                                     -- =
+                                                                     ''''''''
+                                                                        .....
+                                                                            =
                1ZZ1ZZX====--=   ---+)1ZZXMMMOOOO)=++=+)-   -=+ZZMOOOOOOOOOOOOO       - =)11XXAXZZXXXZAZZZZAAAMOMOOOOOO
+                                            ----                 -==++++++++++                                - ----==
+                                                                     '''''''''
+                                                                     .........
+                                                                        =  =
                XAXXX1Z+=+===+   -=))1ZXMMMOMMMMM))==+=1   --=+1XMOOOOOOOOOOOOOO      -- -=+111Z1)ZXZ1111ZZAAAMMMMMOOOO
+                                          -                      --+++++++++++-                                   --=-
+                                                                    ''''''''''
+                                                                     . .......
+                                                                         ==  =
               -ZXZZXZ1==+===+  --+1Z1ZZAZAAMXXAAX1+1)+)-  --=)ZAMOOOOOOOOOOOOOO1       ---=++)))++1))11111ZMMMAOOMOOOO
+                                                                 -=++++++++++++                                -- -=--
+                                                                   ''''''''''''
+                                                                      .........
+                                                                           == =
               -X1XZXZZ--=++=--=)1)1XZAMMAMOMAMMMAXMMMA+     +1ZAOOOOOOOOOOOOOOOO)        =--==-)=))111Z1ZXXMMMMOOOOOOO
+                                          -                     --++++++++++++++                               ----===
+                                                                   '''''''''''''
+                                                                    ............
+                                                                            ====
               -ZXZXZXM)==++- =11ZXXAAXAMAAAMAMAAAMAMAA=- - -=)1XMOOOOOOOOOOOOOOOO=     ------==+))=1ZZZZXXAAAMMOOOOOOO
+                                                                 ==++++++++++++++                              ---==+=
+                                                                   ''''''''''''''
+                                                                     .. .........
+                                                                           ======
               =XX1Z1ZM1==)Z))ZAAAXXAXXAMMAAAAAAAMMAMMA-   --=+1XMOOOOOOOOOOOOOOOOOZ     ------=++1+)ZZZXAAMMMMOOOOOOOO
+                                                                 =++++++++++++++++                            --==-=+=
+                                                                    ''''''''''''''
+                                                                    ..............
+                                                                         === == ==
               -XZZXZXOZ)XMMMMAAAXXXXMAMAAAMAMAAXXAAMMZ     -+)XMOOOOOOOOOOOOOOOOOOO  - -----=-=+))11XXZXMZMMMOOOOOOOOO
+                     -                                          -=+++++++++++++++X+                          ----===++
+                                                                   ''''''''''''''''
+                                                                    ...............
+                                                                          ===== =-
               -ZX1ZZZXAMMXMMAXZXZZZZZXZAXAAXZZXZXAXAZ=   ---=)ZAOOOOOOOOOOOOOOOOOOO  ----------)+Z11ZXZMXMMMOOOOOOOOOO
+                                                                -=+++++++++++++++++                         ------==++
+                                                                   ''''''''''''''''
+                                                                       ............
+                                                                        ===   =====
               -ZZZZZ++ZAZAAXAXZAZZZXZZZ1)))))1ZXAOMOZ    --)1ZZOOOOOOOOOOOOOOOOOOOO    -==--==+)+11Z)AAMMMOOMOOOOOOOOO
+                                                 - -           --++++++++++++++++++                       -- -==+===++
+                                                                   ''''''''''''''''                                  '
+                                                                     ..............
+                                                                         =  = =====
               -XXXZ1+=ZAAAAAXXAMMX1+)=+)-++=====+1XA-   --=+ZZAMOOOOOOOOOOOOOOOOOOO      -+=++)1+1ZXAMMMOMOOOOOOOOOOOO
+                                                                -++++++++++++++++++                     - ----=++==+++
+                                                                    '''''''''''''''                                  '
+                                                                     ..............
+                                                                        == = ======
                Z1XXZXXMMAAXXAOOMZ===+=+-=--++===-+)-   -==+1AAMMOOOOOOOOOOOOOOOOOOO        =)1ZZZXXAZZMOMMOOOOOOOOOOOO
+                             --                                 ==+++++++++++++++X+                    -  ===+++++++++
+                                                                    '''''''''''''''                           ' '' '''
+                                                                     ..............                                  .
+                                                                        ==   ====-=
         -     -XX111XAMAMMMMOO1-==++===1+=+)+1+))+--=-)=-)1XZMMOOOOOOOOOOOOOOOOOOOO-          )AAXAOOMMOOOOOOOOOOOOOOO
+                            =-                                 --=+++++++++++++++X+                --  --=+=++=+++++++
+                                                                   ''''''''''''''''                              '''''
+                                                                     ..............                                 ..
+                                                                       === ======-=                                  =
         -      X)+)AAMMMMMOOM1++++1))=))1))++)))==++)1)111ZAMMOMOOOOOOOOOOOOOOOOOOO            -=1AMMMOOOOOOOOOOOOOOOO
+                          -=                                  - -=+++++++++++++X+XX                   -====+++++++++++
+                                                                    '''''''''''''''                           ''''''''
+                                                                     ..............                            .......
+                                                                     == ====  =-=--                             ======
         --     X+-)MXAMMMOOZ)====++))1XZMAOMA)+==))1ZZXAAXZMMOMMOOOOOOOOOOOOOOOOOOO-             --=))ZXMOOOOOOOOOOOOO
+                         --               -                  -  --+++++++++++++++++                      ---++++++++++
+                                                                    '''''''''''''''                           ''''''''
+                                                                    ...............                            ......
+                                                                        = =========
         --     Z-=AOAZAMMA1+==+=+=)ZMOOMOMMM+===+111XAAAMMMAOOMOOOOOOOOOOOOOOOOOOOOX              ---=+))ZZAMOOOOOOMOO
+                   -                 -- -                   -- -=++++++++++++++++X+                          ------ --
+                                                                   ''''''''''''''''
+                                                                    ...............
+                                                                       =   = ====-=
         =-     1)ZAZZXMAM++++)+++)XOOMMOOM+==+)+1ZXXAAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOO               - --==))ZZ11ZXXAZZA
+                                   --  --               ---=+++++++++++++++++++XXXX-
+                                                                '''''''''''''''''''
+                                                                  .................
+                                                                     ======  ==----
         ==     )1XMMMXAM)=+=++)+)AOMOMOM1+===+1ZZAXMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO              -- ----=+)111ZZ1XXXX
+                                  - - -                ---=+++++++++++++++++++XXXXX+
+                                                             '''''''''''''''''''''''
+                                                              ......................
+                                                                  = = ========----H
+                                                                                  C
         ==    -1XAAAXAX1=++++++)AMMMMMZ==--=+1ZXMAAMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                -    ---+++))1)Z1Z
+                                                     ----+=+++++++++++++++++++++X+X+
+                                                             '''''''''''''''''''''''
+                                                              . ....................
+                                                                     ====  =====-=-=
         -=    -XAMMAMAZ=++=+=+)MMOOMOX---++)1Z1AAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                  -- =-==-++1))1ZZ
+                                 -- -              --===+++++++++++++++++++++++++XX+
+                                                         '' ''''''''''''''''''''''''
+                                                             . .....................
+                                                                 = ==============--=
         --    -AAXAAM1===))+))AOOMMM1 --=+)1Z1ZXAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                    ---===+)))Z111
+                               --                  ---+==+++++++++++++++++++++++++++
+                                                         '''''''''''''''''''''''''''
+                                                             . .....................
+                                                                =  =  =============
         - -   -AAAXAZ1--+)+++)MOMMX)---=++))XX1AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ           -     -- ----==++=))1Z
+                               -                 ---=+=++++++++++++++++++++++X+++++X
+                                                        ''''''''''''''''''''''''''''
+                                                         . .. ......................
+                                                               =  = =========-=====-
           --  -XAAZXZ1--=-==+)OMMZ---=++)))1AXMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                    --------==-++
+                              -                  ---=+++++++++++++++++++++++++++XX+X=
+                                                      ''' ''''''''''''''''''''''''''
+                                                          . ........................
+                                                               =   ==  = =======--=-
            ---=AMMZMXZ-==+==+1OMX- -=++)111ZXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO            -        -------=-=++
+                              -                ---==++++++++++++++++++++++++++++++XX+
+                                                      '''''''''''''''''''''''''''''''
+                                                         ............................
+                                                               == ========= ======--=
           =+--=ZAX1Z1) ---=-=)AZ- --)))XXXAAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-                 -   -------=---
+                                              ---=+++++++++++++++++++++++++++++++++X+
+                                                      '''''''''''''''''''''''''''''''
+                                                        .............................
+                                                              == =  ===== =  ======-=
           -Z)=1AAMXAAZ+-++-++)=--=+)11ZAMAMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO-           -     - ----=-======-
+                                           - ---=+++++++++++++++++++++++++++++X++++++
+                                                  ''''''''''''''''''''''''''''''''''
+                                                      .. ...........................
+                                                             =================-=====
            )1+1AXXZXAX===+-++---=+)11ZXMMOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-          -      - -------=+====
+                                         ---- --==++++++++++++++++++++++++++++++++++
+                                                         '''''''''''''''''''''''''''
+                                                          ..........................
+                                                                 ======= ==  ======
           -11+1AAXXXAA+=-++=  -+11ZXXAAOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA11       - -     -  --======+===)+
+                                       - -===-==+++++++++++++++++++++++++++++++++++
+                                                  '   '''''''''''''''''''''''''''''
+                                                       ............................
+                                                            = = == ==  ============
           -))=ZMMAAAAOZ+)+-- -+))11AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)11         ---  --   -----=+)====+
+                     -               ---===++=+=+++++++++++++++++++++++++++++++X++
+                                                ''''''''''''''''''''''''''''''''''
+                                                  .  .............................
+                                                          = = =  ===  =========-==
            +1))AAXAXAXA==-  -+)1Z1MAMOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)+)1)        -- - --=---=+==++))=)+=
+                                     --+=  -=++++++++++++++++++++++++++++++++++++
+                                                ' '''''''''''''''''''''''''''''''
+                                                       ..   .....................
+                                                                 =    =   ==  =
         -- =1)1XAAAAAAA+- -=+11ZXXMMOOOA+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+=)1ZZ     -    ---  =--=--=-=+))+++=
+                                    ---   -++++++++++++++++++++++++++++++++++++++
+                                            ''''''''''''''''''''''''''''''''''''
+                                             .   ...............................
+                                                            == = =========== ==
         -= =11ZZZXAAAMA  -11)XXXZAOOOA- -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)=-+ZX-     -    -------=-=--=-+==++-
+                                  -=-    -+++++++++++++++++++++++++++++++++++++=
+                                          '''''' ''''''''''''''''''''''''''''''
+                                            ..   ..............................
+                                                      ===       === ===========
         -)-=))XZ=1XXAA--+)1ZZXXAOOMO+  -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZ)1+1+       -- --=-- -----=--=-===)
+                                -- -     =+++++++++++++++++++++++++++++++++++++-
+                                          ''''''''''''''''''''''''''''''''''''
+                                          ....................................
+                                             =       =     == = == === =======
         -Z==11MX)ZMOX=-=+))1)1ZX+==-  -1MAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAOOOA111     -- --)=------==----=+====
+                   -                       -++++++++++++++++++++++++++++++++++   ---
+                                            '''''''''''''''''''''''''''''''''
+                                            ......   ........................
+                                             = ==            === == == = ==
         -1))1=1))1Z)= --=+==-=1=     )ZZ=-1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAAMMMMOMAA-    - ----=-----===-- --====-
+                                           -+++++++++++++++++++++++++++++++++       -
+                                            '' ''''''''''''''''''''''''''''''
+                                             .  ... ........................
+                                                         ===     = ====  ==
          +1+- -+))=-----=  ---)-   -1MX--ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMMOOO1    - ---=-==-- ===-==-===--=
+                                           =+++++++++++++++++++++++++++++++++++      ---
+                                            '''''''''''''''''''''''''''''''''''
+                                            ... ..............................
+                                                 ===  = =   =======  === =  ==
          =+   -11)+=-----   --=-  =AOM  1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZXOOOOMXAAMAMMX     -------- =---- -= --====
+                                    -     --++==++++++++++++++++++++++++++  +XX+
+                                                ''''''''''''''''''''''''''   '''
+                                                 . .... .................    ...
+                                                            = =    =  = =    --=
         --    =)1)+=--- --  ---=)1XM)--)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1ZMOOM++)ZMMMMM-    - ---=--==----- -==++)==
+                                         +++++++++++++++++++++++++++++++=    ++
+                                          ''''''''''''''''''''''''''''''     ''
+                                          ......... ....................     .
+                                                     ==   == ==    =  =      =
              -))1)==----   -=)1ZXZ1=-1XOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOAXAXOOM)=-=)AMMMO----  ------- ----=---===+==+
+                                       -+++++++++++ +++++++++++++++++++-    -+          -
+                                         '''''''''    '''''''''''''''''      '
+                                         .........    .................      .
+                                           ==    =     === = == == =         =
             -=++=+))+1))1)ZZXMOMX--+ZMOOOOOOOOOOOO)AMOOOOOOOOOOOOOOOOOOOXXAXMOM++--1AMMMO1   - ----====--- ====-===-==
+                              -       =++++++++++-   ++++++++++++++++++-     +          -
+                                       ''''''''''    '' '''''''''''''''      '
+                                        .........     . ...............      .
+                                        ====    =     =  ==    ==   =        =
             -=--1XMOMOOOOOOOOO+- -)OOOOOOOOOOOOOA-)OOOOOOOOOOOOOOOOOOOOX1ZXXMOO1 -ZOMAMOOA=--- - --=--+==-=-=-==-==-==
+                   - --===++=-     -=++++++++X++   =++++++++++++++++==+      +-    -   --
+                                     '''''''''''     '''''''''''''''  '      '
+                                     ...........     .. ............  .      .
+                                        = =  -==     =    = =     =
           --+)1ZAOOOOOOOOOOA=-  -+MOOOOOOOOOOOOZ =MOOOOOOOOOOOOOOOOMZOOZZ)1ZMOM++)AMMMOMOO--- ----- =---=====---==-++=
+                 -=+++++++-        =++++++++XX+    ++++++++++++++++  -+      +        - --
+                   ''''''           '''''''''''     ''''''''''''''    '      '
+                   .....             ..........     .............            .
+                                     =======HH=      =
+                                            CB
+                                             V
          --)1MOOOOOOOOOM+--    -=ZOOOOOOOOOOOOO -1MOOOOOOOOOOOOOOOMZZOOZZ11ZOOMZZMMOMMMOOO1 ----------===--==-==---===
+              --=+++++=           -=+++++++XXX-    +++++++++++++++   -+     -+     -   ---
+                    ''              ''''''''''     '''''''''''''''           '
+                    ..              ..........      .............            .
+                                      = = =HHH      == =        =            =
+                                           CBB
+                                            V
            =ZMOOOMAZX1       -=)ZMOOOOOOOOOOOO--+XOOOOOOOOOOOOOOOOAZXMOZXZ1ZMOOO1+)+1ZZXAMZ=-  =--==-==-------=-=-====
+              ---                 --++++++XXX+    +++++++++++++++-    +      ++-
+                                     ''''''''      '''''''''''''             ''
+                                      .......      ... .........             ..
+                                       = =HHH        = =  = =                 =
+                                          BBB
+                                           V
            --+)++-       ---=)AMAAOOOOOOOOOOO--+XOOOOOOOOOOOOOOOXAMMAOOX1X)XMOOZ=----==+)1Z=----=====+-=====+=-++)=+==
+                                  --=++++XXX+    -++++++++++++++     =+      +=
+                                      '''''''     '''''''''''''       '      '
+                                      ......      .............       .      .
+                                       ==HHH       =    ==== =               =
+                                         BBC
                        ---=)XMOMMMOMOOOOOOOA--+XOOOOOOOOOOOOOOOOAXAAMOOMZZZZOOA)-===---=+1Z==---=====+=+=+===+========
+                              -   - -=+++++     -+++++++X+++++++     ++     -+
+                                      '''''       '''''''''''''      ''      '
+                                       ....       ........... .       .      .
+                                       ===        = ====- =
                   - -=++))1MMMOOOOOOOOOOOM+  +ZOOOOOOOOOOOOOOAOOXZXZXOOMAZZXOOOZ---=+))1ZZX--- -=-====+=-===-+=======-
+                              ----==+++++      -+++++XXXX+++- ++     ++     =++
+                                     ''''       ''''''''''''  '       '      ''
+                                      ...        ...........          .      .
+                                       =           ==----                    =
                --=1111ZZXZAOOOOOOOOOOOOO1- -)AOOOOOOOOOOOOOX)ZOOZZX1ZOOMOOOOOOOMXXXAOMMMMOO=------=-=+======-=+=+=++=-
+                           ===--++++++++      -++++++XXX++=   +=     =+ -+++++=     -    --
+                                  '''''         ''''''''''    '       '   ''''
+                                   ....         ..........            .    ...
+                                    = =         = = =H--=
+                                                     C
             -- -)XMMMMMMOMOOOOOOOOOOOOM-  =ZMOOOOOOOOOOOOA111ZOOMXAZXOOOOOOOMOMMMOOOMMMMOMO+-------==-++-==+---=++)+)-
+                        - --=+++++++++       =++++++XXXX+     +=     ++++++= -   ---    - -
+                              ''''''''        '''''''''''             '''''
+                                ......         ..........             . ..
+                                 = ==          =====----                =
             ---+1AMMMMMOOOOOOOOOOOOOM+  +MOOOOOOOOOOOOOOOZ111ZOOAAZMOOOOAXXMOAAOMMOOMMMOOOO)- -- ----==++===- --=+===)
+                       ---=+++++++++      =++++++++X+XX+-     +-    -+X+    -  -  --   ----
+                            ''''''''        ''''''''''''      '      '''
+                             ......         ............      .      ..
+                                  =               =-=--=             =-
             --=ZAMOOOOOOOOOOOOOOOM1-  -)MOOOOOOOOOOOOOOOZZZ)1ZOOXXOOOOOZ11ZZAAOOOOMOOOOOOMOZ-   ----==--==+==-=-=+====
+                  ------++++++++=        +++++++++XX++++      +-  -+++-       ---- ------ -
+                          ''''''          ''''''''''''''           '''
+                           ....           ..............           ...
+                                               = =H-===
+                                                  C
              -1OOOOOOOOOOOOOOZ+--     )OOOOOOOOOOOOOOOOO1ZZZ1XOOMOOOMXA1)1ZAAAMOOOMZZ1)11ZAX=-------=-===+==--=-=-=+++
+               ---++++++++++-          -=+++++++XXX+++++      +- +++           ---
+                     ''''''              '''''''''''''''         ''
+                       ....              ...............          .
+                        =                 === ==-H-====           =
+                                                 C
        -     )MOOOOOOOOOOOZ-        -ZAOOOOOOOOOOOOOOOOO))+)++OOOOMZZ11ZZ)11AMM1-+)=   - --)-==--==--=++++-++=---=-===
+               =+++++++++-             -+++++++XXX+++++-      =+++
+                ' '''''''               '''''''''''''''        '''
+                  .......                ..............        ...
+                     =                    ===  -H-====          =
+                                                C
             =OOOOOOOOOOA)-       - -=ZAOOOOOOOOOOOOOOOOOZZZ1)ZOOOOXXXXXXMMMOOOO+ -)MMMZZ1Z1Z- ------=-==+)====- ---=-=
+             -=+++++++=                =+++++++X++++++=-      +X+-         --++
+                ''''''                  ''''''''''''''        '''            '
+                . ...                    .............        ...
+                   =                      =====-== ===         H=
+                                                               C
            -ZOOOOOOOAZ)-       --==))ZMOOOOOOOOOOOOOOOOOA1111MOOAZZZZZXXMOOOMX1))11XMOOMZZXX--  ----- =-====------ -==
+             -=++===                   =+++++XX+++++++=-      ++         +++         --
+                                        ''''''''''''''        '            '
+                                        ..............        .
+                                         = ==--=  = =         =
    -      -)ZXAMXXZ1+=-      - =)ZZZXXOOOOOOOOOOOOOOOOOOOMZZOOOAZXXZ1ZXOOOA)-=)))Z1ZZAAOOMXZ----- ----=--=+=---==-====
+                                      -++++++X+++++++++++   =++        +++             --
+                                        '''''''''''''''''    '          ''
+                                        .................    .          .
+                                          ===-==      ==     =
 --- -   --+111))++=-----    =+1XXXZMOOOOOOOOOOOOOOOOOOOOOMXOOOMXAXXZXMOOM+==+)11Z1+XZXXAMOOO--  - -- --==-------==---=
+                                    -==++++XX+++++++++XX+  =++        ++                 =+-
+                                       ''''''''''''''''''   '         ''
+                                        .................   .          .
+                                          =--==   ====--=   =
 -=-=- - --++=----=+===+--==+)XMOMMOOOOOOOOOOOOOOOOOOOOOOOZMOOMAAAAXAOOOZ++++1)+)))+==----+ZMZ-----------=--=---=-=+---
+                               -  --+++++++++++++++++++++  ++       -+-
+                                     '''''''''''''''''''   '
+                                        ..... ..........   .
+                                         ====      ====    =
 )=++=++=++)=-  --++))1)++ZAZMOOOOOOOOOOOOOOOOOOOOOOOOOOOAMOOMXAAMAMOOM)))1))1ZZ)    -=--=+=))1+= -----------=-=--=====
+                             -=+=++++++=++++++++++++++++  ++       -=
+                                  ''''   '''''''''''''''  ''
+                                  . ..    .   . ........  ..
+                                                  =====
 ))+)-)+)))++-   -+1)1XXMOOOOOOOOOOOOOO1XOOOOOOOOOOOOOOOOMOOOMAMMMOOOA)++)))1ZOOM==)1ZAMMMAAA=-+ZZ+-----=====--===+)=+)
+                        --+=++++++++--  -+++++++++XX++++ ++=     -++         -=
+                            '''''''       '''''''''''''' ''        '
+                              ....         ............. ..
+                                             =====--===   =
 ))+)+==Z)+)=   =+1AAMOOOOOOOOOOOM1)+--=ZOOOOOOOOOOOOOOOOOOOOAMAMAOOX+=)+))+AOOOMZMAAAMAMMMMM=  -1AX= ---------=====-+=
+                     =+++++++++=        -=+++++++XX+++++=++-     -+         +++
+                      '''''''''           '''''''''''''  '        '         '''
+                       ........           .............  .                   .
+                        =  ==                == =-- =    =
 ))111ZZZZ1)-- -=+MOOOOOOOOOOOMZ=- - - -1OOOOOOOOOOOOOOOOOOOMMAMMOOM+=+)+)1OOOOZZAXMMAMAAOMOM- -- =XX)=---==-=-=-======
+                  -=++++++++=           -+++++++XX++++++++-     -+        -++-          - -
+                    ''''''''             '''''''''''''''''       '         ''
+                     .......              ................                 ..
+                         ==                 ====-- =                       =
 1ZXAMMXXAX1====1XMOOOOOOOOOA1=-- - -+1ZMOOOOOOOOOOOOOOOOOOMMAMAMOO)1))++ZOOOMXZAMMAMMAAAMMOM=--  -=+1XZ====-===+===+)+
+                  ++++++++=             =++++++++++++++++-      =-       +++              -
+                    ''''''               ''''''''''''''''                 ''
+                    ......               ................                 .
+                                           = =======   ==                 =
 1XMMOMMMMXZ1+1+ZAOOOOOOOOMZ)=-- -=+)1AMMOOOOOOOOOOOOOOOOOMMMAAMOO1)++)+1OOOAXZXXOMA1)++=)ZXO-------=-+MA1)+--==-=---++
+    -            -==+==--               +++++++++++++-+X+      =+       =++     -          -
+                                        ''''''''''''' '''       '        '
+                                         ............ ...                .
+                                           =====  ===  -                 =
 ZAMOOMOMOAA1Z11ZAXAZMMAZ11))=++)=1ZMMOOOOOOOOOOOOOOOA1OOOAAMOOMOA=-==-=OOOAZZXAXX)---==)))11-=-- -==--=)MM+++=====+=1)
+   =- - -                            =++++++++++++++  +X=   -- =       -++
+                                       '''''''''''''  ''                '
+                                        ........ ...  ..                .
+                                            ==    ==  =-                =
 XMOOOMOMMMMAAXXMM1+=11ZX1ZAXXXMMOOOOOOOOOOOOOOOOOOOM+XOOOMMOMMOOZ))1)+AOOMXZXXXZ+=)1MOOOOOOX-=---=---==-=XMA1-=+-=+==)
+  --- -                         --==+++++++++++++++   ++-  -  -+       ++            ------
+                                     ''''''''''''''   ''       '       ''
+                                     ... ..... ...    ..               ..
+                                         ==      =    ==               =
 +ZMMMOOMOOMMMMAMX1=+1ZAMMOOOOOOOOOOOOOOOOOOOOOOOOOZ++)OOMMMMMMOO))1)+1OOOXXZAAZ++ZAMOMMMOOOZ----==- --==-++ZM1)=-=-==-
+     -- --               -=--++++++++++++++++++++-    =+      ==      =+=           -   ---
+                               ''''' '    '''''''                      '
+                                 .        ... ...                      .
+                                                                       =
 - -=ZOOOOOOOOMMOA1+ZXOOOOOOOOOOOOOOMMMMMOOOOOOOOA)11)1OOOOMOOOOO)))Z)MOOOAAXAOMZXMOOMOMOMOOZ------=-----====)1ZZ====-=
+     --=+==--  -     --+++++++++++-     --++++++      ---- ---+-      ++-    -    -- - - --
+                         '''''''           '''''              '       ''
+                         .......           .....                      ..
+                            ===                                       ==
  -   =)MOOOOOOOOMMMXMOOOOOOOOOOMMZ1111ZXMOOOOOOO+=+))XOOMMMMOOOX+))+)OOOAXXAMOOMMOMOOMOOMOO=---=-- -=+=+1++++))ZMA)==+
+        ++++==--     -=++++++++          -+++++-      +=    --+      -X+     +=  - -- -- ==
+         ''              '''''             ''''                       '
+                         .....             ....                       .
+                           =                                          -
        )OOOOOOOOOOOOOOOOOOOOOOOMAXZ11ZZXMOOOOOOZ)+)++AOOMMMMMOOZ+))+)OOOXAXXOOOMMMMOMMMMOOM- -----=-====+=+====-)1A1)=
+        -+++++---------=++++++-          =+++++       ++     -+      -+=    -++    -    -=
+          '               ''''            '''''       '               '      '
+                          ...             .....       .               .      .
+                                            ==                        =
        -OOOOOOOAAMMOMOMAMOOOOOOOOOMMMMMMOOOOOOO1+)===XOOMMOOMOOZ))+=+OOMXXZZMOOAOAMMMMMOMOO=-----=--====++++===+==1XA1
+        =+--++-    - -   -+++++---      -++++++       +=  -- -+      =+      ++ -      - --
+                            '            ''''''       '               '      '
+                                          .....       .               .      .
+                                             =        =               =
        =OOOOOOX1ZZ1MOM)))1XMOOOOOOOOOOOOOOOOOOOZ)+===AOOMMMOMOOZ)1)=1OOOAAAAMOOMMMMMMOOOOOO- -------+====))++)+)++1))M
+        ++-=+=      -       =+++++++++=+==+++++       +=   - =+      =+=     +-      ------
+         '  '                '''''''      '''''       '               '      '
+                             .....         ....       .               .      .
+                              =  =           =                        =      =
        -OOOOOOZ1X1ZZOA+===-=MOOOOOOOOOOOOOMOOOOZ====)MOOOMMOMOOZ1=)+)OOOXXAAMOMAOOOMOOMOOOO------=-===)+)))+)++==+=-++
+        =++=++      =        +XXXXX+++++=- ++X+       +=-  - -+      =++     =  --- -- -==-
+         '  '                ''''''''' '    '''       '               '
+         .                   ........       ...       .               .
+                             =HHHH-         =-                        =
+                              CCBC
        =OOOOOOXZXZXAOM)++)==OOOOOOOOOOOOOOMOOOOZ=)=+1MOOMMMOOOOZ)1)))MOOAMAMMMX1MOOOOMOOOOX----=--==-=)))1+)+)==+=+++)
+        ++++++      +       -XXXXXX++=+++= ++X+       +=   ---+       ++         ---- ---+
+        ''' '                ''''''''  '   ''''       '               ''
+         .  .                ........       ...       .               ..
+         =  =                HHHHH-=        =-                        =
+                             CBBBB
        =OOOOOOZXZZZMOM+))+++OOOOOOOOOOOOOOOOOOOZ-++++MOOOMOOOOOZ)111)ZOOOMAMMX))ZAOOOOOOOO1- =- -=====+=)+)+)+=))+)+=+
+        +++++=      +       -XXXXX+++--=+++++X+       +=- ---=+       ++-         -------=
+        '' ''       '        ''''''''   ''  '''       '               ''
+         .  .                .......        ...                       ..
+            =                HHHH-==        =H                        =
+                             CBBC            C
  -     -OOOOOOZ1Z)1ZOM+-====MOOOOOOOOOAOOOOOOOOZ)))+)ZOMMOMMMOOZ)))11)OOOMAMMMZ1+)XMOOOOOO+-=-----=-+)==)111+1)+=))1)+
+        +++++=      +        +XXXXXX+- -+++++X+       =  -   =+       =++           ---=-=
+         '' '                ''''''''    ''''''                        ''
+         .  .                ........    .. ...                        .
+         =                   =HHH-H-      = =H                         =
+                              CCB C          C
 -      =OOOOOOX1ZZ1AOO+=++=)OOOOOOOOOM1AOOOOOOO1=Z)))XOOOMMAMOOA1))1)1AOOOAAMOAXX1ZZXAMMMA=------+=+=))+)+1)++1++)1)1)
+        +++=+-      +-      -+XXXX+X+   -++++X+       ---    =+        +X=   -
+        ''' '       '        ''''''''    ''''''                        ''
+         .                   ........    ......                        ..
+         =                   =-HHH=-         -                         =-
+                               CBC
        -OOOOOMAZZZZAOO+=-==)MOOOOOOOOO+)OOOOOOOX+)++1AOOOOMMMOO1)11)1)1OOOOMMMMMMAZZZ1ZXXX--- ==-=-==))))111))1))ZZ1))
+        =+--+       +-       +++XX++++  -++++++       +---   =+        -++-
+         '          '        ''''''''    ''''''                         ''
+         .          .        ........    ......                         ..
+                                --  =    == ==                          ==
        -MOMMOOAZZZXMOO+++)+1OOOOOOOOOOA)XOOOOOOZ+))11MOOOMAMAOOZ)1)Z1))ZOOOOMMMMMMAAAMAMMM- ---=--+=+)1+++11111+)+))))
+         =  --      +-      -+++++++++   ++X+++       +=-    ++         -++=
+                    '        '' ''''''   ''''''       '                  ''
+                    .        .  ......    .....       .                  ..
+                                    =     =-==                           ==
        -1MMMOMXZ1ZZMOM++)++1OOOOOOOOOOOAXOOOOOOX+=+1)MOOMMMOOOOZ111111))1OOOOMMMMMMMMMOOOA   -=-==+=)1)1)111)1111)Z)11
+            =       +       -+++++++++=  ++X+X+       +-   --==          -+++         ---
+                    '        '''''  ''    '''''       '                   ''
+                    .        .....  ..    .....       .                   ..
+                             ==  =   =    =-=-                            ==
         +MOMOMX1ZZZAOO=++=-+MOOOOOOAOOOOMOOOOOOX)-)))MOOOMAAMOO1+))Z1+1)11MOOOMAMMAXMAAMMA- ----====+11)1=1)1Z))=)++))
+          - -       +-       XXXX+= -++= =+X+++       +--    -=            +X+
+                    '        '''''   ''   '''''       '                    '''
+                             .....   ..   .....       .                    ...
+                             ----    =     -==                              H=
+                                                                            C
         =MOAOMAZZXZMOO+++)++MOOOOOO)AOOOOOOOOOOOOOOXZMOOMMOOMOO1111ZZ1111)1AOOOOAOOMOMMOMA  - ---=+=))11ZZXZ)11Z))111)
+          - =       +-       +XXXX=  ++===+++++++=-   +-  -- ==             +++- -- -  -
+                    '        '''''   ''   '''''''     '                     '''
+                    .        .....    .   .......     .                      .
+                             =HHH-         =====      =
+                              BBB
         +OOMOOAAZZZMOM=+-+1)AOOOOOOZZAMXXXAMAMOOOOOOOOOOOOOMOOO+)1)Z1Z11Z11)ZAAXZXXXAMMMM+ --- ----=))Z11ZZ1Z11Z111)1)
+         -= +=      +        +++++-           -++++++++---- -=-
+            '       '        ''''               '''''''
+                    .        ....               .......
+                              ==                 ==   =
         1OOMOOAZZ1XMOM+++1MOZMOMXXXZXZZXZXXXZZXAAMOOOOOOOOOOOOO))1Z1AOM11Z111ZZ))11ZZXAMM=-  ----=+))ZX1X1ZZZXZ11)1Z11
+         += ++      +      -  =                   -++X+=-----=-      =
+            '       '                               '''
+                    .                               ...
+                                                     H=
+                                                     C
        -ZOOMOOX11ZZMOO+1AOOOXZXZ1ZXZXZZXXZXXZZXX1ZXXMOOOMOOMOOO)=)1)OOOMZ1)1Z+1))1ZZZZXZX--- ---=+)1)Z1ZZ1XX)ZZZ))111Z
+         ++ ++      +-   =+=                         ++- -- -=-     -++
+         '' ''      '     '                          ''              ''
+            .       .     .                          ..              ..
+                                                                     ==
         1OOOOOMZXAXMOOOOOOAAXAXXXZZZ1XA1XXXMXZZZAXAMOOOOOMMOOOO)))11MOOOOM11111Z11)Z1)ZMX-- ----=+-))ZZ1ZAXXZZZZ1111Z1
+         ++=++      +==++-                          -++--  --++      +++=
+          ' ''      '  ''                            ''              '''
+          . .       .  .                             ..              ...
+            =       =                                                =
        -+MMOOOXZZXZMOOOOMZZ1XXXAZZXAAMMMMMOMAAAXXXXAAOOOMMMOOOO)))11MOOOOOOMX111Z1Z1X1ZA1----=---=+)11ZZZZZZ1Z1Z111ZZ)
+           +++      ++++                  -          ++-   --+=      ++=++-
+            ''      ''''                             ''              '
+            .       ...                               .              .
+            =       ===                                              =
     -  --+AOOOAZZZ1MOOOZZZ111ZXXAOOOOOMMMMOOOOOOOMXXAOOOOMMMMOO)+)+1MOOOOOOOOOOMXXXXAXXX=---- --=))Z1ZZXZAAAAXZAZAXMXX
+           +++      ++-          -+=--    --==++=    ++--    +-      +=--===++-
+            ''      ''                         '     ''              '      '
+            ..      ..                         .      .              .
+            =       =                                 =              =
          =AOOOMXXZ1AMZZZZZX11XOOOOOAXAAMMAXOMMOOOOOOMOOOOOMOOOO+11)1OOOOOOOMOOOOOMAZAXMO= =--==-++)ZZXXAAAMMMMAAMXAAAM
+           +++                -++=-        -  =++++= ++--- -=+=     -+=---- ==++=      -
+            ''                  '              ''''  ''              '
+            ..                                  ...  ..              .
+            =                                    ==   =              =
          -OOOOAZZZZ1ZZ1X1ZZZMMMOMMMMMMAMOMAOMMMOOOOOOOOOOOMOOOO)1)1)OOOOOMOOOOMOOMMMOOOO-- ----===))1ZZAXMAMAMMMMMOMMA
+          -++=                 -        -  -   --=+++X+--- -=+-     -+=-- ---- --   --=+                          -
+            '                                     '''''      '       '
+            .                                     .....              .
+                                                    =-=
      -  -+OOOMXXX1XZZZZZZXMOOOXMMMOMMMAMMMOOOOMMOOMOOOOOOOMMOOOZ1111MOOOMOMMMMMMOOOOOOOO --=-====+))11ZXZXAAAOMMAAMMOM
+          -+-              ++-    -       ----  -- -+++---  -+-      +=- -      --------                     -      -
+                                                    '''              '
+                                                     ..              .
+                                                     ==
          +OOOAX11ZXZZZXZZOOOMMMMMMMMMMOOMOMMOOMMMMMMOOOOOOMMOOO)))11OOOOOMOMOOOOMOOMMOOO ---- =+-=))1Z)ZXAMOAAMMAAOOMM
+          =+-            -==          -- -  --      --=---  -=-     -+++= - ---- --  -=-                   -      --
+                                                                     ''
+                                                                     ..
          +OOMXAXXZXZ11ZZMOMMAXMAAXXMOOOOOOMOOOMMMMOMAOMMMOOMOOO)1)11MOOOOOOMOMMMOMMMOMOO-  ------=)1Z1AXAXMMMMMAMMXAXA
+          ++             -          -===++ ---    -  -   -- -+-      +X+++= -   -   - --
+                                                                     '''''
+                                                                     ....
+                                                                      -==
        - -OOOMXXZZZZ1Z1MOOMMMMAMMAZMOOOOOOOOOOOOOMOOMMMMMMOMOOA)+1)-XOOOOOOOOOOOOOMOOOOA - -=--=-==+11XXXAAMOMAMMAAMMM
+          -+-           --          ++++++--++++= --      - --       +-=+++++++--- ----                     -
+           '                        ''''''  '''                      '  ''''''
+                                     .  .   ...                          ....
+                                              =                          ===
          =OOOAXXZZZZ11ZMMAAMMMMMOOOOOOOOOOMOOOOOOOOOMMMMOMOOOOM)))+)OOMMMMOOOOOOOOOOOOOM ------=-++)))ZXXMMMOOMOOOMMMM
+          -+-                   -=--+++++= -+X+++++-    - ---=      -+    ++XXXX++++=-+                     -- ---
+           '                         '' '   ''''''                   '     ''''''''
+                                        .   ......                         ........
+                                             -=                            =HH--==
+                                                                            BC
          -MOMAZ1ZZ1ZXZMMMMMMMMMOOOOMOOOOOOXMOOOAAOOOMMMOMMMMMOM)+)11OOMAMAMOOOOOOOOOOOOO- ---   -=)+)11ZXAMMOMOMOMOMMM
+           +                   -+++ -++++=  +++  ++=   -     -      -+     =X+-=+++++=+=                    - - - -
+                                 ''     '   '''   '                  '      ''  ''''' '
+                                 ..     .   ...   .                         ..   ...  .
+                                 =           =                              -
          =MOOXZZXZM1XAOMAAAMMXOOOOOOMOOOOO1AOOO))1OOOMOMMMOMMOO1X11)MOOMMMMOOOZ1)ZZMOOOO - ----=-=+))1ZAMMMOMOMMMMAAMM
+           +-         -       --=++= ---+-  +X+   =+= -   -  =-      +-    -++      +++=                   - -
+           '                     ''     '   '''    '                 '      ''      '''
+           .                     ..         ...    .                 .      .       ...
+                                 =           -                              =         =
        - -OOOAZZXXAZXOMMOMMMMOOOOOOOMOOMOO1AOOO1+)1OOOOMOOOOOOM111)1OOOMMMMOOO111Z1MOOOO -- ----==++1ZZMAOMMOMOOOMMMMA
+          -+-        -  -    -+=++++ -- +-  +++    =+=- -----+      =+-    =++      +++-                 -  - ---
+                                '''     '   '''     '                '      '       '''
+                                 ..         ...     .                .      .       ...
+                                 ==         ==      =                       =
       ----MOMXZZZZZZAMAAAAAMOOOOOOOOAMOXOO1XOOO1+=))OOOMMOAAAOA1)+))OOMAXXAOOO11Z11MOOOO   -----=)))ZZZMAMMMOMMMOMOMMO
+           =                -=+=++X+  - +-  +X+     ++-  -   -      -+     =+=      +++-                    -   - -  -
+                                ''''        '''      '               '      '       '''
+                                ...         ...                      .      .       ...
+                                 =-         =-                              =       =
        --=MOMMAMXXXZMMAMMMMAMOOOOOOOZOMZOM)MOOOZ))))OOOOMMMMMOM)Z111MOOAAMMOOO1ZZ1ZOOOOO   ---==+=))1ZMMOMMOOOOMOOOOOO
+           =                 =++++X+ -  +   +X+     -++-     =       +-    =X+     -++++                -  ---- =-=+-=
+                               ''''         '''      '               '      '       '''
+                                ...         ...      .               .      .       ...
+                                ==-         =H                              -        ==
+                                             B
       - -+MOOAAAAZXZOMMMMMAMOOOOOOOO)MOXOX+OOOOZ)))=1OOMMMMMMOM1111)XOAXXAOOOOZ1Z)1MOOOO      ---=++ZXXAMMAOOMOOOMOOMM
+           --       -       -=+++XX=  - -  -+X+      ++      =       +    -=+=      +X++                   -- === --
+                              '''''         '''      ''                     '       '''
+                               ....         ...                             .       ...
+                                =--         =H                              =       =-
+                                             C
      ---=1MOOOAAMXXAMMMOOMOMOOOOOOOA=AMAM+)OOOOZ1)1)AOOMMOMOOOX1Z11ZOOMAAMMOOO1Z1ZZOOOOO-   ----=++)1Z1AMMOMOOOOOOOOOO
+           +--         -- - =++++X+        +XX+      ++  - --+      -+     =+=     -+X++                  - -----=--=-
+                               ''''         '''      ''              '      '       ''''
+                               ....         ...      ..                     .       ...
+                                =-=         -H                              =       =-=
+                                             B
       ---)MOOOXXAXXAOAAMMMOMOOOOOOO1-AOMZ1XOOOO)+)1)1OOMMMMMMOM)Z11ZMOMAAMMOOO111ZZOOOOO    - --==+11XXMMMOMOOOOMOOOOO
+           ---      -     - +==++++   -    +XX+      ++      +       +     ++=     -XX++                  - ---- -----
+                               ''''        ''''                            ''       ''''
+                               ....        ...                              .       ...
+                                ==          HH                              =       --=
+                                            CB
       --=+OOOOAXXAXAOMMOMMOMOOOOOOO1-XOO1)MOOOO+)+))ZOOMMMOOOOM)11)1OOMAAAAOOOZZ)11OOOOO-  -  --=+))ZZXAMMOOOOOOOMMMOO
+          --=-      -  -  - +-=++++   =-   +XX=      ++   --=+      =+     ++=     =+X++                  ---=---   --
+                                '''        '''       '       '       '      '       ''''
+                                ...        ...                       .      .       ....
+                                ===        =HH                              =       =-=
+                                            BB
      ---=-AOOOAMZXXZOMAMMAMMOOOOOOOZ-ZOM1)OOOO1++)))AOOOAMMMOOX)))))OOAZAAAOOO11Z11OOOOO-      ---==)+1ZAMMOOOMMOOMOMO
+           --+      -       -===+++   =   =+X+       ++-    -+      -+     ++-     =XX++                   ---  =- - -
+                                '''        '''       '                      '       ''''
+                                 ..        ...       .                      .       ....
+                                 ==        =H=       =                      =       --
+                                            C
      --===ZAMOMXXXXXMMAMXAAMAOOOOOOZ-1OM+=OOOM)++++1OOOOMOOMOO111Z)ZOOOAOMMOOO1)1ZMOOOOO+    -  --==++1XAAAMOMMOOOMOMM
+             +               -==+++   =   =X+       -+=- -- =+      =+- -  ++-     +XX++                    -  --- -
+                                '''        ''        '               '      '       ''''
+                                 ..        ..        .                      .       ....
+                                           -=                               =       -H==
+                                                                                     C
     -  =- 1MOOMAXXXZAOAMMMMMMOOOOOOA=MOM==OOO1)1++=MOOOOOOOOOO)1ZX)XOOMMMAAOOOXMOOOOOOOO)     ----=++1ZZXMAOMOOOOOMOMO
+            -+       -       --++++   +   ++=       ++------=-      -+     ++-  -+++++++                   - ----- - -
+             '                  '''        '         '                     ''     ''''''
+                                 ..        .                                .     ......
+                                 ==        =                                =      ==
 -   ---+--)AOOMMXAMAMOOOMMMMMMMOOOOM)OO)-=OO111Z))XOOOOMOMOOOO1ZXXZAOOOMOOOOOOOOOOOOOOOO1      -=-=)1)ZZZAAMMMMOOOMMOM
+            -+       =--       ++++  -+   ++       ++=- - -=+-      ++- ---+X++++++++=++                       ---  -
+                                '''                 '                '      '''''''
+                                ...                 .                .      .....
+                                                                            -=
   - - -=- -AOOOAAXXAAOOMMMOOMOMOOOOMXMO--=MX11111ZOOOOMMMOOOOXZAXXZXOOOXAMOOOOOOOMOOOOOO1     -----+)+XZXZMAAAMOMOMOMM
+            ---      -=   -- - ++++   -           =+=-   --+=       =+-   ++X++-- ---===                       - - -
+                                '''                '                 '     ''''
+                                ...                .                       ...
+                                                                           =H
+                                                                            C
  - -   =- -AOOMMXZXAXMOOOMOOOMOOOOOOOOO-  )Z1)11AOOOOOOOOOOOO111ZZZXOOOOOOOOOOMMOOMOOOOOM       -===+))ZZAAXMMMMOMMMOM
+            --        --- --- --+++=-+-          -++------++-       ++--+++++-  -- ---=+                        -   -
+                                '''               '        '        ''  ''''
+                                ...               .                  .   ...
+                                                                         ==
       --- -AOOZMXXXXXXMMMMOMMOMMOOOOOOX- -++)+))OOOOMOOMMOOOX1ZXXZ1ZOOOOOOOMMOMMOOOMOOOOO     ----===)))))ZXXXXAAAMMAO
+            --            -  -  -++---          -++- --  -+=        ++++++=  -  --- ---+-                            -
+                                  '              '        '          '''''
+                                  .                                  . ..
+                                                                       ==
    - ---- -MOOXMOAAXZXXMMMMMMOMMMMMMOOZ--))+11)AOOOOMMMMOOOA1ZXZ)Z)ZOOOOOOOOOMOOMOOMOOOOO      ---=-=)))+11XX11AAAAAMM
+            +-  -            -      --          ++--    -++         +X++=---- -- -- ==+++
+                                                         '          ''''              ''
+                                                         .           ...               .
+                                                                     H=                =
+                                                                     C
     - --- =OOOZOOMAAXAAAOMMMOOMMMMOMOM) +Z)11ZZOOOMMMMOMOOAZ1ZZ1)1ZXOOOOOMMMMMOOOOOOOOOOO      --- ===-+))Z+)ZZZZZ1AXX
+           -=- --       -   --    - -          =+-    - ++          +X+--     ---+++++++=
+                                                        '           ''            ''''''
+                                                                     .              .  .
+                                                                     -
     -- +---MOOZOOOAAZXXAXAOOOOOMOMOOOM=)11111ZOOOMMMMOMOOM1ZZZ)ZXZZXOOOOMMOOOOOOOOOOMOMMM        -=---==)+)1Z11ZXZZZX1
+            +- -=-        =---- - ---         -+=    - ++           ++=-  ----++++=- -
+                                               '                    ''        ''''
+                                                                     .         ..
+                                                                                =
 - -   -+-- +OOAOOMMAAXXXXXXMOOOOOOOMOX)))1))ZOOOMMAAAMOOOZZ1Z)11ZZZZOOOOOOMMOOOOOMAMMMMOM        -- ----+++)111ZZ1Z11Z
+            == --           ------- -        -+-      -+-           ++----  +++=-      -
+                                                       '            ''       ''
+                                                                     .
       -++- -OOAMOMMMMMAXXAAAMOOOOOOA)111)1)1OOOMMMMMMOOOXZXZZ111ZZ1AOOOMMOOOOOMMAAAMMMMOO          --=---==)+))Z1ZZ111
+            -=  -            -=+---         -+=      -+-            ++-  -=++=         --
+                                                                    ''     ''
+                                                                           ..
+                                                                           =
      --+)  -1OMMOAOOMAAAAXAAAAMOOM+=-+1)11)MOOOOMMMAMOOA)11X)111X1ZAOOOMOOOOOMMMMAMMMMOMA            ---++==))111)Z11Z
+             -  - -=           ==           ++--     +=             ++- -+++-         -
+                                            '                       ''    '
+                                                                     .    .
    --  ==   1MMAMMOOOOMXAAXAXAAAMM=-=1)+1)XOOOOOOOMOOOX11XXZAMAXZXZMOOOOOOOOMMMMMAMOOOOOO          ------=+)))111)Z)1Z
+                  -+=-                     =+=---- -==              ++==+++-       =+++++
+                                            '                       ''  ''          ''''
+                                                                         .           ...
+                                                                                       =
       -=    +AAXAMOOOOOOMXAAAAAMA1-=))))ZXMOOOOOOMOOOAZZZZZAOOMZ1ZZAOOOOOOOMMMMMOOOOOOOOO           --===+))1)1111Z11Z
+                  =+----                   +=---- -++       -=      ++=++=-     -=++X+X+=
+                   '                       '                        '' ''         ''''''
+                                                                        .          .....
+                                                                                   =H=-=
+                                                                                    C
       -=-   =11ZZAOOMOOOOMMMAAAA1=-)11))1AOOMMAMOOOOM11ZZ11OOOMZ1Z)XOOOOOMAMMAOOOOOOOOOOO             ---=+=)+1)1111ZX
+                  =+ --=-                 ==    --=+       -++      ++++=     -+++-+XXXX=
+                                                            ''       ' '        '' '''''
+                                                            ..         .        .. .....
+                                                                                    HH--
+                                                                                    CC
   -   -+     =111AOOMMMOOOOOAAAX=-+1)1Z))MOMOOOMOOOO1ZXZZZMOOOMXZ1ZXOOOOMMMMMMOOOXXOOOOOM            -----=)+)11AXZ+1Z
+                  ==   =----              + --- -=+=       +X+      ++++      +++  +XXXX
+                                                  '        '''      '''       ''   '''''
+                                                           ...      ...        .    ....
+                                                            H=                      HHHH
+                                                            C                       CCCB
        +     -1+ZMOOAOOOOOOOOMMX-=11ZZ1+1MMMOOMMMOOXZ1XZ1AOOOOOX1ZZXOOOOAMMMMOOOX1ZOOOOOA            -----++=+)11Z1ZXX
+                  == -----==-               --   ++       ++++-     +X+-     +++   +XXXX
+                                                           '''      '''       '     ''''
+                                                           ...      ...       .     ....
+                                                                     -=             HH--
+                                                                                    CC
  -- ---1-    =+)1AOOAAMOOOOOOOOA+))Z1X)=AOOOMMOOOOA1Z1X1XOOOOOM1ZZ)XOOOMAMMMOOOXZ1)OOOOOX            - --==+)))ZZ111ZA
+                  --   -===-===          ---  --==       =++++      +X+     =+-    +XXXX
+                                                          '  '      '''      '     '''''
+                                                          .  .      ..       .      ....
+                                                                     H              ---H
+                                                                     B                 C
 -    --)-    -111MOMAAMOOOOOOOMZZZZX1Z+ZMOOOMMMOOA)1ZZ1ZOOOOOOAZ111AOOOMAAMOOOXZ11ZOOOOO)       -    ----=++)111Z)Z1ZX
+                  =    =-=====           ---   +=       -++-++      ++-    -++     ++XXX
+                                                         '' ''      ''      '      '''''
+                                                         ..  .      ..      .       ....
+                                                         =           =              =--H
+                                                                                       C
 OOOM= -)-   --+)1OOMAXMOOOOOOMX111ZZA)1AOOOMMOOOOZZ1ZZXMOOOOOOOZZZ1MOOOMOMMOOMAZZZAOOOOO1           --==-+)1Z1ZXXXXXAA
++++              --    -+=-++           -=-  -++-       ++=-++-     ++- -  ++      ++XXX
+ '                                                      ''  ''      ''      '       ''''
+                                                        ..   .      ..      .       ....
+                                                         =          =       =       =HHH
+                                                                                     CCC
 =ZMOOOOO+   --111OOMZMAOOOOOOX11Z11Z--ZOOMMOOOOM11ZZ1XMOOOOOOOOXZAZMOOOOOMOOOOZAXZMOOOOOZ          ---==-)))ZZAXZZZAAA
+   =+++-         -=    -====-          --  ---+        ++=--++-     ++--- -++-     ++XXX
+     '                                                 ''   ''      ''     ''      '''''
+                                                       ..   ..      ..      .       ....
+                                                             =                      =-HH
+                                                                                      BC
 MMOOOOOOOM)- -+1)XOXZZMOOOOOM1ZZZZA- =AMOOOOOOOZ111XZXOOOMOOOOMZZZXMOOOMMOOOOMXZAXMOOOOO1          ---=-+)Z1ZAZXXZXMOM
+  ++++++=         -    -==+=            -----+=       +++ --++      ++-  --++      +XXXX                            -
+  '''  '                                              ''    ''      '      ''      '''''
+   ..                                                  .     .      .      .        ....
+                                                       =                            -HHH
+                                                                                     BBB
 =OOOOOOOM=MOOOOX1XXXXZMOOOOOZ11ZXX= -ZOOOOMOOOA11111ZOOOOOOOOOOXXXXOOOOOOOOOOMAAAAMOOOOO1        - ---=-++ZZZAXXMMMMOM
+ =+=++++   ==--        --==-          ---- -=+       =++----++-    -++-----++      +XXXX                            -
+    ''''                                              '     ''      '      ''       ''''
+     ...                                              .     ..      .      .        ....
+      ==                                              =      =                      HHHH
+                                                                                    CBBB
  -OOZOOOOO -ZOOOOOM)ZXAMOOMZZXZXZZ  )MOOMMMOOA111XZZMOOOMOMOOOMXXXXAOOOOMOOOOMXXAAAOOOOO)       - - - --)111)AAXMMMMMM
+  ++ -++X=   +XXX+      =-            --   =+        ++= - -++      ++-- --++      =XXXX
+  ''   ''    '''''                                   ''     ''      ''     ''       ''''
+  ..   ..     ....                                   ..     ..      .      ..       ....
+  =     -     HH-                                                                   -HHH
+              CB                                                                     CBB
 - )OOMAOOOO- =AOOOOOX1ZMOOZ1Z1ZXZ- -MOOOOOOOMZ111Z1MOOOOOMMOOOOXXAAAOOOMMMMOOOMMMAXOOOOOM          ----==))1ZXAXMMMMOO
+   ++  ++++    +XXX+    --           ------+        +++--  -++=     ++-    ++=     -+XXX                            --
+   ''  '''     ''''                                 ''      ''      ''     ''       ''''
+   ..   ..     ....                                 ..      ..       .      .       ....
+         =      -HH                                  =       =                       HHH
+                 BC                                                                  CCC
 MOOOOOOOMOOO1111MOOOOAZMMA+)11ZX- -ZOOMOOOOOZ1111ZMOOOOOOOOOOOOXXMXAOOOOOOOOOOMMAMMMOOOOO    -   -- -=--=)))XXAMAOOOOO
+ -++++++ +++     ++X+               -- -==+-       +X+------+X+     ++=----=++      -+XX-                        -----
+    '''' ''       '''                              '''      ''       '      ''       '''
+     ..  ..       ...                              ...      ..       .      .        ...
+                  =H                                -=       -                       =-H
+                   C                                                                   C
 OOOOA+OOAZOOOZ)111AOOOOMAZ111ZZ=  ZOOOOOOOOAZZXX1MOOOOOOMMOMOOOMXAZAOOOOOOOOOOOMAXMXAOOOO      -  -  ===)1)+ZXZMMMAOOO
+++XX  -+  +++      +++-            -==--=+=       =XX+--  - +X+     -++----=++-      =+X+                          ---
+''''   '  '''       ''                   '         '''      '''      ''     ''        ''
+....   .  ...       ..                             ...      ...      .       .        ..
+ =H-       =        ==                             -H=      =H                        =-
+  C                                                 B        B
+                                                    V
 OO=   -OOXMOOO+)11+1OOOOZ1)11Z)- +MMOOOMOOA1ZZ))1MOOOOOMMMOOOOOMXXAAMOOOOMMOOOOOAAXXAOOOO       -- --====)))ZAZMOM1MOO
+X+     =+  +X+      -++=            --- ==        +XX+-   --+X+      ++=-  -+++-     -+X+                       -   --
+''      '  '''       ''                           ''''      '''       '      ''        ''
+..      .  ...       ..                           ....      ...       .      .         .
+H=          -         =                           =HH        H=                        -
+B                                                  BB        B
+V                                                  VV
 =    --1MO)OOOX)))11)ZOOOZ111Z+-=MOOOOOOOM1)Z111MOOOOOOOOOOMOOOOMAAA1OOOOOOOMOOOMXXAXAMOO      -  -- ---=+++1ZZXZAMMMM
+         = =XX        =+-         -----==        +XXX+----- +XX+     -++=--- =++       ++
+            ''         '                         '''''      '''       ''      '        ''
+            ..         .                         .....      ...       .       .        .
+            -H         =                          HHH        HH
+             C                                    BBB        BC
+                                                   VV
+                                                   A
 OM1=  -Z=)M1OOO1)))1)11MOOX11111XOOMOMOOMZ1)111XOOOOOOOOMMOMOOOOMXAAXMOOOMOMMOOOOAAAXXXOO        -- -----===)11XZXMOOM
++           +X+         ++       -- - -=        +XXXX+--  - ++++      =++ -  -++=      -=                          --
+            '''         '                       ''''''      ''''       '       '
+            ...         .                        .....      ....       .       .
+             -=                                  HHHH        ==
+                                                 CBBB
+                                                  VVV
+                                                  AA
 XOOOOZ+)- 1MXOOO+1)1)111XOOZZXMMAOMMOOMMZ1)11+1OOOOOOOMOMOOOOOOOOAAAXAMOOOOOMOOOOOAXXZXAO        -----   =+++11ZXXAOMO
+ -++-        +X=         ++      -  --         =XXXXX+ - ---+++++      ++=-- --++-      -                          - -
+   '         ''          '                      ''''''      ''''       ''      ''
+   .         ..                                 ......      ....        .       .
+             =H                                 -HHHH        =
+              C                                  BBBB
+                                                 VVVV
+                                                  AA
   -1MOOO-  O-OOO1))111)1Z1OOXMOMOMOOMZ)1)Z)))1MOOOOOOOOMOMMMOOOOOMXMMAMOOOOOOOOOOOOMXM1MO      --   -----==++ZXZZ1XZOM
+     =+=   - +X+          ++  - - --           +XXXXX+- -   +++++      -++=---==++-     -                           -
+      '       ''          ''                   '''''''      '' ''       ''      ''
+      .       ..          .                    .......      .. ..       ..      ..
+              -=                               =HHHHH
+                                                BBBBB
+                                                 VVVV
+                                                 A
      -1MOZ )O+OOM1111X1)1Z1OOOOOOMOOZ-=11Z1Z1MOOOOOOOOMMMMMOOOOOOOMXAXAMOOOOOMOOOOOOAMZMM-       --- - --=+++1ZZZ1XXAM
+        -   - +X           ++=--- --          +XXXXXX+     -++=+++      =++-- --+++-
+              ''            '                 ''''''''      ''  ''       ''      ''
+              ..            .                 .......       ..  .        .       .
+               -            =                 =HHHHHH       =   =                =
+                                               BBBBBB
+                                                VVVV
+                                                AAA
 O)       -ZMOOOOO1))+1Z11XZAOOOOOMMZ=-)1111)MOOOOOOOOOMMMMMOOOOOOOOOMAMMMOOOOOOOOOOOOMAMM          - ---====+)))1ZZAMM
+-           +-+X+           =++--            +XXXXXXX+     -++==+++-     +++=----+++-
+            ' '''            '               '''''''''      ''  ''       ''      ''
+            . ...            .               ........       ..  ..        .       .
+              =-                              HHHHHHH        =   =                =
+                                              CBBBBBB
+                                               VV VV
+                                                  A
 OOO1 -     -AOOOOZ)=))11ZXOOZOOOMOM1-)1ZZ11AOOOOOOOOOOOMMOMOOOOOOOOOMMMMMOOOOOMOOOOOOOAOM-         ---=--=-+=11111ZMMO
+XX+          ++XX         -- -+= -          +XXXXXXXX+-  - -++=-=++-     -++=- --=++=- -                             -
+''           ''''             '             ''''''''''      ''   ''       ''      ''
+..           ....             .              ........       ..   ..       ..      ..
+H-             H-                            HHHHHHHH
+C              C                             CBBBBBBB
+                                              VVVVVV
+                                                 A
 AOOOOO       OOOOOZ)AA11)MOOO)OOOA)-=11111ZOOOOOOOOOOOOMMMMOOOMOOOOOOMMAMMOOOOOOOOOOOOAMO-        ----=--===-)111ZZAMM
+ +XX+-       --+X+        --- -+=          =+XXXXXXXX+-    -++ -=+++-     -++---===++-  -
+ ''''          '''             '            ''''''''''      ''    ''       ''      ''
+ ....          ...             .            .........       ..    ..       ..      ..
+  HH=          =H                            HHHHHHHH       =     =        =        =
+  CB            C                            CBBBBBBB
+                                               VVVVVV
+                                                   A
 O1MOOOO)     1M1OOOOOOOMZOOOMOZOOM)+1)Z))1MOOOOOOOOOOOMOOMMOOOOOOOOOOOXAAXMOOOOOOOOOOOOOO=    -   ----- =--+=1111AXMAM
+-  =+X+         +++----  --- - ++          +XXXXXXXXX+ --  -++=--=+++-     +++--=--+++---
+    '''         '''            ''          '''''''''''      ''    '''      '''     '''
+    ...         ...             .          ..........       ..     .        ..      ..
+     -=           =                        =HHHHHHHHH              =                =
+                                            CBBBBBBBB
+                                              VVVV V
+                                               A
 OOOOMMOOOO=--)M-OOOOOOOMAMMOOMMAOOZ11Z111MOOOOOOOOOOOOOOMMOOOOOMOOOOOOAXMMAOOOOOOOOMOOOMM+       --------==+)+1ZZZMXAA
++++-  -++=      ++-+++-    --   ++        +XXXXXXXXXX+--  --++- --=+++     -+++---- +++
+'''     '       ''  '           ''        ''''''''''''      ''     ''        ''     '''
+...              .                        ...........       ..     ..        .      ...
+==               =                         HHHHHHHHHH        =      =        =       =
+                                           BBBBBBBBBB
+                                            VVVVVVVVV
+                                               A
 -+OOOOOOOMMOOOOMMOA1OOOOMOOMMOO)XOOA11)1ZXOOOOOOOOOOOOOMOMOOOOOMOOOOOOOMAMMMOOOOOOMOOOOOO+      -   --===+)++=)ZZ1X1XA
+  -+++++-  -++=  X  =++- --  --  ++       =+XXXXXXXXX+- - --++- =-=+XX=     -++=-- -++++-
+   ''''     '    '   ''                    ''''''''''       ''     '''       ''      ''
+   ....          .   .                     ..........       ..     ...       ..      ..
+    ==           -                         =HHHHHHHHH       ==     =H-        =      ==
+                                            BBBBBBBBB               B
+                                             VVVV VV
+                                              AAA
 OOOOM1)MOOOOZ+)OOOO1AOOOOMMAMMOZ+1OOZZ1))+)XMOOOOOOOOOAMMMMOOOOOOOMOOOOMAMMAXOOOOMMOOOOOM1        --= ==-==+)))1ZZXZAX
+=++-    +++=   -=+=  +++=     -   ++         +XXXXXXX+     -++---- +XX+      -+++  -==++
+        '''      '    ''          '          ''''''''       ''     ''''       ''      ''
+        ...      .    .                      ........       ..      ...       ..      .
+         ==      =                           =HHHHHHH               HH        =
+                                              CBBBBBC               CB
+                                                VVVV                 V
 OOOOOOOO=--1OOOOOOZZ11XOOOOMOMMM+A1OM1XZZXZ11AOOOOOOOOMMMMOOOOOOOMOOOOOOOMMMMOOOOOOOOOOOOA - - -----==-=-+1+=+)1ZZZXAX
+XX+XXX++    -+++--     =+++ -      =          =+XXXXX+    -=++=-- =+++X+-    -++++=-===+=
+''''''''     ''          '                     ''''''       ''     '''''       ''      '
+.......       .          .                     ......       ..     .....       ..
+H-=-H-=                                        =-HHHH       ==      ==H
+B   C                                            BBBB                 C
+                                                  VVV
+                                                   A
 OOOMOMZ1AM)+ZOOOMOOMOOOOOOOOMOMMMZMAMMAAAAXZZZXAOOOOOOOOMMOOOOOOOOOOOOOOOMMMMOOOOOOOOOOOOO     ----=+=+)=)++++11X1ZAAX
+XX+ -        -== =+ -====++- -                  -++XX+--  -=++==-==++++X+    --++++-=+==+-
+''                '      ''                      '''''      ''     '' '''      '''
+..                .      ..                      ....       ..     .. ...       ..
+H-                =                               =HH       ==         -        =
+B                                                  BB
+                                                   VV
 OOO --     -1OOOOOOMXOOOOOOOOMMOOZOOAMMMAXAAAXXXXOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOO-- - -=-=+=+=++)=+1111AZXZAA
+XX-          =++++X  -----+=-  -= --             -+XX+-----=++==+--++=+X++-  ---+++-----=-
+''            ''' '                               ''''      ''     ''  ''       '''
+..            ... .                                ...      ..      .  ..       ..
+HH             =  H                                HH       ==         -=       ==
+BC                C                                CB
+V                                                   V
+A
 OOOM-        1ZMOOOOAMOMMMOOOOMOOAAZZZXMMAAX1XXOOOOOOOMOMOMOOOOOOOOOOOOOOOOMMOMMOOOOOMOOOO-      --=-+++))1+Z11Z11ZZXM
+XXX             ++X+  -   -=+= --              -++XXX+ - - +++++-=-++=-+X+-  -  -+++= ==++
+'''              '''                             '''''      ''     ''  '''       ''
+...              ...                             ....       ..     ..   ..       ..
+HHH              =H                               -HH       =           -=       ==
+BBC               C                                BB
+ V                                                 VV
+                                                   A
 OOOOO1-      +1XOOOOOOOOMMOOOOOOMX=XXAAAOMMXAOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOMMMMOOOOOOOOO-    ---==---==+)111111Z1ZXM
+XXXX=           -==++++-  --++--        -    -=+XXXXX+ - --=+++----++=--+X+--    ++++-=-++
+''''               '''      '                  ''''''       ''     ''   '''       ''
+....               ...                         ......       ..     ..   ...       ..
+-HH-                ==                         =-HHHH       ==      =    -        ==
+ BB                                              BBBB
+ V                                               VVVV
+                                                 A A
 OOOOOOOOOOOAMOMXMOOMOOOOOMOMOOOAZX-ZZXMXXMMOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOMAMMOOOOOOOOO= - - ----=-==)))++1111X11AX
++XXXXX++++-  =   += ++X+= - -++            =++XXXXXXX+-----=++-- --++=--++X+-    -++++=-=+
+''''''''''       '   '''     '               '''''''''      ''     ''    '''      '''
+..........           ...                     ........       ..      .    ..        ..
+ HHHH-= =            =-                      =HHHHHHH       =             -        =
+ CBBB                                         BBBBBBB
+   VV                                          VVVVVV
+                                                AA A
 OOOOOOO)XOOOOOOOOOOOZOOOOOOMXMOMZA=11X1XAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMOOOOOOOOO+ --- ----=++))11)))1)1ZZZXA
+-+XXXX-  ++XXX++++++ -+XX+-   =          -+XXXXXXXXXX+-----=++=====++====++++ -- -=++++==+
+ '''''   '''''''''''  ''''                ''''''''''''      ''     ''     '''      '''
+ .....    ....... ..  ....                ...........       ..      .     ..       ...
+  HHHH    =--H==  =    --                  -HHHHHHHHH       =             ==        =
+  BBBB       C                              BBBBBBBBB
+   VVV                                       VVVVVVVV
+    A                                        AAAAAAA
 OOOOOOO    =OOOOOOOOOXMOOOO111OOMX-1ZXMOOOOOOOOOOOOOOOOOMOOMOOOOOOOOOOOOOOOOOOOMMMOOOOOOOO+  - ----==)++)))11111ZZ1AAX
+-++XXX+     ++XXXXXX+  ++X+   -+       =+XXXXXXXXXXXX+-- -- ++==-==++----=+X+--   -+++++==
+ '''''      '''''''''  ''''             '''''''''''''       ''     ''     '''       ''
+  ....       ........  ...              .............       ..      .      ..       ..
+  =HHH       =-HHHHH=  ==H               -HHHHHHHHHHH                      H=       =
+   BBB         CBBBB     B                BBBBBBBBBBB                      C
+   VVV             V     V                VVVVVVVVVVV
+    A                                      AAAAAAAAA
 OOOOOOO      XMOOOOOOOOOOOOO+1ZOOA=ZMOOOOOOOOOOOOOOOOOMOOMOOOOOOOOOOOOOOOOOOOOMOMMMOOOOOOO1--  --===+))++)))))1Z111XXM
++-+XXXX        =++XXXX+++XX-   =-    ++XXXXXXXXXXXXXX+ -- -=++=---=++=--==+XX+ -   -=++=++
+' '''''         ''''''' '''          ''''''''''''''''       ''     ''      '''       '   '
+. .....         ....... ...          ................       ..      .      ...
+   HHHH          =HHHH  =-H           =-HHHHHHHHHHHHH       =              HH=
+   CBBC           CBBB    B             BBBBBBBBBBBBB                      CB
+    VV                                   VVVVVVVVVVV
+     A                                    AAAAAAAAAA
 OOOOOOOA     )11XZOOOOOOOOOOM)1MOA-MOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOA     -=====+++)))+))1Z111AX
+X+=+XXX           -++XXXXX+X    +   +XXXXXXXXXXXXXXXX- ----=++---=-++=----+XXX+--- ---+=++
+'' ''''            '''''''''        '''''''''''''''''       ''     ''      '''           '
+.. ....             ........        .................       .      ..      ...
+-  =HHH              HH-H-=H         -HHHHHHHHHHHHHHH       =              HHH
+    BBB              CB C  C          BBBBBBBBBBBBBBB                      CBC
+     VV                               V  VVVVVVVVVVV                        V
+     AA                                   AAAAAAAAAA                        A
 OOOOOOOO     1Z11111XOOOOOOOOZ1ZOO-OOOOOOOOOOOOOOOOOOOMOOOMOOOOOOOOOOOOOOOOOOOOOOOMMMMOOOOM-  - -==--++=+))+++))11ZZ11
+XX++XXXX             ++XXXXX+   -= -+XXXXXXXXXXXXXXXX+ --- =++--=-=++=----+XXX++--    -+++
+''' ''''             ''''''''       '''''''''''''''''       ''     ''     '''''
+..  ....              .......       .................       ..     ..      ....
+HH  -HH-              =HHHH-=       =HHHHHHHHHHHHHHHH       =       =      -HH=
+BC   BB                CBBC          BBBBBBBBBBBBBBBB                       BB
+     VV                 VV           VV  VVVVVVVVVVV                        VV
+      A                                   AAAAAAAAAA                        AA
 OOOOOOOOOO-  111)1Z11XOOOOOOOO)1AO=OOOOOOOOOOOOOOOOOOOMMMMOOOOOOOOOOOOMOOOOOOOOOOOOMOMOOOOO---  -==-=-=+--==)))1)++Z1Z
++X+=+XXXX+            +++XXXX+   = =+XXXXXXXXXXXXXXXX+    -+++=====++= --=+XXXX+=-- - --++=
+''' ''''''            ''''''''      '''''''''''''''''       ''     ''     ''''''
+... ......            ........      .................       ..     ..      .....
+=H=  HHHH=             ==HHHH        HHHHHHHHHHHHHHHH       =              -HHH=
+ B   BBBB                CBBB        BBBBBBBBBBBBBBBC                       BBB
+      VV                  VVV        VVVV VVVVVVVVVV                        VVV
+      AA                              A    AAAAAAAAA                        AAA
 MOOOOOOOOOOOOMZMAOOOOOOOOOOOOOA1ZMOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOO- ----++=-=)++=+)))11Z1XZZ1
+ XX+++XXXX++-    --+==++++XXXX    ==XXXXXXXXXXXXXXXXX+---- +X++===+++=-==-+XXXXX+-  -----+=
+ ''' '''''''       '  ''''''''      '''''''''''''''''      '''     ''      ''''''
+ ... .......          ........      .................       ..     ..      ......
+ -H  =HHHH             =  HHHH      -HHHHHHHHHHHHHHHH       -      =       HHHHH
+  B   BBBB                CBBC       BBBBBBBBBBBBBBBB                      CBBBB
+       VV                  VV         VVVVVVVVVVVVVV                        VVV
+       AA                                 AAAAAAAAAA                        AAA
 +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOMOMOOOO------========++)))11)1ZZ1Z
+ +XX++XXXX++++++++++++++++++XX+-=++++++++XXXXXXXXXXXX+-=---+X+===-=++= ==-+XXXXX+=-- - -=++
+ ''''''''''''' ''''''''''''''''   '''''''''''''''''''       ''     ''     '''''''
+ .............  .... ...  .....     .................       ..     ..      ......
+  HH  HHHH=                =H-      = ===-HHHHHHHHHHH       -              HHHHH=
+  BC  BBBB                  B             CBBBBBBBBBB                      CBBBB
+       VV                                  VVVVVVVVV                        VVV
+                                            AAAAAAAA                        AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMMMOOO-----=-==+++=+==+))1)1111ZX
++++X++XXXXX+++++XXXX+X+++++++XX- --+++++++++++XXXXXXX+--==-+X++====+++-=--+XXXX++- -    -++
+''''''''''''''''''''''''''' '''    '''''''''''''''''''     '''     ''     '''''''         '
+ .... ....................  ...      ................       ..     ..      ......
+ ==H= -HHHH=== =----=-=     =H-       =   == =HHHHHHH       -              HHHH=
+   C   BBBC                  B                CBBBBBB                      BBBC
+       VV                                       VVVV                        VV
+                                                 AAA                        AA
 OOOOOOOOOOOOZAXOOOOOZOOOOOOOOOOOOOOMZ)+)MOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOMMOOOOOOOAMOOMMOMOOO)- --=---=-==-=)==1)1)Z+1ZX
++++XX++XXXX=   +++++ =++XXXXXXXX+++      ++++++++XXXX+--=- ++++-===++=-  =+XX+=-  --  - --+
+'''''''''''    ' ''   '''''''''''''       ''''''''''''     ''''    ''     ''''
+...........      ..   ............        ............     ....    ..     ....
+ ==HH =HHHH       =    =-HHHH-HH=          === ==-HHH       =              HH
+   CC  BBBC              BBBC CC                  CBC                      CC
+                          V
 OOOOOOOOOOO- )ZMOOOOO+---XOOOOOOOOOOOOOOOA))XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOMMOOOOOOOX--=========+==+=)+)+)))ZA1
+++-+X++XXXX     +++X=     X+-++XX+++XX++-     +++++XXXX+++-+X+++==+++-==++++-  ---  -----=+
+'   '''''''      '''      '' '''''''''''       ''''''''''  ''''    ''   ''''              '
+.   .......      ...      .. ...........        .........   ..     ..   ...               .
+=   -= -HHH       =-      -    -H== H-=          ==HH--     -=
+        BBC                     B   C              BB
+        V
+        A
 1)+OOOOOOOOA -   =AOOOO=--OO+OOOOOOOOOOOOOOOOMX))AOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOMMMOOOOOOOM---=-====--=++)++)))))1)ZZ
+   +XX++XXX        +++-   =+ -+++=-+XXXXXXX++     -++XXXX+++X++==-=++++++=-  ----   ---++++
+    '''''''        '''     '  '''  ''''''''''       '''''''''''    '' '''
+    .......         ..     .  ...  .........        ..........     .  ...
+    HH =HHH         ==     =    =   HHHHHH-         =-HHH== -
+    CC  BBC                         CBBBBC            CCC
+                                     VVVV
+                                     AAA
 O=-ZOOOOOOOO      --ZOOO) +OO=OOOOOOOOOOOOOOOOOOOO1=)MOOOOOOOOOOOOOOOOOOOOOMMOOOMOOOMOOOOOOO---===)=+=++)+))+))+1)1111
+-   XX++XXX+         +++   +- +-+++++XXXXXXXXXX++=    +XXXXXXX+===+++=+++=-  --- --- -==+++-
+    ''''''''         '''   '  '  ''''''''''''''''     '''''''''    '' '''                '
+    ........          ..   .  .  . ..............     ........     .. ...
+    -H= HHH=          ==   =       ==HHHHHHHHH-=      =-HHHHH-     =  ==
+     B  BBB                          BBBBBBBBB          BBBBB
+         V                            VVVVVVV
+         A                            AAA A A
 OOO=OOOOOOOO=         +OO1-OO 1OOOOOOOOOOOOOOOOOOOOOOZ=1OOOOOOOOOOOOOOOOOOOOOMOMOMMOOOOOOOOO)--==-+--)))))))11+1)=1Z11
++++ +XX++XXX           ++  ++  +=-+XXXXXXXXXXXXXXXX+=   -+XXXXX++=+++-+++++=- - -  -----==++
+ '  ''''''''           ''   '  '  ''''''''''''''''''     '''''''   ''  ''''               ''
+ .   .......            .   .  .  ..................     .......   ..  ....
+     H- =HHH                      =--HHHHHHHHHHHHH-      =HHHH-         ==
+     B   BBC                         BBBBBBBBBBBBB        CBBB
+     V                                VVVVVVVVVVVV         VV
+                                            AAA
 +OOOOOOOOOOOO          -1OAMO=MOO1OOOOOOOOOOOOOOOOOOOOOO1+ZOOOOOOOOOOOOOOOOOOOOMMMMOMMMOOMOO)-======+==++==+-==)1)11Z1
+ =+++XX++XXX-            =  +  ++ +XXXXXXXXXXXXXXXXXXX+-   +XXXXX++++---=++X++-    -   -- -=
+  ' ''''''''                '  '' '''''''''''''''''''''    ''''''' ''    '''''
+    ... ....                .  ..  ....................    ....... .      ...
+     HH  HHH                =   =  --HHHHHHHHHHHHHHHH-=     -HHH-          -
+     CC  BBC                         CBBBBBBBBBBBBBBB        CBC
+         VV                           VVVVVVVVVVVVVV          V
+                                            AA   A
 -=ZOOOOOOOOOO            -XAOMZOO1OOOOOOOOOOOOOOOOOOOOOOOOM)ZOOOOOOOOOOMOOOOOOOOOOMOMMOOOOOOZ--===-===)+=+=+-=)))11ZZZ
+   -++X++XXX+               +  +X =+XXXXXXXXXXXXXXXXXXXX++   +XXXXX++-- --+XXX++-- -  -----=
+     ''''''''               '  ''  '''''''''''''''''''''''    '''''''     ''''''
+     ........               .   .  ......................     .......     .....
+     =H= HHH                =   -  =--HHHHHHHHHHHHHHHHHH=     -HHH-=       HH-=
+      B  CBB                          BBBBBBBBBBBBBBBCBC       BBB         BB
+          V                           VVV VVVVVVVVVV            V
+                                            AAAAAAAA
 =--=1OOOOOOOO-            +-OO-OOZOOOOOOOOOOOOOOOOOOOOOOOOOOA)AOOOOOOOOMOOOOOOOOOOOMMMOMMMOOX====--===+=+1)+)=111)111Z
+     +XX+XXXX               =+ +X ++XXXXXXXXXXXXXXXXX+++XXX+   +XXXXX+- -=+XX+X++=-   -   -=
+      '''''''                '  '  '''''''''''''''''''''''''   '''''''    '''''''
+      .......                   .  .................. ......   ......     ......
+      -- -HHH                   -   -HHHHHHHHHHHHHHHH  =HH-     HHHH-      H-=-=
+          BBC                        CBBBBBBBBBBBBBBC   BB      CBBB       B
+          VV                          VVV  VVVVVVVVV     V       VVV
+                                            AAAAAAAA             AA
 O+--- MOOOOOOA        - --)-OO OOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)MOOOOOOOOOOOOOOOOOOOOOOMMOOOM+===+==)=-)))+)1111111ZZ1
+=      X++XXX               +X -+ +++XXXXXXXXXXXXXXXX=--=+XXX+   +XXXX+=--+XXX+++=+==--  =--
+       ''''''               ''  '  ''''''''''''''''''    '''''   ''''''   '''''''
+       ......               ..  .  ..................    .....   .....    ......
+       - =HHH                -  =   =-HHHHHHHHHHHHHHH    =HHH    =HHHH     HHH==
+          BBB                         BBBBBBBBBBBBBBC     BBC     BBBC     BBC
+          V                           VVV  VVVVVVVVV       V       VV      V
+                                             A AAAAA       A        A
 OO==-- OOOOOOO        -  --MZO1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1ZOOOOOOOOOOOOOOOOOOOOOOOOOOO+-==)=))+))11)1))1Z111Z11
++-     +++XXX+               X  +++X+XXXXXXXXXXXXXXXX+---++XXXX+  +XXXX+=-+XXXX++===--=------
+'       ''''''               '  ' '''''''''''''''''''      '''''   '''''  ''''''
+.       ......               .  .  ..................      ....    .....  ......
+        ==HHH                -  =  -=-HHHHHHHHHHHHHHH      HHH-    -HHH    HHH-
+          CBB                         BBBBBBBBBBBBBBC      CBB      BBB    BBB
+                                      VVV VVVVVVVVVV        V       VV     VVV
+                                        A      AAAAA                        A
 OOM+=   OOOOOO           -A+-OO1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1OOOOOOOOOOOOOOOOOOOOOOOOOO1=)+)+))))+11)1)111Z11Z)1
+++      ++XXXX               +- +++XX+XXXXXXXXXXXXXXX+--=--+XXXX+- -+XXXX++XXX++++=-=-===+-==
+''      ''''''               '  '''''''''''''''''''''      ''''''   ''''''''''''
+..      ......               .  . ...................      ......   ............
+ =        HHH-               =     H-=HHHHHHHHHHHHHH-      =HHHH=    HHH-  HH-=
+          CBB                      C  BBBBBBBBBBBBBB        CCBB     CBB   BB
+                                      VVVV VVVVVVVVV           V      V    VV
+                                            A  AAAAA
 XOOM--  =OOOOO1          M1- OO=OOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOX)OOOOOOOOOOOOOOOOOOOOOOOOO=++))))11Z1)11))1ZZ1111)
+ ++      ++XXX               =+ +++XX+XXXXXXXXXXXXXXX+- --=+X++XXX+  =+XXXXXX+++==+====++++++-
+ ''       ''''                ' '''''''''''''''''''''      ''''''''   '''''''''          '  '
+  .       ....                . .....................      ........   .........
+  =       =HHH                     H-=HHHHHHHHHHHHHHH       H =HHH    =HHH-H-=
+           BCB                     C  BBBBBBBBBBBBBBC       C  BBC     BBB B
+                                       VVVVVVVVVVVVV            V      VV
+                                            A AAAAAA            A       A
 -AOOZ-   )OOOOO         =O---1O-OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=AOOOOOOOOOOOOOOOOOOOOOOO--+=-+)+1Z1)ZXZZZ)111111
+  ++      +XXXX          -    X +++XX+XXXXXXXXXXXXXXX=-----+X+=+XXX+   +XXXX+++=+=-+++=+++++++
+  ''      '''''               ' '''''''''''''''''''''      ''' '''''   '''''''         '''''''
+   .      .....               .  ....................      ..   ....   ......            ....
+   =       --H-               -    HH HHHHHHHHHHHHHHH       H   HHH=   =HHHH
+             B                     BB CBBBBBBBBBBBBBC       C   CBB     BBBC
+                                    V  VVVVVVVVVVVVV             VV      VV
+                                         A   AAAAAAA             A        A
 O-MOO+    OOOOOM        O--- -O=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+OOOOOOOOOOOOOOOOOOOOOOO+)1Z))1111)1AZZ11)ZZ1AX
+-  ++     -X+XX         -     + =++XX=XXXXXXXXXXXXXXX=--===+X+--++XXX+  +XXX+=-===--++++++++++-
+   ''      ''''               '  '''' '''''''''''''''      '''  '''''   '''''         ''''''''
+    .      ....               .  .... ...............      ..    ....   .....           ......
+           -=HH               =   =HH -HHHHHHHHHHHHH-       -    =HH-    HHH=             ====
+             BB                    BB  CBBBBBBBBBBBB              BB     CBB
+                                    V   VVV VVVVVVVV              VV      VV
+                                               AAAAA
 OZ=MOO    ZOOOOO)      1= -- -O1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO11OOOOOOOOOOOOOOOOOOOOOO)+11)111111Z1Z1Z1Z1ZAZX
++   +=     +XXX+              + =+XXX=+XXXXXXXXXXXXXX+====++X++=++XXXX+  +XXX++-==+++++++++++++
+    '      '''''              '  '''' '''''''''''''''      '''   ''''''  '''''       ''''''''''
+    .      .....              .  .... ...............      ...   ......   ....         ........
+           =-HH=                 =-HH  HHHHHHHHHHHHH-      =-=    -HHH    HHH            =   =
+             CC                    BB  BBBBBBBBBBBBB               BBB    CBB
+                                   VV   VVV VVVVVVVV               VV      V
+                                              AAAAAA
 OO+=OO+   =OOOOOO      X   -- OXOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)OOOOOOOOOOOOOOOOOOOOOZ111Z111X1ZXZ1Z11111ZAA
+++  -+     +XXX++             = -+XXX+ XXXXXXXXXXXXXX=-==+++X+===++XXXX+  -XXX+==-=++++++++++X+
+     '     ''''''                ''''  ''''''''''''''      '''    ''''''   ''''     '''''''''''
+     .     ......                ....  ..............      ...    ......   ....        ........
+            -HH =                =HHH  -HHHHHHHHHHHH-       H      -HHH=   HHH=         =====-
+             CB                   CBB   BBBBBBBBBBBB        C       BBB    CBB
+                                   VV   VVV VVVVVVVV                VVV     VV
+                                              AAAAAA                 A      A
 OOO=+OO    OOOOOOO     =  --  XAOOOOOO+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)OOOOOOOOOOOOOOOOOOOOO1111XZ111)1X1X1+Z1X1XZ
++==  ++    +XXX+++              -+XXX+ XXXXXXXXXXXXXX=-=---+X+====+++XXXX- =XXX+--+++++++++++X+-
+'    ''     ''''''               ''''' ''''''''''''''      '''     ''''''   '''     '''''''''''
+.           .....                ..... ..............      ...     ......   ...        ........
+            --H =                =HHH  -HHHHHHHHHHHH-      =-      ==HHHH   HHH          ====-=
+              B                   BBB   BBBBBBBBBBBB                 BBBC   CBB
+                                   VV    VV VVVVVVVV                  VV     VV
+                                              AAAAAA                  AA     AA
 OOOM-MO    XOOOOOO+    -   -  )OOOOOOO-OOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOO+OOOOOOOOOOOOOOOOOOOO)11Z1ZXXZ1XZXZXZ1AMXZX
+X++   +     +XX+-+             -=+XXX+ +XXXXXXXXXXXXX=- ==++X+=+==++++XXXX- =XXX+=+++++++++++X++
+'''   '     '''' '               ''''' ''''''''''''''      '''    ''' ''''   ''''    '''''''''''
+..    .     .... .               ..... ..............      ...     .  ....   ...       .........
+H=          =-H  =               =HHH= =HHHHHHHHHHHH-       H      =  -HH-   HHH           ==-=
+C             B                   BBB   BBBBBBBBBBBB        C          BB    CBB
+                                   VV   VVVV VVVVVVV                    V     V
+                                   AA         AAAAAA                    A     A
 OOOOZ-OO   =OOOOXOO        -- =MOOOOOO-OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-OOOOOOOOOOOOOOOOOOO1))11Z11Z1ZZ11XZ1XXXZX
+XX++  --    ++X- ++             -XXXX+ +XXXXXXXXXXXX+=--==++X+==+++++=++XXX  =XXX+==++++++++++X+
+''''        '''   '              ''''' ''''''''''''''      '''    '''  ''''   ''''   '''''''''''
+....         ..   .              ..... ..............      ...     .   ....   ...     ..........
+HH==         =H                  -HHH= =HHHHHHHHHHHH=      =-      =   =HHH   HH-       =  ===-=
+BC            B                   BBB   BBBBBBBBBBBB                    BBC   CB
+                                   VV   VVVV  VVVVVV                     V     V
+                                    A         AAAAAA                           A
 OOOOO-=O    OOOO-MO+     ----  MOOOOOO=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+OOOOOOOOOOOOOOOOOOO))XZZZX1ZXZ1ZA1ZXX11X
+XXXXX  +    -+X+  +             =XXXX+ +XXXXXXXXXXXX+=-==-=+X++++++++++++XXX= =XXX+++++++++++XX++
+'''''  '     '''  '              ''''' ''''''''''''''      '''   ''''   ''''   ''' '''''''''''''
+.....  .     ..   .              ..... ..............      ...    ...   ....   ...   ...........
+HHHH-        =H   =              -HHH  =HHHHHHHHHHHH=      =-      =    =HH-   HH-         ==--=
+CBCB          B                   BBB   BBBBBBBBBBBB                     BB    BB
+                                  VVV    VVV VVVVVVV                      V     V
+                                   AA    AA   AAAAAA                      A     A
1
 1ZX11XZZXZXZZZXZXZX1ZXXMXZXZZZZ1A1ZZXX1X1AZXXZ1AMZZZZ)1Z1)ZAMMMZX1XXZXAZXMAAAAMAAMMAMZXAZMMMMAO11XXMMMMMAOOOMAOMOOMMMO
+                                                                                              -          ---  - --   -
 1)1Z)1Z1XZXZZXXXXXAXZZZ1XAZXZ1XXZZXXZXXZXXXMXZZXMX1XZ1)1Z1X1AAXZZ111XXAXZZZ1)1AAXXXAAXAMAXAMZAAAAMAMOOMOMXMAXAMOMOMMMM
+                                                                                                    -- -       - -
 )111)1XZ1ZXXZZZZ1XXZZXZZZZZXXZXAXZXXZXZZX+11XX1XXZ)ZZZ11Z1ZZZXXZZ)1)ZZAXZZXX1XXX1ZZAAX1XAXXAXAZAZAAMMOMAXAAAAAOMOOMMAM
+                                                                                                     -        - --
 1Z1)11Z11ZXZZX1X1ZXZXZ1X1ZZ1AZXXZ1ZXZXZXX)1ZZZ1AX1)1XZ111Z111ZZAX+11ZZZZZ1AZ111AZXZAMZZZAA1ZXZXAXAAMAMAMAAAXXAAAMMAXMM
 1)111Z1XZ1ZZX1ZXZZ1=111))ZZXXZ1XZ1Z+XA11Z11111)1Z)Z)11)111ZZZ=1Z111Z1111Z1X11ZXXZZZXAXXAMXXA1ZZ1AZAXXAAAXAXXXAAXMXMXAM
 1ZZ)1)111ZZX1Z)1ZZ1Z111)1X1XXZ11Z11)ZXZ1Z)1111Z1Z11)111)111XZ1111ZZ+111)1111ZZX1ZZXAA1XXZZ1ZZZ1ZZXXMAAAAAMAXAZXAAXAXMM
 )++=)111111Z1)111111))111Z11Z1+Z11)1ZZ1111)1+11)11))+)1))))11Z))+1Z1Z11)1Z1Z))1)11XXXXAZZZ1Z111ZZXXZXXZXAMXXXXXXAMXZAX
 1)+))11Z1111Z1ZZ))111Z1ZZ11)))11X1)1ZZ)11))Z11)1)1+1)+1))11+1)1))111Z)111ZZ1))Z11ZZXAZZX1ZZZZ1=1Z1ZZ1XZX1Z1XXXAAMAA1XZ
 )11Z11Z)Z11111Z1)+ZZ111ZZ1Z1))1ZZX)1ZZ+11))11+=11)++)1)111)))+11)+)11111Z1))1))11XZZZ11AX11ZX111ZZ1XMZXZXXZ)XAAAAMAXXZ
 )+))1)+)))1+))1Z)11111Z1111ZZ)ZZZAZZZ1ZZ1)+1))+=++1+))+)++1Z1)11)+1+))))))))11)1ZXZ1XZ1ZZZZ)1)1ZZZZZAXAXZZZZXAXXAAXZZA
 +11111)Z11)Z11Z1+)Z11)11))))11+XMMOOZ+ZZZ1)1Z)+++)+++)+)=)1)1))1)1Z))))++))))))))111Z1ZZZZ111)1111ZXXXAXX1ZZZAXXZZAXXM
+                                  --
 ==+))))1)))))))Z)Z11Z)111)+1+)AOOMMMMXZXXX1)1))+++=++))++)1))XXMMOMAAXZ)+))+=+)))11Z+ZZZZ111)))1)11AZZZZX1ZX1XXAXZMMAM
+                               --                                -
 +))+))))1))-=+)11)Z1)1111)11ZXAMOA)ZZMMO1XX1)+=-++==)=+-+)1XAOOOOOOAXMMM)=====))+11)))11Z)))1)1++1ZXZ111Z11ZZM1AXXAAAX
+                                -      -                     -++++=
 +)1)11))))+++))11)))1+111)+ZMA1ZXZ1111MOMMXXZ1====-==--)1MXZOOOMOOOOOZZAMA)=+))1))))1))Z++=))+)1Z1)1Z1)XX11111ZZZZ1Z1X
+                                       -                    -=- --=--
 )))+1)))+++)+))1)+)))1)+=+1ZA)))111Z111ZMOMMX11+=-==-=+ZZAMOOOOOOOOOOOMZAMO)==+1+)1+))11))-=)))1)111Z1111Z1Z11Z)1X111X
+                                         -                 +++++++++==    -
+                                                            '
 +))1))))=)1)+)++)=+1+)))XX11Z1AAAX1XAMXXAAOOM1)+----=)ZXOOOOOOOOOOOOOOOOMMOOZ=+)))+=+))1+)++++111)11ZZ)1Z11ZZAX11Z111Z
+                                          --            =+++++=--=+++++=  +-
+                                                         ' ''       ''
+                                                           .         .
 )=+))+-)))+))1)+)))+==)XZ1AMMMOMOOOOM1AAOMMOOMA1=  -=ZOOOOOO)MOOOOOOOOOOOOOOO)+=)===+))))1)+==))1+1111Z11)11ZAZ1Z1XXX1
+                              - -=--    -  =-         -+=++-  -+++==++++++=+-
+                                                         ''         '''''' '
+                                                                     ...
 ==)=+++)=+=++=)++=-)+=1AMXAMOOOOOOOOOOOOOOOOOOOO1=--1MOOOOAOMOOOOOOOOOOOOOOOOO)=====+-)+)+++-+))1++ZZ1)1)1111ZXXZXZAAX
+                            -==+++++++++++++++=-      -+++ - ++=+++++++++++++-
+                               ''''''''''   '                   ''''''''''''
+                                ........    .                    ...........
+                                  ===                                     =
 ==)+)+))========+-=)+1MOMXMOOOOOOOOOOOOOOOOOOOOOOOXMMMOOMMOOOOOOOOOOOOOOOOOOOOO+===+)++====---=)Z))ZZ)1)+1)1X1Z111Z1Z1
+                       -   ----+++++X+X+XX+++++++-    +=  =+++++++++++++++++++-
+                                '''''''''''''''''          '''''''''''''''''''
+                                ................             .................
+                                  ==-=-=--=== =                        =======
 =)++++)+=+-=+===+===ZMMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=-=+)=+++=+====+)))ZZ))1)1111ZZXZXXZ1Z
+                           ====++++++XXXXXXXXX+XX++=+++++=+++++++++++++++++++++
+                               '''''''''''''''''''' '''   ' '''''''''''''''''''
+                                ..................   .      ...................
+                                   ==----HHHH-=--            = =       ==== ===
+                                         CCCC
 =+++===-==)==+---=-1X+XMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ--=-=++==-==-=)+)+)1)+)))))11Z111111Z
+                          -+=++++++XX+XXXXXXXXXXX+++++++++++++++++++++++++++++++
+                             '''''''''''''''''''''''''''''''''''''''''''''''''''
+                              ..................................................
+                               ====--=--H-HHHHHHH== ===     ===      ==  === ==
+                                        C CCBBCBC
 -=)+====-===--- -+)Z+))AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1--===-==)==++))))))=)11111ZZZ11Z1Z11
+                        -===++++++++++XXXXXXXXXXXXXXXXXX+++++X++XXX+++++++++++X+=
+                            ''''''''''''''''''''''''''''''''''''''''''''''''''''
+                             ...................................................
+                             =========--HHHHHHHHHHHH----= ===-==--- ==========-=
+                                        CCBBBBBBBBBC
+                                           VVVVV
+                                             A A
 ==+)+=--- -==-=--+)=+)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)=---==++====)))11+)))1Z11ZZ1)1Z111Z
+                       -+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXX++
+                           ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                           ......................................................
+                            =======--HHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH-HH==== =---
+                                     CCBBBBBBBBBBBBBBBBBCCCC CCCCCBC CC
+                                          VVVVVVVVVV
+                                             AAAAA
 ====-=-= ==-==---Z+1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)=--===---++))++=))+11)11111111Z11Z
+                     -=+==+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+X+++X++-
+                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                           .......................................................
+                           ======--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=HHHHH=-===-==
+                                   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC   CBBCC
+                                     V VVVVVVVVVVVVVVVVVVVVV VVV
+                                         AAA AAAAAAAAAAA     A
 ===--=--+-===+=-1ZOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=====-==+===))1)11111)11Z11Z11Z)1
+                  --++=- =+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+++++X++
+                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                          ..........................................................
+                           == ===HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=-HHHH--= ===-=
+                                 CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB    BBBC
+                                   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                    A AAAAAAAAAAA  AAAA AA
 -===+====+--=--+OOOMMOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1===-=+-==+)+))+11))1)1111ZZ1ZZ
+                -=-  - ++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXX+X+XXXX+=
+                         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                         .............................................................
+                           ====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH=HHHHHHHHHHHHHH--=-=----=
+                                BBBBBBBBBBBBBBBBBBBBBBBBBBBCC CCBBBBBBBBBBBB
+                                 VVVVVVVV  VVVVVVVVVVVVVVV       VVV     VVV
+                                  AAAAAA     A    AAAAAAA         A
 =-====---===-=ZOOOAMMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=--+==+-=)+)+++1))111Z1ZZZ1Z
+               ---     ++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXX+X+++XXX+=
+                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ................................................................
+                         ====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--== =HHHHHHHHHHH-=-===---
+                               BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB      BBBBBBBBBBC
+                                 VVVV   VVVVVVVVVVVVVVVVVVVV        V     VVV
+                                  AA       AA     AA   AA           A
 ===--=-===---AMOMOMOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)==----=)+=)+))))+1)11Z1Z11
+               - - -  ++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXX++++-
+                       '''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''
+                        ......................................... ........................
+                        =  =-HHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHH=   =HHHHHHHHHHHH------===
+                             CCBBBBBBBBBBBBBC CCCBBBBBBBBBBBBBC     CBBBBBBBBBBC
+                                VV    VV         VVVVVVVVVV V        VVVVVVVVVV
+                                 A                AAAAAAA            A  A    A
 ---+--- - -+MM)XOOO)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+---====)+===++))1))))+Z1Z
+                -+=  -+++++XXXXXXXXXXXX+++++++XXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXX+X+X+X+++
+                 '     ''''''''''''''''''' ' '''''''''''''''''''''''''''''''''''''''''''''''
+                 .        ...............    ....................... .......................
+                          =H-H-HHH-HHH-=      HHHHHHHHHHHHHHHHHH-==  -HHHHHHHHHHHH-=-=-=-
+                           C C BBC BBC        CCBBBBBBBBBBBBBCCC      BBBBBBBBBBBC
+                                   V              VVVVVVVVVV            VVVVVVVV
+                                                    AA  A                AA AAA
 =--=--==-=)MO)AOOOMZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1 ------===+++-)++))11111
+            -  -++  -=++++++XXXXXXX++++++++++XXXXXXXXXXXXXXXX+++X++++++XXXXXXXXXXXXXXXX+X++++
+                ''      '''''''''''''' '' ''''''''''''''''''''''''''  '''''''''''''''''''''''
+                ..       ............. .   .........................  .......................
+                =         ==----H--==      ==HHHHHHHHHHHHHHH-===-==    HHHHHHHHHHHH--H-=-===
+                                C            BBBBBBBBBBBBCBC           CBBBBBBBBBBB  C
+                                              VVVVVVVVV                 VVVVVVVV
+                                                 AA                      A AA AA
 ---==-=-=+A1ZMMOOO1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=---==--=+)+))))+)Z1111
+               +++  -+++++++++XX++++++++++XXXXXXXXXXXXXXXX++++++++++++++XXXXXXXXXXXXXXXXXXXX++
+               '''    ''''''''''''''''  '''''''''''''''''''''''''''''' ''''''''''''''''''''''
+                ..    . .............   .............................. ......................
+                ==       =====--  ==    ==HHHHHHHHHHHHHHHH== ===  ===   HHHHHHHHHHHHHHHHH-H-
+                                          CBBBBBBBBBBBBBBC              CBBBBBBBBBBCCCCCC C
+                                            VVVVVVVVVVVV                  VVVVVVVV
+                                                   A                       AA AA
 ---==---=11ZOZOOOO11OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- ----==+)))1)))11ZZ))
+            - -+X+  =++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXX++++++++X+++XXXXXXXXXXXXXXXXXXXX++-
+               ''    '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''
+               ..    .. ............................................... ......................
+               =H    =   = ===    =    -HHHHHHHHHHHHHHHHHHHH- = =====-  =-HHHHHHHHHHHHHHHHHHH=
+                B                       CBBBBBBBBBBBBBBBBBBB              BBBBBBBBBCBCBBCBCBC
+                                            V  VVVVVVVVVVVV                VVVVVVVV
+                                                  A   AAAA                    AAA
 =-==---=-AAZ+OOOOM)1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- --=++++)-++1)11))1)
+             =+XX   +++=++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXXXXXXXXXXXXXXX++++-
+              '''   ''  ''''''''''''''''''''''''''''''''''''''''' '''''' '''''''''''''''''''''''
+              ...    .        .... . ...........................   ..... ......................
+               H-                    =HH-HHHHHHHHHHHHHHHHHHHHH-       ==  =HHHHHHHHHHHHHHHHH==
+               B                      CC CBBCCBBBBBBBBBBBBBBCC             CBBBBBBBBCCBCBCCC
+                                               V        VV                     VVVV
+                                                                                A
 =====-=-)O)=OOOOOAZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM----++=++==+))+)1)))
+         -  -+XX+  ++++++=++++++++++XXX+XXXXXXXXXXXXXXXXXXXXXXXXX++++++++++XXXXXXXXXXXXXXXXXXXX++
+             ''''   ''    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ....   ..     .. .. .................................. .............................
+              HH=   =              =-H-=-HH-HHHHHHHHHHHHHHHHHHHH-=  =  === -HHHHHHHHHHHHHHHHHH-==
+              CB                     C   CC BBBBBBBBBBBBBBBBBCCC            CCBBBBBBBBBBBBBBCC
+                                             V  V   VVVVVVV                    VVVVVV  V VVV
+                                                         A                     AAAAA       A
 -==-==--XZ=MOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM--=+)++=+++)))++1=+
+            +XXX+ -++++--+++++++++XXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXXX+
+            '''''  ''     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+            .....  ..      .......................................... ............................
+            =-HH             ==  =--- == =-HHHHHHHHHHHHHHHHHHHH---H-   =====HHHHHHHHHHHHHHHHHHH--
+              CC                           BBBBBBBBBBBBBCBBBBBC   C         CBBBBBBBBBBBBBBBBBC
+                                            V VVV         VVV                 VVVVVVVVVVVVVV
+                                                                                 AAAAAA A A
 =--==--1AZMOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-=-+++)))1111)))++
+           ++XXX+-++++  =++++++++XXX+++++XXXXXXXXXXXXXXXXXXXXXXXX++XX+++++XXXXXXXXXXXXXXXXXXXXXXX++
+           '''''' ''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           ...... ..      .........................................................................
+            =HHH            = ===-H-=   =HHHHHHHHHHHHHHHH--HHHHH-==HH  ===---HHHHHHHHHHHHHHHHHHHH==
+             CBB                  C      CBBBBBBBBBBBBBCC  BBBBC   CC        CBBBBBBBBBBBBBBBBBBC
+                                           VV VV VV VV      VV                VVVVVVVVVVVVVVVV
+                                                                              AA  AAAAAAAAA
 -=-=-=))ZOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+----=)11Z11)111))
+         -++XXX++++-  --=+++++XXXX++=+XXXXXXXXXXXXXXXXXXXX+++XXXXX++XXX++++XXXXXXXXXXXXXXXXXXXXXXX++
+          '''''''''      ''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           .....  .      ... ....... ...............................................................
+           =HHH=  =          =----=   -HHHHHHHHHHHHHHHHHHH   -HHH- =HH-====---HHHHHHHHHHHHHHHHHHH-=
+            CCB                        CBBBBBBBBBBCBBBBBBC    CCB   CC        BBBBBBBBBBBBBBBBBBB
+              V                            VV  VVV VVVVVV                      VVVVVVVVVVVVVVVVVV
+                                                A                               A   AAAAAAAA  AA
  ---++X1AOOOOOOOOOOMXZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+=-=+))+))=1)+))1
+         =++XXX+=++    -++++++XXX++++XXXXXXXXXXXXXXXXXXXXXXX++++XXX++XXXX++XXXXXXXXXXXXXXXXXXXXXXXX++
+          '''''  '      ''''''''''' ''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''
+          .....  .       .  ......  ......................... ......................................
+           =HH-             ==---=  =-HHHHHHHHHHHHHHHHHHHH--   =---==-HH-==-HH-HHHHHHHHHHHHHHHHHHH-=
+            CB                        CCCBBBBBBBBBBBBBBBBC            BB    CC CBBBCBBBBBBBBBBBBBB
+                                             VVVVV VVV  V                       VV    VVVVVVVVVVV
+                                               A                                AA    AAAAAAA A
 --=-=Z1ZOOOOOOOOOOMZZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+===++=)1)))1))+
+        =++XX++=+=    ---=+++XXX++++XXXXXXXXXXXXXXXXXXXXXXXX++++++XX+++XXX++XXXXXXXXX+XXXXXXXXXXXXXX+-
+         '''''' '         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         .....             ......  ..................................................................
+         ==--=              =---=   ---HHHHHHHHHHHHHHHHHHHH-==   =--===HH-==-HH-HHHHH=-HHHHHHHHHHHHH=
+                                       CBBBCBBBBBBBBBBBBBCC            BB    CC BBBBC  BBBBBBBBBBBBC
+                                              VVV VVVVVVV                        VVV    VVVVVVVVVVV
+                                                                                          AA     A
 +-==))XMOOOOOOOOOM)11MAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM--=-=)+111)+)1)
+        ++X++++++      -=+++XX++++++XX+XXX++XXXXXXXXXXXX++++++++++++XX++XXXX++XXXXXXXX++XXXXXXXXXXXXX+
+        ''''''           '''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        .....            ........ ...........................   ......................................
+          -=                --==   =--=HHH==HHHHHHHHHHH-==        ==--==HH--==HHHHHHHH==-HHHHHHHHHHH-=
+                                       CBB  CBBBBBBBBBB                 CC    CCCBBBBC   BBBBBBBBBBB
+                                        V    VV VVVVV                             VV      V VVV VVVV
+                                                                                                A
 ====1XMOOOOOOOOOOX1)ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-=+)1))111)=11
+       =++++=++=-      -++++XX+++++X+XXXX++XXXXXXXXXXXXX++++- - =++++X++XXXXX+XXXXXXXXXX++XXXXXXXXXXXX+
+        '''' '           ''''''''''''''''''''''''''''''''''      ''''''''''''''''''''''''''''''''''''''
+        .... .           ....... .........................         ....................................
+         ===               =--=   =-=--HH==HHHHHHHHHHHH-=            -==-HHHH=-HHHHHHHH- =HHHHHHHHHHHH=
+                                       BB  CBBBBBBBBBBC                  BBCC  BCBBBBBB   BBBBBBBBBBBC
+                                       V    VVV VVVVV                    V        VVVVV       VVVVVVV
+                                                  A                                 AA
 ---=ZOOOOOOOOOOOA)))AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=---+))))))1Z)
+     -=+++++++==     --++++X++++++X++XXXX++XXXXXXXXXXXXX+XX++++=++++++++XXXXXX+XXXXXXXXXX++XXXXXXXXXXXX+
+        ''''''         ' ''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''
+        ... ..           ..... ...............................     .....................................
+         ==  =           ==-=    =-==-HH-==HHHHHHHHHHH--=--==       ====-HHHHH=-HHHHHHHHH==-HHHHHHHHHHH
+                                      BB   BBBBBBBBBBB                   BBBBB  BBBBBBBBB   CBBBBBBBBBB
+                                           VVVVVVVVVV                              VVVV          VVVVVV
+                                             AAA AA                                 AAA
 -- )MOOOOOOOOOOOM1ZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+ -=+=)+)++)11
+     -+==+++++==     -=++++++++++X+++XXX++XXXXXXXXXXXXXXXXXXXX+++++++++++XXXXXX+XXXXXXXXXXX++XXXXXXXXXX+
+         ''''          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           ..          ......  ..................................   ....................................
+                         ===    =-===HH-= -HHHHHHHHHHHHHHHHHHH=        ==-HHHHH=-HHHHHHHHH-==-HHHHHHHHH=
+                                     CC    BBBBBBBBBBBBBBBBCCB            BBBCC  CCCBBBBBB    CBBBBBBBB
+                                            VVVVVVVVV   V                  V         VVVV        VV  VV
+                                                                                       A
 --+AOOOOOOOOOOMOM1XXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=--===)))))1)1
+    -++=--=--- =    --+++++++=+XX+++XXXX++XXXXXXXXXXXXXXXXXXXXXXX++++++++XXXXXXX+XXXXXXXXXXX+++XXXXXXXXX
+      '                '''''' '''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''
+                       .....  ....................................   ...................................
+                         ==    --=  ----==-HHHHHHHHHHHH-HHHH-HHH-       =-HHHHHH=HHHHHHHHHHH===--HHHHHH-
+                                           BBBBBBBBBCCC CCCC CCB          CBBCCC CBBCBBBBBBC     CCBBBB
+                                            VV VVV V                              V   V              VV
 -=ZOOOOOAMX1XXOOA+MAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-=-===++)+)1
+   -+=+=      =-     ++++++++++X++++XXXX++XXXXXXXXXX++++++++++X+XX++++++++XXXXXXX+XXXXXXXXXXXXXXXXXXXXXX+
+                     '''''''  '''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''
+                     .......  ......................................  ...................................
+                      = = =   =H=  =HH--==HHHHHHHHH-==========-=HH=    ===-HHHHHH=HHHHHHHHHHHHH----HHHHH=
+                               C    CC    CBBBBBBBC             CB         BBBCCC CBBBBCBBBBBCC    CCBCB
+                                                                            V      V V   V  V
 +AOOOOOMMMOOOOOOXAMOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-=====+==+=
+  =+++=   -=+++-   =+++++++- +XX++++X+++++XXXXXXXXXXXXX+XX+X+++++XX++=++++XXXXXXXX+XXXXXXXXXXXXXXXXXXXXXX+
+     '      ''      '''''''  '''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''
+                     ......  .......................................  ....................................
+                     = ==     H-= ==-=====HHHH-HHHH-HH-=--=-=====HH=    ==-HHHHHHH=HHHHHHHHHHHHHHHHHHHHHH
+                              C           CCCC CBCC CC           CC        BBBBCCC CBBBBBBBBBBBBCCBBBCCCC
+                                                                            V         V V     V
 ZMOOOOOOOOOOOOOXMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=--++))11++
+  -+=+=+++++++-    =+++++++--+X++++X+++X++XXX++XX+++++++X++XX++++++++=++++XXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXX+
+        '''''       ''''''   ''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''
+           ..       ......   ...  ...................................   ..................................
+                              H=   -   - =---==--=======-==--==== ===     --HHH--H-=HHHHHHHHHHHHHHHHHHHHHH
+                              C                                             CCC  C  CBBBBBBBBBBBBBCBBCCCBC
+                                                                                       VVV   VV
 MOOOOOOOOOOOOOZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-=+++)1)))
+ =+++=++++=+=+    =+++++++-=++X+++++++++++++++++XX+++++XXXXXXXXXXX+X++++++XXXXXX+XX++XXXXXXXXXXXXXXXXXXXXXX
+    ' '''           ''''''  '''' ''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''
+    .  ..            . ...   ... ....................................   ...................................
+                        ==   =-   ==============--=====---HHHHHHHH=-=     --HHHH=HH==-HHHHHHHHHHHHHHHHHHHHH
+                                                          CCCBBCBC          BBCC CC   CBBBBCCBBBBBBBBBBCBBC
+                                                                                        V     VV VV  V
 OOOOOOOOOOMMOM1MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA=-==+=)))1
++++++++=-=  -    =+===+++--++++++++++++++X++++++++++++++XXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+' ''''                '''  ''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   . .                 ..  ....   .................................... ....................................
+                       =   = =     = =  =-=  ========= =-HHHHHHHHHH--=  = -HHHHH--HHHHHHHHHHHHHHHHHHHHHHHHH
+                                                         CCCBCCBBBB        BCBBB  CCCCBBBBBBCCBBBBBBBBBBCBB
+                                                                               V       VVV        V  V
 OOOOOOOOOOOOO)1OOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA=-++)11))
++++++++--=+++  ---- -=++=-+++++==+++++++XX+++++++++++++++XXXXXXXXXXX+++++++XXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX
+ ' '      ''          ''  ''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   .       .           .   ...    ... ................................  ....................................
+                                  ==  ==--= = === =======--HHH-HHHHH=    ==HHHHHH=---HHHHHHHHH-HHHHHHHH-HHH-
+                                                           CCC CCBCB       BBBBBC    CBBBBCCCC BBCBBBBB CBB
+                                                                                                     V
 OOOOOOOOOOOOO+OOMMMOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM==+))))1
+++++++++++++- --   -=+++-+++++= =+++++++X+++++++++++++++++XXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''   ''''          '' '''''   ''' '''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''
+.  ..   ...           ..   ...   ..  .................................  .....................................
+                            =         ==-=  == ==  =======-H-HH---HH-=   ==HHHHHH--H--HHH---HHHHHHHHHHH--H---
+                                                           C CC   BB       BBBBBB  C  BCB   CCCBBBBBBBB  C
+                                                                            V                        VV
 OOOOOOOOOOOOX1MOOOOOOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+))1111
++++++++++++-   ----==-+==+++++- =++=+++++++++++++++++++++++X++XXXXXXX++=++XXXXXXXXXXXXXX+++XXXXXXXXXXXXXXX++++
+'' '''''''            '  ''''    '  ''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''
+.. .  ...                  ..    .   .................................  ......................................
+      = =                  =          ====  ===   ==  === =-==-HH--H-=   =-HHHHHHH-HHHHH= =HHH-HHHHHHHHH-H====
+                                                               CC  B       BBBBBBC BBCCC   CCC CCBBBBBBB C
+                                                                            V                        VVV
 OOOOOOOOOOOOMXAOOOOOOOOOOOOOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)+)11)Z
++++++++++=-=   -+=++++++++++++  ++=-+++++++++++++++++++++++++++XXXXXX+=+++XXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXX++++
+'' '' '''         ' '' ''''''    '  ''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''
+..  . ...            . .             .................................  .................................... ..
+        =                            = ====    =       ==== ===-H--HH=   =-HHHHHHHHHHH-==HHHHH-HHHHHHHHHHHH=
+                                                                C  CC      CBBBBBBBBCC   CBBBC CBBBBBBBBBCC
+                                                                            VV V V        VV     V   VV
+                                                                                                      A
 OOOOOOOOOMOOAMOOOOOOOOOOOOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOO))1)1)
+++++++++= +=  -=+++++++++++++=  +=-=+++++++++++++++++++++++++++XXXXXX+ =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++ +-
+'''''''   '     '''''''''''         ''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''  '
+..... .              ..   .         ..................................  ....................................  .
+   =                                 =====  =  =      =    == =--H---     -HHHHHHHHHHHHHHHHHHH--HHHHHHHHHHH   =
+                                                                 C         BBBBCBBBCCBBBBBBBBB  BBBBBBBBBCC
+                                                                                                     VV
+                                                                                                      A
 OOOOOOOOMOOOMOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)OOA+)1)+
+++++++-- -+= -=++++++++++++++-  ===++++++++++++++++++++++++++++X+XXXX+ +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++ ++
+'' ' '    '    ''' ' '   ''''      ''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''' ''
+.. .                 .    ..        ............. .   ...............   ..................................... ..
+                          =          ===  = ===              = -=HH--    =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--    =
+                                                                 CC        BBBBBBBBBBCCCBBBCBBCCBBBBBBBBC
+                                                                           V V  VV                V  VVV
+                                                                                                      A
 OOOOOOOMAOOOOMOOOOOOOOOOOOOOOAXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)OOO)+)+)
+++++++-  +--- =+=+++++++-++==  -==-+++++++++++++++++++++++++++++XXXX+- ++XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXX+X++ ++-
+''''     '           '   ''        ''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''' ' ''
+..                       ..           ... ... ..       ..  ..........   ...................................    .
+=                                     =    =                   =----     -HHHHHHHHHHHH-=----HHH-HHHHHHHH-=-    =
+                                                                          CBBBBBBBBBBC      CCC CCCCBBBB
+                                                                            V    V                  V
 OOOOOOOMOOOOOOOOOOOOOOOOOOOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)OOO1)1)1
+XX++++- ++++-=+==++++++=+++++  -=-=+=+++++++++++++++++++++++++++XXX++ -++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++= +X-
+''''''    ''     ''     '''        ' '''''''''''' ''''''''''''''''''   ''''''''''''''''''''''''''''''''''''   ''
+......     .            ..            ...  ..  ..      .............    ...................................    .
+--==                                   =   =                 ===-H-=     -HHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHH=    -
+                                                                 C        BBBBBBBBBBCBCCCBBBBBB CBBBBBBBBC
+                                                                          V V    V V        V      VVV V
 OOOOOOOXOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOO)))11
+XX++++- +=++=++=+++====++++++ ---=++++++++++++++++++++++++++++++XX++= -++XXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXX+- ++-
+''''''  ' ''     '     '''''      ' '''' ''' '' ' ''''  ''''''''''''   '''''''''''''''''''''''''''''''''''''  ''
+.....     .      .      ..        . ...                 ............   .....................................  ..
+HH =      =                                                    =--==     -HHHHHHHHHHHHHHH--HHHH=-HHHHHHHHH-   ==
+CB                                                                        BBBBBBBBBBBBBBB  BBBC  BBBBBBBBC
+                                                                           VVV  V V V             V V VV
 OOOOOO1OOOOMOOOOOOOOMOOOOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1=+11
+X++++= --=+ -+++++=- +++++++=  -+++++++++++++=++++++=+++++++++++XX+=- =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=+++
+'''''           ''    '''' '       '''''   '   ''    ''''''''''''''    ''''''''''''''''''''''''''''''''''''' '''
+....            .     ..            ...                   .........    ....................................  ..
+-==                                                           ==--     = HHHHHHHHHHHHHHHHHHHHHH--HHHHHHHH==   =
+                                                                         CBBBBBBBBBBBBBBBBCBCCC  BBBBBBBB
+                                                                           VVV  V   VVV              VVVV
+                                                                                                       A
 OOOOOOMOMOOAOOOOOOMMOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)++1Z
++++++- + == -++++-  -+++==++=  ++++++++++=+=+++=++=+++++++++++++X+- --+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++-
+'''''  '     '''      '         '  ''''''            ''' '''''''''    '''''''''''''''''''''''''''''''''''''''''
+. ..         ...      .            ....                   . ......     .................................. .. ..
+= =            =                     =                       = =-=     ==-HHHHHHHHHHHHHHHHHHH-H--HHHHHHHH =  ==
+                                                                          BBBBBBBBBBBBBBBBBCC C  BBBBBBBC
+                                                                             VV VVV VV            V VVVV
 OOOOOAOMOOMOXOOOX1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1+))11
+++++- = == = +++    -=++--=+=-=++=+++++++====-====--++++++++++++++ =++++++XXXXXXXXXXXXXXXX++XXXX+XXXXXXXX++-=++
+'''           ''      ''       '   '''                     '''''''    '''''''''''''''''''''''''''''''''''''  '
+. .           ..                   ...                       ....     ................................... .  .
+=             =                                               ===     = = HHHHHHHHHHHHHHH-==HHH-=-HHHHHH-
+                                                                          CBBBBBBBBBBCBCC   CBC   CBCBBC
+                                                                              VVV
 OOOOOOOMOMOOOOOOXZZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM))=+)1Z
+++++--+ - =+--+=    --+++=+++++++++++++++++===+=++=+++++++++++++++-+++XXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXX++=-++
+'' '       '               '  ''''''''' '             '''''''''''    '''''''''''''''''''''''''''''''''''''  ''
+.          .                  .......                  ..   .....    .....................................  .
+=                               =                            ====     -----HHHHHHHHHHH-====HHHH--H-HHHHH=   =
+                                                                           BBBBBBBBBBB     CCCB  C BBBBB
+                                                                              VV VVV                 VV
+                                                                                 A
 OMOOOOOMOOOOO1MAXZ1AOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO111)))ZZ
+= ==-=- --+++       - ++=++++++++++++++++===--===++==+++++++++++++-+++X+XXXXXXXXXXXXXX+X++++XXXXXXXXXXXX+++++-
+           '             ''' ''''''''''                ''''''''''   '''''''''''''''''''''''''''''''''''''''''
+           .               . ........                    . ......   .........................................
+                              === =                            =     =-=---HHHHHHHHHHH=-= ==-----H-HHHHH== =
+                                                                           CBBBBBBBBCC           C BBBBB
+                                                                              VVVVVV                 V
 OMOOOOMOMOOOO)11ZXZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXZ)1111M1
+- -=-= - =+++       -=+=++++++++++++++===--=---==++++++++++++++++==++XXXXXXXXXXXXXXXXXX+++++XXXX++XXXXXXXX++
+          ''          '    '''''''''''                 ''''''''''  ''''''''''''''''''''''''''''''''''''''''
+                           ....... ..                  .     ....  ........................................
+                              ====                            = =   =-HH--H--HHHHHHHHH-=====--H-==HHHHHHH-=
+                                                                      CC  C  BCBBBBBCC        C   CBBBBBC
+                                                                             V VV                   VVVV
 OOOOOOXXOOOOO)))ZZ1MMOOOOOOOOOOOOOOOOOOOOOMOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1Z1))Z1Z11)
++==++-  -==+-        ++=++++++++++++++---- ---=- -==+++++++++++++++++XXXXXXXXXXXXXXXXX++XX+XXXX+++XXXXXXX+-
+'                       ' '''''''''''                 ''''''''''' ''''''''''''''''''''''''''''''''''''''''
+.                          .........                       ......  .......................................
+                             =                               ===   ==-HHHH-HHHHHHHHHH-==--=H---= =--HHHHH=
+                                                                      BCCC BBCBBBBBBC      C        BBBCC
+                                                                              VVVV                   V
 OOOOOMMAOOOOOMZZXXZOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+=+)ZAXAZZZZ
+++++=   =+=++      -=+++++++++++++++++==----  ---=++==+++++++++++++++XXXXXXXXXXXXXXXXX++XX+++++X+XXXXXXXX+
+'' '        '        ''''''''''''''''                 '' '''''''''''''''''''''''''''''''''''''''''''''''''
+..                      ............                     . ......  .......................................
+                           = ====                            =     ==-HHHH-HHHHHHHHHH-==--=====-=--HHHHHH
+                                                                      CBBC CBBBBBBBBB              CCBBBC
+                                                                             VVVVV                    V
 OOOOOZXMOMOMOOXZ)XXOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO))ZAOMOMZZ))
+++===   = - +-     -++++++++++++++++==-------  --=--+++++++++++++++++XXXXXXXXXXXXXXXXXX++++++++++X+XXXXXX=    - =
+''          '       ''''''''''''''''                  '''''''''''''''''''''''''''''''''''''''''''''''''''
+ .                    ...........                          ..............................................
+                        ===   ==                               = =  =-HHHHHHHHHHHHHHH--=   = ====-=-HH-H-
+                                                                      BBBBBCCBBBBBBBC               CC C
+                                                                       V     VVVV V
+                                                                               A
 OOOMMXMOOXAOOOOZ1AMOOOOOOOOOOOOOOOOOOOOMMOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOM11))
+-=-    =-  -++-    =++++++++++++++===--  ---  ---=-====++++++++++++++XXXXXXXXXXXXXXXXXXX++++++++++++XXXX++ =-=+++
+            '       '''''' '''''''                      '   ''''''''''''''''''''''''''''''''''''''''''''''    ''
+                      ....   .....                           ............................................      .
+                      ===    = =                                ===  -HHHHHHHHHHHHHHHH--== = = = ===-H--=
+                                                                      CBBBBBCBBBBBBBCC               C
+                                                                       VVVV
 OOMXZMOOMZ1OOOMX)ZOOOOOOOOOOOOOOOOOOMMOMMMMOMMMAMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXOOOOO))1))
+==    =+   -++    -=++++=-++++++++=-  -    -       - ==++=+=+++++++++XXXXXXXXXXXXXXXXXXXXX++++++++++XXXX++- =+++-
+                     '''    ''''''                          '''''''''''''''''''''''''''''''''''''''''''''    '''
+                     ...     ...                              . ................................. .......    ...
+                     =       ==                                 ==  =--HHHHHHHHHHHHHHH----=====    =--H-=
+                                                                       CBBCBBBBBBBBCCC                C
+                                                                            V
 AMMXAMOOX+1OOOMM)MOOOOOMOOOOOOOOOOMXXXAOMOMMMOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO111ZZ1
+      +=   -++    ++++- -==++++++=     - -   --  ---+=++=+=+++++++X++XXXXXXXXXXXXXXXXXX++XXX+++++++XXXXX+++++X+-
+            ''     ''       '''''                      '   ' ''''''''''''''''''''''''''''''''''''''''''''''''''
+            .      .        .....                             .................................................
+                             ===                              ====-==HHHHHHHHHHHHHHHH--==-H-====  =HHHHH=====-=
+                                                                     CBBBBBBBBBBBBBBB     C        BBBBC
+                                                                        VVVVVVVV
+                                                                         A A
 Z1ZAXMOA)=ZOOOMMZMOOOXMOOOMOOOOOOOOOXZXMMMMOMMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAX1Z11)
+      -    =++    ++-  -+= ++++X++=-       -      --===++++++++XXXXXX+XXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXX+
+            ''    ''       '''''''                      ' '''''''''''''''''''''''''''''''''''''''''''''''''''''
+            ..     .       .......                         ..................................... ..............
+                           ====-=                            ==HHHHHH=-HHHHHHHHHHHHHH----H--= =  =-HHHHHH-----=
+                                                               CBBBBC  CBBBBBBBBBBBCC    C         BBBBBC
+                                                                        VVVVVVV
 XAMAAOXZ)=XOOOMAZOOOMOOOOMOOOOOOOOOOOMMMMAAMAAOOOMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZMXXZ1)
+     -     =++   +++ -=-- +++=++++++=         ---  - =++++++XXXXXX+++++XXXXXXXXXXXXXXXXXX+XX++++++XXXXXXXX+XXX+
+            ''    ''      ''  ''''''                    '''''''''''''''''''''''''''''''''''''''''''''''''''''''
+            ..    .        .   .....                    .......................................................
+                               ===                        ==-HHHH-=== =-HHHHHHHHHHHHH-H--=--= =  =HH-HH-H-=--H=
+                                                             CBBB       BBBBBBBBBBBCB C           CC CC C    C
+                                                              V          VVVVVVV
+                                                                              A
 )MM)1M1A=1MOOOOOMOOOOOM)AOOOOOOOOOOOOOOOMMMAMMMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZOOM111
+           +++-- +++--   ++++++++X++++=-         - ==++++++XXXXX++++++++XXXXXXXXXXXXXXX++++++=+++XXXXXXXXXX+XX+ -+
+           '''           ''''   ''''''                 '''''''''''''''''''''''''''''''''''''' '''''''''''''''''
+            ..           ...    ......                  .....................................   ..............
+                          =      -===                   ===-HHHH=   = ==-HHHHHHHHHHHHH-=====    =-HHHHHHHH-=H-
+                                                            CBBC         CBBBBBBBBBBCC            BBBBBCCB  C
+                                                                           VVVV V                  VV
 OO)+1XZ1=+OOOOMXXOMZZXMOOOOOOOOOOOOOOOOOAMAXMMXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOX1=
+--        -+++   -     -++X+++++++++++++        ----=+++++++XXXX+++++X+XXXXXXXXXXXXXXX++++++ -+++XXXXXXXXXXXX+-==+-
+           '''          '''''''''''''''              '''''''''''''''''''''''''''''''''''''''  ''''''''''''''''   '
+            ..          ..............                .....................................   ................   .
+                         =-=      ===                    = =HHH-=====-=--HHHHHHHHHHHHH=====    ==-HHHHHHHHHHH=
+                                                            CBC          CCBBBBBBBBBBC            CCBBBBBCCCC
+                                                                            VVVVV                     VV
+                                                                              A
 OZ==1))++1OOOOOX)111ZMOOOOOOOOOOOOOOOOMMMX111Z1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOA1Z)
++         =+++-       =+XXXXX++X+++++=          --==++++++++XXXXXXXXXXXX++XXXXXXXXXX+++++++= ++XXXXXXXXXXXXXX+++++
+            ''         '''''''''''''                 ''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''
+            ..         .............                 ......................................   ....................
+                       =-HH-H==H===                    =====--HHHHHHHHHH==-HHHHHHHHH======     --HHH-HHHHHHHH=  =
+                         CB C  C                              CCCCCCCBCC   CCBBBBBBC             CCC CCCCCCCC
+                                                                              VV
 O)=+==+-)XOOOOM)111ZMMOOOOOOOOOOOOOOOOXZ1+++)11MOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOZ))))
+-         =+++        =XXXXXXXXXXXX++-          - =++++++++XXXXXXXXXXXXXXX++++XXXXX++++++++ -++++XXXXXXXX++++X++-
+            ''         ''''''''''''''               ''''''''''''''''''''''''''''''''''''' '  '''''''''''''''''''
+            ..         .............                 ...................................     ...................
+                       HHHHHHHHHHHH=                 =  ===-HHHHHHHHHHHHH-= ==-H-H-=====       ==HH--HHH-====-==
+                       CBBBBBCBBBBB                         CBBBBBBBBBBBB      C C               CC  CCC
+                         VV   VVVV                            VV   VVVVV
+                                A                                   AAA
 1=)1=)+-=MOOOO111)1MOZOOOOOOOOOOOOOOOOOX1+-))11AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)1+)+))
+          =+++      - +XXXXXXXXXXXXXX+-         -=+++++++XXXXXXXXXXXXXXXXXXX+++X++++++++++--+++++XXX+XXXXX++=-=
+           '''        ''''''''''''''''             '''''''''''''''''''''''''''''''''''''''  '''''''''''''''
+           ..         ................              .....................................    ..............
+                       HHHHHHHHHHHHHH=                ===-HHHHH-HHHHHHHHHHH-===-= ==  ===    ====HHH=HHHH-=
+                       BBBBBBBBBBBBBB                     CBBBB CBBBBBBBBBB                      BCC CCCB
+                        VVVVVVVVVVVV                       VVV   VVVVVVVVV
+                        AA  A AAAAAA                         A    AAAAAAAA
 1+1O-+-=1OOOOOO)==1A1OOOOOOOOOOOOOOOOOOOM1=-=1)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO111111)11
+   -     -++++-      -XXXXXXXXXXXXXXXX+=        -++++++XXXXXXXXXXXXXXXXXXXXXX++++++++++++--+++XX+XX+XXXXXX++-
+           ''         '''''''''''''''''            ''''''''''''''''''''''''''''''''''''''  '''''''''''''''''
+           ..         ................              ....................................    ................
+            =         HHHHHHHHHHHHHHHH              ===--HHHHHHHHHHHHHHHHHHHH=   =   ===     =H-=-H=-HHHH-==
+                      CBBBBBBBBBBBBBBC                   BBBBBBBBBBBBBBBBBBBB                 C   C  CCCC
+                        VV  VVVVVVVVV                     VVVVVVVVVVVVVVVVVV
+                        A   AAAAAA                         A    AAAAAAAAAAA
 )+1M=-==ZOOOOOM+=1ZZXOOOOOOOOOOOOOOOOOOOOX)=-=1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOO)+)))))++)
+         =++++       +XXXX+XXXXXXXXXXX++=       -++++XXXXXXXXX+XXXXXXXXXXXXXXX++++++++=- =+++++++++++XXXX+++
+          ''''       ''''' '''''''''''''         ''''''''''''''''''''''''''''''''''''      '''''''''''''''''
+          ...        ..... .............          ................................         .................
+           =         =HHH- HHHHHHHHHHH=             =-HHHHHHHH HHHHHHHHHHHHHHH==           = ===== ==HH--==
+                      BBB  CBBBBBBBCBB                CCCBBBCC CBBBBBBBCBBBBBC                       CC
+                       VV     VVVV                               VVVVVV   V
+                       A      AAAA                                AAAA
 ZA1)-=--MOOOOOO)=)M1OOOOOOMOOOOOOOOOOOOOOO1=-=+XOOOOOOOOOOOOOOZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+)1)))+++
+         +++++=     +XXXXX ++XXXXXXXXXX++-      =+++XXXXXXXXX+ +XXXXXXXXXXXXXXXXX+++++++++++++++++++XXXXX+++
+         '''''      '''''' '''''''''''''         ''''''''''''' ''''''''''''''''''''    '''''''''''''''''''''
+          ...       ...... .............         ............. ....................     ....................
+           ==       =HHHH- ==HHHHHH-H--           ==-HHHHHHHH= =HHHHHHH-HHHHHHHH-=            ==   =HH---===
+                     BBBB    CBBBBC C                BBCBBBBC   BBBBBBB BBBBBCCC                    CC
+                      VVV     VVVV                       VVV     VVVVVV  VVV
+                       AA     AAAA                                AAAA
 11+----)OOOOOOO=ZA=OOOOOOOOAOOOOOOOOOOOOOM1=--=XOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1))=+)1))
+        =++X++-    =XXXXXX+ +XXXXX++XX++-       =++XXXXXXXXXX+ -XXXXXXXXXXXXXXXXXXX++++++++++++++++XXXXXXX++=
+         '''''      ''''''' ''''''''''''         '''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''
+         .....      ....... ...........          .............  ............................................
+          =- =      HHHHHH=  HHHHH =-H=           =-HHHHHHHH-   -HHHHHHHHHHHHHHHHH-= =======   =  =-HH-HHH==
+                    CBBCBB   BBBBB   C              CBBBCBBB     BBBBBCCBBBBBBBCCC                  CC CCC
+                      V       VVV                     V   VV     VVVVV  VVVV
+                               A                          A      AAAAA
 -==-  )OOOOOOO++))MOOOOOOOOOOOOOOOOOOOOOOMX+--)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1=)))11)
+       -++++++     +XXX+++XXXXXXXXXXXX++-       =+XXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX+++++++++++++++XXX+XXXX++
+        '''''      '''''''''''''''''''''         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         ....      ....................          ...........................................................
+         ====      =HHH===---HHHH-HHHH=           -HHHHHHHHHHHH=-HHHHHHHHHHHHHHHHHH-====   ===  ===--H=----=
+                    BBB      BBBB BBBC             CBBBCCBBBBBC  BBBBBBBBBBBBCCCCCC                  C
+                     V        VVV   V                 V  VVVV    VVVVVVVVVVV
+                               A                           A      AAAA A
 =====)MOOOOOM1--1OOOOOOOOOMOOOOOOOOOOOOOOMX)==)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)1)1)111
+       =++++     =-+XXX+=- -++++XXXXXX++-       +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XX+++++++++X+++XXX++++=
+        '''        '''''    '''''''''''          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        ...        .....     ..........          ......................................... .................
+         ==        =HH-       ==H-----=           =-HHH-HHH--H----HHHHHHHHHHH------=-=-H=     ===-===---====
+                    BB          C                   CCC CCC  C    CBCBCCBCCCC          C
 = =++AOOOOOM1+1MOMOOOOOOOXZXMOOOOOOOOOOOOAZ)=+ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ)1Z11)1
+      =++++     - =XXX++-    -++++++++++-       ++XXXXXXXXXXXXX++++++XX+XXXXXXXXXXXXXXXXX+++++++++XX++X+X++++
+       ''''        '''''      ''''''''''        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       ....        .....      .........          ......................................... .................
+        ==         -H-           =====           =--HHHHHHH----======--=-H--H-H------HHHH=  = =  =--==H=-===
+                    C                               CBBBCCC              C  C C      CCBB             C
 -+--1OOOOOOZ)1AMX+OOOOOOOMAAMOOOOOOOOOOAAZ)+-=)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX111Z11)1
+     -=++++       ++++++=    -=++++++++         ++XXXXXXXXXXXXX+++++++XXXX+XXXXXXXXXXXXXXX++++++++XX++X+XX+++
+       ''''       ''''          ''''''          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       ....        ..           ....             ...........................................................
+                   ==                            =-HHHHH-H-----= =====----=---------H-HHHH====== =--= -=--==
+                                                   CCBBC C                          C CBBC
+                                                      V                                VV
+                                                                                        A
 ++)1AMOOOOOOMAX1=ZOOOMOOOOOOOOOOOOOOOOMXZX1+++1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1)11111Z1
+      ++++++      ++- -==+++===+++==+=          ++XXXXXXXXXXX+X+++X+++++X+++X+XXX+XXXXXXXXX++++++++X+++X+XXX+
+       ''''       ''             '              '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       ....       ..                             ...........................................................
+       ==                                        =HHHHHHHH---=-===-=====-===-=---=H--HHHHH-====   =H===-=---
+                                                  CCCBBBCC                        C  CBBBB         C
+                                                                                      VVVV
+                                                                                       AA
 AXMMAOOOOOOOX1+-+OOOZ)1XMOOOOOOOOOOOMMAZ1)1==-+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZZ)1)1Z1)
+     -++++++     =+-     =+++++++==-            ++XXXXXXXXX++++X+++X++++++++++X+++XX+XXXXXXX++++++XXX++XXXX+=
+       '''''               '                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       ....                                      ...........................................................
+       = =                                       =-HHHHHH--====-===-==========-===--=HHHHHH-=    =-H- =----=
+                                                   CBBCBB                            CBBBBB        C
+                                                                                      VVVVV
+                                                                                      AAAA
 OOAXXOOOOOOO=- =MOA1+-)1AMOOOOOOOOOMAXXZ1+----+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ11111ZZ
+=-   =+++++-     =        -+++++==-             +++XXXXXXXX++X++++++++++++++++X+X+XXXXXXXXXX++++++XXX++XXX+++
+      '''''                                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       ....                                      ...........................................................
+         =                                       ==-HHHHHH-==-== == ===  =====-=-=---HHHHHHH== ===---= ---==
+                                                    CBBCCC                           BBBBBBC
+                                                                                      VVVVV
+                                                                                      AAAAA
 OAAZAOOOOO1Z)-+1MZ)----ZZMMOOOOOOOOOOMXZ)=----)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1))+1ZZ
+-    =+++-                 -==+==----           ++XXXXXXXXXXX+++++++++++++++X+XXX+XXXXXXXXXX+++++XXXX++XX++X+
+      ''                                        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                ............................................................
+                                                  --HHHHH----===     ==  ===-=---=--HHHHHHHH= = =----==--==-
+                                                    CCCCB                           CBBBBBBB
+                                                                                     VVVVVVV
+                                                                                      AAAAA
 OMO1XOOOOOM1+XOX+-- =-=1XAMOOOOOOOOOMAX1=-----)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ1)1XXX
+- -  -+==+    +            -==++==--           -++XXXXXXXX+X++++++++++++++++X++X++XXXXXXXXXX++++++XXX++XXX+++
+              '                                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+              .                                  ...........................................................
+                                                  --HHH---=-== == === == ===-==-==--HHHHHHHH   ===--- =---==
+                                                    BCB                             CBBBBBBC
+                                                                                     VVVVVV
+                                                                                      AAAAA
 OOMAXMMAMMXOOOOM=-- --=))AMOOOOOOOMMOX1)- --==1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXXZ))1Z1
+-+         -++X            ---==--  -           ++XXXXXXX++X++++++++++++++++X+XXXXXXXXXXXXX++++XX+X++++X+XX+-
+            '''                                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+            ...                                  ...........................................................
+             =H                                  =-HHHH--==-==== = =    = ==-=------HHHHHHH=   --=-== =H=--
+              B                                    CCCC                             BBBBBBC            C
+                                                                                     VVVVV
+                                                                                      AAA
 OO1ZXOZMOOOOOOOX=- ----)1ZMOMOOOOOOMMZ1=----=+1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZX1)11ZZ
++=   -  -=+XXXX            - --+=--             ++XXXXXXXX++X++++++++++++++++XXXXXXXXXXXXX++++X+++++++XXX+X+
+'         '''''                                  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.         .....                                  ..........................................................
+           HHHH                                  =-HHHHHH-==-====     =======------HHHHHH-=  =-=======---=-
+           CBBB                                    CCBCCC                          CBBBBC
+                                                                                    VVVV
+                                                                                     AA
 OMZXXOOOOOOOOOOM- - -=)1ZXXAOOOOOOOOOO1+))==)ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZO1Z11Z111
++    --=++XXXXX             ---==-----          +++XXXXXXXXX++++++++++++++++++XXXXXXXXXXX++++XX++++++XXXX+++ -
+'       '''''''                                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.        ......                                  ......................................... .................
+         =-HH--                                  ==HHHHHHHH-======  ==== = ===-----HHHHHH   =--====  ----==
+           BB                                      CCCBBBBC                        CBBCCC
+                                                                                    V
 OX11MAMOOOOOOOOM- --- -=)111OMOOOOOOOO+)1X)1ZOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZZ))111Z
++      =++XXX++             - -=+====-       -  +++XXXXXXXXXX+++++++++++++++++XX+XXXXXX+=++XXXXX++++XXXXXX++
+        '''''''                                 ''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''
+        .......                                  .......................................  ..................
+        ==HHH==                                    -HHHHHHHH-===  = = = = ====--=-HHHH-=  =--H--== =-H-H--
+          CBB                                       CCCCBBBC                      CBBB       C       C C
+                                                                                   V
 M11ZOAOOOOOOOOOO=- -- ==1Z11MMOOOOOOOM++1))-)AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXZ)1)11Z
+    - -++XXXX+++              -=+++++          =++++XXXXXXXXX+++++++++++++++++X++XXX+++++XXXXX++++++XXXX+X++
+        '''''''                  '''             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        .......                   .              ..................................... .....................
+        =--HH==                                   ==--HHHHHH-=          = ====-==-HH=   =HHHH-===  =HH-H=-=
+           BB                                         CCCCBC                      CC     CCCC       BB C
 A)ZXMMOOOOOOOOOO)=---==+111ZMOOOOOOOOO=--- -=ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX111Z11X
+      -++++XX+++             --++++++-         ==+++XXXXXXXXX+++++++++++++++++X++++-++XXXXXXX++++++XXXXXX+++=
+       '''''''''               '''''             '''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''
+       ........                 ....              .............  .................   ........... ...........
+        ===HH==                   ==               =------HH-=        = =   ==-==    =HHHH-H-===  =HHH---=
+           CB                                             CC                          CBBB B       BBB
+                                                                                        VV          V
+                                                                                         A
 1+XZMMOOOOOOOOOO)=-==-=++1XAMOOOOOOOOM-     -)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOMA1)111Z1
+      =++++XX+++             -++++++=          -+++++++++XXXX++++++++++++++++++++ =XXXXXXX+X+++++++XXXXXXX++=
+       '''''''''               '''''             ''''''''''''''''''''''''''''''''  ''''''''''''  '''''''''''
+       ........                .....              .............    .............   ............  ...........
+        ===HH=                    =                ===== ----=          =  =  =    -HHHHHH=-==    =HHH----=
+           CC                                                                       BBBBBC         CBC
+                                                                                    VVVVV           V
+                                                                                        A
 )+XXMMOOOOOOOOOO11====)1ZZXMOOOOOOOOMX))1XZ1=-1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1111)Z1Z
+      ++++XXXX++            -++++++=           -++++XX+++XXXX+++++++++++++++++++++XXXXXXXXX+++++++XXXXXX++X+=-
+       '''''''''              '''''              '''''''''''''''  ''' '''''''''''''''''''''''' '''''''''''''
+       ........                ...                .............    .  ........................ .............
+       ===--H-                  ==                 =--= =HH--==         =         HHHHHHH--==   ==-HHH--==-=
+            C                                            CC                       CBBBBBB          BBB
+                                                                                   VVVVVV           V
+                                                                                    AAAA
 ==ZZMAOOOOOOOOOO111))))ZXZAMOOOOOOOOAX1)ZX11--1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1Z)1ZZ1
+      =++++XXX++            =++++++-           =+++XXXXXXXXX+X++++++++++++++++++++XXXXXX+XX++++++XXXXXXXXXX++
+       '''''''''              '''''              '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       .........               ...               ................  . .......................................
+       =  =-H-==                ==                =HHHHHHHH-=-==       ==   == ===HHHHHH=--==   =-HHHH-----=
+            C                                      CCCBCCCC                       BBBBBB          CBBC
+                                                                                   VVVVV           V
+                                                                                    AAAA
 )=1ZAAOOOOOOOOOOX111ZZZZXXOMOOOOOOOO1ZZZ1+===-1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO11)11111
+      =++++XXX++          - =++++++-           =+++XXXXXXXXXXX+++++++++++++++++++XXXXXXXXX+++++++XXXXXXX++X++-
+       '''''''''              '''                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       .........               ..                .................    ....................... ...............
+       ====HH-=                                   =HHHHH-H----= =            ====-HHHHH---===  ==HHHHH--==-
+           CC                                      CCCBC C                        BBBBB          CBBCB
+                                                                                   VVVV           VV
+                                                                                   AAAA
 1-++Z1OOOOOOOOOOM)111XZZXAMOOOOOOOMZ))11)=+))ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1+)111Z1
+      =++++X++++           -++++=-              =+++XXXXXXXXXX+X+++++++++++++++++XXXXXX+XX+++++++XXXXXX++XX++
+       '''''''''            ''                   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       .........             .                   ...................   .....................  .............
+          =-== =                                  ==----------=- =       =  =====HHHHHH=--==    =HHHHH-==--
+                                                                                 CBBBBB          CBBBC
+                                                                                  VVVV             V
+                                                                                    AA
 X===11OOOOOOOOOOO11ZXMAZZMOOOOOOOM1)))+)11ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1))11111
+      -+++++XX+++         -++==--           -+++++++XXXX+XXXXXXX+++++++++++++++XXXXXXXXXX+++++++XXXXXXXXXX+++
+       ''''''''''          ''                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        ........           ..                     ................... ...................... ..............
+           =--==                                   =----=-----H-===       === =---HHHH---=   = =-HHHHHH---=
+                                                              C                   BBBB           BBBBCC
+                                                                                   VVV            VV
+                                                                                    AA
 M)=-=1MOOOOOOOOOOZ)1ZMM)ZMOOOOOOZ+=---=++11MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)1)1111
+       +++++XX+++         ++=++-            =++++=+++++++++XX+XX++++++++++++++++XXXXXX++X+++++++XXXXXXX++++++-
+       ''''''''''         '' '               ''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        .........            .                     ................... .................... ...............
+           =--==                                    = =====--=--====    = === ==-HHHHH==-=     =-HHHHH-====
+                                                                                 CBBBC           BBBBB
+                                                                                  VVV             V
+                                                                                   AA
 MA=--+MOOOOOOOOOOM))1AA+)AOOOOOOO+=---=++1ZMMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA11)+))11
+       -++++X++++         ++++++-            --- +++++++++++++++XXX++++++++++++++XXXX+++++++++++XXXXXX+++++=-
+         ''''''''          ' '''                   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         ........            ...                   .......................................  ...............
+          ==-====            = =                     ===========-H-=    = == ====HHHH====    ===HHHHHH=====
+                                                                 C               BBBB           BBBBBC
+                                                                                  VV              VV
+                                                                                   A
 1MZ+==1OOOOOOOOOOO))1Z1))AOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1)11)1)
+       -=+++++++++        -++++XXXX+=- -=+-==+=++++++++++XXXXXXXXX++++++++++++++XXXXX++++++++++XXXXXXX++++X+--
+         ''''''''            '''''''            ''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''
+          .......            .......             .................... ...................  ................
+          =  =  =            ==-H--               = =====----HHHHH=    === =====HHHH-==       =-HHHHHH=== -
+                                C                            BBBBC              CBBB            BBBBBC
+                                                              VVV                 VV            VV
+                                                              A A                 A
 1AO+=-+AMOOOOOOOOOO1ZZ1)=)MOOOOOOOOOA=-1=)OXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX11))111
+  -      +++++++++-        -++++XXXX      -   =+-=++++++++++XXXXXX+++++++++++++XXXXX+++++++++++XXXXXXXX+++X+-
+         '''''''''           '''''''              '''''''''''''''''' '''''''''''''''''''''''''''''''''''''''
+          . ......           .......               .................  ..................  ..................
+          = === ==             =-HH-                == =  ==HHHHH-=    ========-HHHH===      ==HHHHHHH-===H
+                                 BB                         BBBBB               BBBC           BBBBBBC    B
+                                 VV                          VVVV                VV             VVV
+                                  A                          AAAA                A
 )1OM-=-)ZOOOOOOOOOO11Z++++1OOOOOOOOOO= - -1  1MA-=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX+)))))+
+  -      =+++++++++        -=+++++XX+              -+++++++XXXXXX++++=++++++++++XXX+++++++++++XXXXXXX++++XX+
+          ''''''''           ''' ''''               ''''''''''''''''  '''''''''''''''''  ' '''''''''''''''''
+            ......            .  ....               .. .............  .................     ...............
+             == ==                -H                   == =HHHHH-==     === = ==HHH==         -HHHHHH== =HH
+                                   C                       CBBBB                BBB            BBBBBC    CB
+                                                            VVVV                 V             V   V
+                                                            AAA
 O=)A1=-=1AOOOOOOOOOM11+++=1MOOOOMXOOOM-= -=  +Z+  =ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXMM+)))+))
+-         +++++++X+         -++=  -++               =+++XXXXXXX+++++=++++++++++XXXX+++++++++++XXXXXXX+++XXX+
+           ''''''''          ''    ''                  '''''''''''''  '''''''''''''''''  ' '''''''''''''''''
+            .......           .    .                   .............  .................  .  ................
+             == =-=                                    =HHHHHHH===      === ===HHH-==        =HHHHHH-= =HHH
+                                                        CCBBBBB                BBB            CBBCCB    CCC
+                                                           VVV                                 V
+                                                           AAA
 OM-+11=--1MOOOOOOOOOZZ))+))XMOOMMZ=1MMOOZ++ -+Z1--+1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZAM1)+=+1)
+-          +++++++X+         ++       -=            +XXXXXXXXX++++++++++++++++XXXX+++++++=+++XXXXXXX+++XXXX+
+            ''''''''         ''                      ''''''''''''''' '''''''''''''''''  '  '''''''''''''''''
+             .......          .                      ..............   ................  .   ...............
+                ==-=                                 -HHHHHHHH=== =    ==== ==-HH-      =    -HHHHHH== -HHH
+                                                      BBBBBBBB                 CB             BBBBBB    BBC
+                                                      VVVVVVV                                 VVV        V
+                                                          A
 OOO1))11==ZMOOOOOOOOO1))11+)AOOMZX)==)11MOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)XA)Z111+1
+---         +++++XXX+        -=          -=  -+++=++XXXXXXXXXXX+++++++++++++++XXX++++==++++++XXXXXXX+++XXXX+
+             '''''''                           '  '''''''''''''''''''''''''''''''''''  '' ' ''''''''' ''''''
+             .......                           .  .................. ................  .    ......... .....
+                =--H                           =   =-HHHHHHHH--====    ==    =-HH===         HHHHHH-  =HHHH
+                   B                                 CBBCBBBC                  BB            CBBCBB    CBBB
+                                                                                              V   V
 OMOMXZZZA)=1MOOOOOOOOO111)))1MOMZ1)-  -=+1XAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)ZM++Z11)1
+- -          =+++XXXX-        -              -++++++++++XXXXXX+XX++++++++++++XXXX+++++++++++XXXXXXX+++XXXXX+
+              '''''''                          ' ''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''
+               ......                              ................. ................ ..    ................
+                 --HH                                ===------=--==   = == ==-HHH==         -HHHHH-= =HHHHH
+                   CC                                                         BBC            BBBBB    BBBBC
+                                                                              VV              V        VVV
 OOMMMMOMAOA=ZMOOOOOOOOM11+))1AOMX11=- --=1XAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)XA1=))++)
++-    -  =    -+++XXXX        -              -=+=++++++++X++++XXX++++++++++++XXXX+++++++++++XXXXXX+++XXXXXX+
+               '''''''                            '''''''''''''''''''''''''''''''''''' '''''''''''''''''''''
+               .......                             ...................................     .................
+                ==-HH-                                ===-====---== ===  == =HHH-===        HHHHHH=  HHHHHH
+                   BB                                                        BBB            BBCCCC   CBBBBB
+                                                                             VV                       VVVV
+                                                                              A
 OOMXMOOMAOOO)ZMOOOOOOOOM)11)11XA)Z))+----+MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXMA1-==)+)
++-   --  ---   =++XXXXX                     --=++++++++++++XX++X++++++++++++XXX++++++++++++XXXXXX+++XXXXXXX+
+'               '''''''                         ''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''
+                .......                          .................................... ..  ......... ........
+                 =-HHHH                            =     ==--==-==   ==== = HHH==  =       -HHHHH=  -HHHHHH=
+                   BBBB                                                     BBB             BCCCC    BBBBBC
+                                                                             VV                      VVVVV
+                                                                             AA                       A
 OOMMXAAMOMMMMXXMOOOOOOOOMZ11)=+)Z)++======1ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXXMZ===1))
++-      -       +++XXXXX                      -=+++++++++++++++++++++++++++XXXX++++++++++++XXXXX++++XXXXXXX+
+'               ''''''''                         ''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''
+                 .......                             ................................ .. ...................
+                 ==HHHHH                                =========   ==    =HHHH=====       --HHH   =HHHHHHH
+                   CCBBC                                                   CBBC              CCC    BBBBBBC
+                      V                                                     VV                       VV
+                                                                             A                       A
 OMMMMMMMOOXMOOMAOOOOOOOOOOXZ1)+++))+++++)1ZXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAOX)=))11
+=       --  --  -+XXXXXX+-                    --+++++++++++++X+X++++++++++XXXXX+++X++++++++XXX+++++XXXXXXXX+  -
+                 ''''''''                       '   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 ........                           ........................................................
+                  -HHHHH                                 ====-=-=  = =====HHHH-== -       =---=== =HHHHHHHH=
+                   CCBBB                                                  CBBB                     BBBBBBBB
+                     VVV                                                   VVV                      VVV V
+                      AA                                                   AA                        AA
 OOMOOOMZAMMMOOOOXOOOOOOOOOMM11++-+)==+)))1AMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ+)))+
+-- -=+      -==- +XXXXXX++                  - -++++++++++++++++++++++++++XXXXXX++XX+++++++XXXXX++XXXXXXXXXXX+--
+     '           ''''''''                         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                  ......                           .........................................................
+                  -HHHHH                            =  =  ===============HHHHH-==--  = ===--H--= -HHHHHHHHH-
+                   BCBBB                                                 CBBBC              C     CBBBBBBBB
+                     VVV                                                  VVV                      VVVVV
+                      AA                                                   AA                       AAA
 MMXOOOOZZZAMMMOOOAOOOOOOOOOOAZ1+=-==-=+)))1ZMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM11+)))=
+   -++=       ==- +XXXXX+===                   +++++++++++++++++++++++++XXXXX++++X++++++++XXXXX++XXXXXXXXXXX=-
+    ''            ''''''                         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    .             ......                          ..........................................................
+                   HHHHH                             = =  ==  === =    =HHHHH====H== =   =-----==HHHHHHHHHHH
+                   CBBBB                                                BBBBB    C               CBBBBBBBBBB
+                     VVV                                                  VVV                     VVVVVV
+                     AA                                                    A                        AA
 OMOOOOOOX1MMOOOOOXOOOOOOOOOOOOA)+-=--=)))))ZZAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA))+1))
+- =++++-    ---++ +XXXXX+=-==-                  -+++++++++++++++++++++XXXXXX+++++++++++++XXXXXX+XXXXXXXXXXXX+=
+   ''''         '  '''''                          ''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''
+   ...             .....                           ............................... .... .....................
+    =              -HHHH                               = ====== ======HHHHHH==  =   === =---H--=HHHHHHHHHHHH
+                    BBBB                                              CBBBBB                C   BBBBBBBBBCBB
+                    VVV                                                VV VV                    VVVVVVVV
+                     AA                                                   A                       AAAAA
 OOOOOOOOMZMMMOOOOMMOOOOOOOOOOOOM1=---==++)+1ZAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAX+)))))
+--++++++     --++  +XXXX++=+===                 =++++++++++++++++++++XXXXXXX++++++++XX+=+XXXX++XXXXXXXXXXXXX++
+   ''''         '  '''''                          ' ''''''''''''''''''''''''''''''''''  '''''''''''''''''''''
+   ..              .....                            ..................................  .....................
+                    HHH-                               =  = == === ==HHHHHHH = ==  =--  =-H--==HHHHHHHHHHHHH
+                    BBB                                              BBBBBBB              C    BBBBBBBBBBCCB
+                     VV                                                 VVV                    VVVVVVVV
+                      A                                                  A                        AAAAA
 OOOOOOOOOMAMOOOOOOXOOOOOOOOOOOOOO1+=-- =++=)ZMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAX))1==+
+++++=+++-   ==--=- ++XXX+====+++-                =+++++++++++++++++XXXXXXXX++++++++XX+-+XXXXXXXXXXXXXXXXXXXX++
+  '' '''           '''''                            '''''''''''''''''''''''''''''''''' '''''''''''''''''''''''
+  ..   .            ....                            .................................. .......................
+                     HH-                              = = = ====== HHHHHHHH===== ==H-  =HHH--HHHHHHHHHHHHHHH=
+                     BB                                            CBBBBBBB        C    CCC  CBBBBBBBBBBBCCB
+                      V                                               VVVV                     VVVVVVVV V
+                      A                                                  A                       AAAAAA
 OOOMMOOOOOOOOOOOOOZOOOOOOMMOOOOOOOO1+- --++)ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM1+)))+
++++  -++++--==+++- +++X+-  -==-==--            --=+++++++++++++++XXXXXXXXXX+++++++XX+-+XXXX+XXXXXXXXXXXXXXXXX+
+ ''   ' '      '   '''''                          ''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''
+  .            .   .....                           ............................ ....  ........................
+                     =-                                 = === ===-HHHHHHHHH==== ==--   -HH-=HHHHHHHHHHHHHHHH-
+                                                                  BBBBBBBBC             CC  CBBBBBBBBBBBBCBB
+                                                                   VVVVVVV                     VV VVVVV
+                                                                         A                           A
 OOOOOOOOOOOMOOOOOMZOOOOOOOOOOOOOOOOOM1-- -=)XXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)=)+++
+++=++++++++ -++++  ++++++----+=++++-            --=++++++++++++XXXXXXXXXXXXX+++++XX+=+XXXX+XXXXXXXXXXXXXXXXXX+=
+''    '''''  ''''  '''''                            ' '''''''''''''''''''''''' ''''' '''''''''''''''''''''''''
+.     . ..     ..   ....                              ........................ ..... .........................
+               ==   ==                                 = = =   -HHHHHHHHHH--==  =--   HHHH=HHHHHHHHHHHHHHHHH-=
+                                                                CCBBBBBBBB            CBCC CBBBBBBBBBBBBCCCC
+                                                                   V   VV                    VVVVVVVVV
 OOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOMX)=++)Z1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA=)))++
++=--=++++++-  +++--++++++----+-+====-          ---=+++++++++++XXXXXXXXXXXX+++=++XX+-+XXXXXXXXXXXXXXXXXXXXXXXX++
+'     '''''    ''  ''''''                           ''''''''''''''''''''''''' ''''' ''''''''''''''''''''''''''
+      .....    ..   ....                             ........................ ..... ..........................
+        ==     ==    =                                     = =-HHHHHHHHHHH==   =--=  HHH-HHHHHHHHHHHHHHH-HHH-=
+                                                               CCBBBBBBBBB           CBB CBBBBBBBBBBBBBC CBB
+                                                                        VV                  VVVVVVVVVV
+                                                                                             A   A A
 OOOOOOOOOOOOAAOOOMOOOOOOOOOOOOOOOOOOOOOOMM)ZXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)1Z)+)
+----++++++++  -++ ++++++++=====++=====--       =+=++++++++++XXXXXXXXXXXXXX++++XXX+++XXXXXXXXXXXXXXXXXXXXXXXXXX+
+     '''''''   '  ''''''''                         ''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''
+      .....    .  .......                           ........................ ..... ...........................
+       = =         =  ===                                 ==-HH-HHHHHHHHHH==  ---= =HHH--HHHHHHHHHHHHHHH-HHHH-
+                                                             CC CCCCCCBBBC          CBB  BBBBBBBBBBBBBCC CBBC
+                                                                      VVV                  VVVVVVVVVVV
+                                                                                           AAAAAA AA
 OOOOOOOOOOOOMOMOMOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)=1))+
+--=+++++XX++ - - -+XX+++++++=----=-=+- --------=++++++++++XXXXXXXXXXXXXXXX+++XXXX++XXXX+XXXXXXXXXXXXXXXXXXXXXX+
+   '''''''''      '''''''''                     '' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    .......       ... ....                          ..........................................................
+     =  --=        --   =                            == ==----HH---H-HHHHH=  -HHH==HHH-=HHHHHHHHHHHHHH-H-HHH--
+                                                              CC   C CBBBC    BCC  CCC  BBBBBBBBBBBBBB C BBC
+                                                                       VV                 VVVVVVVVVVV
+                                                                                           AAAAAAA  A
 OOOOOOOOOOOOMMO1ZOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1+)+++
+===+++++++X+  -  +++X++++++++=--=-===-=-- -=+++++++++++++X+XXXXXXXXXXXXXXX+++XXXX+XXXX+XXXXXXXXXXXXXXXXXXXXXXX+
+   '''''''''      ''''''''''                  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    .......       ..........                    ..............................................................
+    = = ==-       ==-=   = =                        = = =-=---HH----HHHHHH===HH--=-H--=-HHHHHHHHHHHHH-H-HHHHH-
+                                                              CC    CCBBBC   CC    B    BBBBBBBBBBBBB C BBBCC
+                                                                       VV               VVVVVVVVVVVVV     V
+                                                                                          AAAAAA
 OOOOOOOOOOOOX1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)+++)+
++++++X++++X+   -=+++X+++++++++====--------=-++++++++++++++XXXXXXXXXXXXXXXX++XXXXX+XX+++XXXXXXXXXXXXXXXXXXXXXXX+
+   '''''''''      '''''''''''                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   .........      ..... .....                   . .............................................................
+    =-====H        =-==    =                       = =====--H-HH------HHHH==HHHH-=H-===HHHHHHHHHHHHHHHH-HHHH--
+          C                                                 C CC      CBBC  CBCC  B    BBBBBBBBBBBBBCCC BBBC
+                                                                                        VVVVVVVVVVVV
+                                                                                         AAAAAAAAAA
 OOOOOOOOOOOOZ1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)=)+++
+++++XXX++XX+  -++++++++++++++++=+-=--========++++++++++++XXXXXXXXXXXXXXXXX++XXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXX+
+ '''''''''''   '''''''''''''''               ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ..........   ... .....   ...                   .............................................................
+   =-HH==-H          ==                                ==--H---------HHHHH==HHHHH-H== HHHHHHHHHHHHHHHH--HHHH-H
+     CC   C                                                C         CCBBB  CBCBC C   BBBBBBBBBBBBBBCB  BBBC C
+                                                                             V V        VVVVVVVVVVV
+                                                                                        AAAAAAAAAAA
 OOOOOOOOOOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)))+)=
+==++XXXX++XX  -+XX++++++++++++++-======+=+=+++++++++++++++++X+++XXXXXXXXXXX+XXXXXX+X+XXXXXXXXXXXXXX+XXXXXXXXXX+
+  ''''''''''   ''''''''' ''''''                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ..........    ... .... ......                   ............................................................
+   =HHH- =-H    --=  ===  ==                         === ===-===------HHHHH=HHHHH-=-=HHHHHHHHHHHHHH=HH-HHHH-HH
+    BBB    C                                                          CCBBC CBBBB    CBBBBBBBBBBBBB CB BBBB CC
+     VV                                                                  V     V       VVVVVVVVVVVV     V V
+                                                                                        AAA A  AAA
 OOOOOOOOOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1)))+=
++++XXXXX++XX+  +XXX++++++++++++++=++++==-====++===+++++++++XX+++++++XXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXX+
+ ''''''''''''  '''''''''''''''''              '   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ..........   .................                  ............................................................
+  =HHHHH= -H    -HH===   =                             ====--== ====--HHHHH-HHHHH ===HHHHHHHHHHHHH-HHH-HHHHHHH
+   CBBBB   C     BB                                                   CCBBB CBBBC    BBBBBBBBBBBBB BBC BBBBCCC
+     VV                                                                  VV    V       VVVVVVVVVV      VVV
+      A                                                                                 AAAAAAAA
 OOOOOOOOOOOOOZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1)==)+
++++XXXXX+++X+  ++XXX++++++++++++++++++=---=+++++++++++++X++++++++++++XXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXX+
+ ''''''''''''  '''''''''''''''''''   '       ' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ...........   .................                 ............................................................
+  =HHHHH== H     HHH==   =      =                    ===-============HHHHHHH-HHHH===HHHHHHHHHHHHHH-HHHHHHHHHHH
+   BBBBB   C     BBB                                                 CCBBBBB CCBC   CBBBBBBBBBBBBC BCCBBBBCCBC
+    VVV           V                                                            V      VVVVVVVVV        V
+                                                                                       AAAAAAAA
 OOOOOOOOOOOOOXAOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1)+=+==
++++XXXXX++++X  =+XXXX++++++++++++++++===-- =+++++++++++++++++++++++XXXXXXXXXX+XXX++XXXXXXXXXXXX+++XXXXXXXXXXXX-
+'''''''''''''   ''''''''''''''''''''         ''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ...........   ..................                ............................................................
+  =HHHHH== =-    HHHH= =  =  ==                    =  ======= =====----HHHHHH=-H-==HHHHHHHHHHHH===HH-HHHHHHHH-
+   BBBBB         BBBC                                                  CBBBBC  B   CBBBBBBBBBBC   CB CBBBCCCB
+                  VV                                                                 VVVVVVVVV
+                                                                                       AA
 OOOOOOOOOOOOOOZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAAZA
+=+XXXXXXX+++X-  =XXXXXX+++++++++++++++==---=-++++++++++++XX++++++++XXXXXXXXXXX+X+++XXXXXXXXXX+XXXXXXXXXXXXXXXX+=-
+ ''''''''''''    '''''''''''''''''' '           ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ ......... ..    .................                 ............................................................
+  -HHHHHH=  -    -HHH--= ===  =  =                 ======--====  ==--HHHHHHHH-=-= =HHHHHHHHHH=--HHH-HHHHHHHHH-
+   CCBBBB         BBB                                                CCCBBBBC      BBBBBBBBBB   BBB BBBBBCCBB
+       V          VV                                                     VVV         VVVVVVVV    V   V
+                  A                                                                   AAAAAA
 MOOOOOOOOOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ ++X+XXXXX++++  ++XXXXXX+++++++++++++++==+--=++++++++++++++++++++++XXXXXXXXXXX++++XXXXXXXXXX++XXXX+XXXXXXXXXX+++++++++
+  ''''''''''''   '''''''''''''''''''            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ............   .............. ...                ............................................................ . ....
+  =-=HHHH-= =    =HHHHH-= === =                     = ======= = ===--HHHHHHHHH====-HHHHHHHH-==-HHH=HHHHHH-HHH=     ===
+     CBBB         BBBCB                                              CCCCBBBCC     BBBBBBBB    CBC CBBBBC CBC
+      VV           VV                                                     V          VVVVVV         VV
+                                                                                     AA A
 MOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOO
+ =+++XXXXXX+++- =+XXXXXXX+++++++++++==-=+--==++=++++++++++++++++++++XXXXXXXXXX++++XXXXXXXXX+XXXXX+XXXXXXXXXXXX+++- +++
+  ''''''''''''   '''''''''''''''''''            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''
+  ............    .............  ..               ...............................................................  ...
+    =HHHHH-===    HHHHHH-==== =  =                 == ====== ==== ==--HHHHHHH-====HHHHHHHH-=--HH-=-HHHHHHHHHH-= =   ==
+     CBBBC        CBBCCC                                              CBCCBBC     CBBBBBBC    CC   BBBCCCBCBB
+      VV           VV                                                                 VV            VV
+                    A                                                                               A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -=++XXXXXX++X+-=++XXXXX+XXX++++++++++++++=++++++++++++++++++++++++XXXXXXXXXXX++++XXXXXX++XXXXXX+XXXXXXXXXXXX+++++-+++
+   ''''''''''''  '''''''''''''''''''         '' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''
+   ............  ...................            .................................................................   ..
+     HHHHHH==-=   =HHHHH=---====  ==                ======    == ==----HHHHHHH=  =HHHHHH==H-HHHH=-HHHHHHHHHHH====   ==
+     CBBBBB        BBBBB                                               BCBBBCC    CCBBBC  C CCBB  BBBBCCBCBCC
+      VVVV         VV V                                                    V         VV           V       V
+                    A
 1MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   =+XXXXXXX++X+=++XXXXXX++X++++++++=-+=+==++++++++++++++++++++++XXXXXXXXXXXXXX+++XXXXX+XX+XXXX+XXXXXXXXXXXXX+++++++++
+    '''''''''''  '''''''''''''''' ''        '' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    ...........  ................ ..            ......................................................................
+     -HHHH--==-    -HHHH-==-====  ==                =           =----HHHH-HHH--= =--HH-=HH=HHHH=-HHHHHHHHHHHH= === = =
+      BBBB          BBCB                                             CCCC CBB       CC  CC CCCC  BBBCCBCBCCCC
+        VV                                                                                        VV
 ZZZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -+XXXXXX+++X++++XXXXXXXXXXXX++++++++=+++++++++++++++++++++++++X++++XXXXXXXX+++XX+++X+XXXX+++XXXXXXXXXXXXX+++++++++
+     ''''''''''' ''''''''''''''''''' ''  '  ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ...........  ..................            ......................................................................
+      -HHHH-===-   =HHHHH-HHH---= =                          == ==-====--HHHH-H=  --===-=-HH-= =HHH-HHHHHHH--=    ===
+       BBBC         CBBBC CCC                                            CCBB C           CC    BBB CBCCCCC
+        VV           V                                                                            V
 XAXXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     =+XXXXXX++X+++++XXXXXXXXXX++++++++++++++++++++++++++++++++++X++XXXXXXXXXXXX++++++++XXX++++XXXXXXXX+XXX+++++++++++
+      '''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      ........... ..................      .    .......................................................................
+       -HHHHH==H=   =HHHHHH-HH-===                   = =   = ====-==------HHH-H-   =====---== =HHHHHHH-=---======= =
+        CCBBC  C     CCCBCC BC                                            CCC C                CBCCCBB
+                                                                                                     V
 OOOMXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+---  -++XXXXXX+XXX++++XXXXXXXXX++++++++++++++++++++++++++++++++XXXXXXX+++XXXXX+X+++++++XX++++XXXXXXXXXXXXXXXX+++++++++
+       '''''''''''''''''''''''''''''''' ''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       ..............................           ......................................................................
+        -HHHH-=-H-  ==-HHHHHHHH====                 ==  =   ===------H===-HHHH=-  === =-H==  -HHH-HHHH---H-H-=== ==  =
+         BBBB   B      CBBBBBBC                                      C    CCCC          C     BBC BBCC   C C
+          VVV           V                                                                          V
 ZOMOAXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ - -   =++XXXXX+XXX+++XXXXXXXXXXX++++++++++++++++++++++++++++++++++X++++++++X+++++++++XX++-+XXXX+XXXX+XX+XXXX+++++++++
+        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''
+         ..........................    .    ..  ................................ ... ..... ...........................
+          --HH-=HH-  =-HHHHHHHHH-==              =          =======-========-==      =-H=  =HHH-=HHHH=--=----===  == =
+            BB  CB     BBBCCBBBC                                                       C    CCB  BBBB
+                        V    V                                                                    V
 =MMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    =---=++++XXXXXXX++XXXXXXXXXXXX++++++++++++++++++++++++++++XXX++X+++++XXXXX+++++++XX++-+XXXXXXXXXX++XXXXXX+++XX++++
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''  ''''''''''''''''''''''''''''
+          ................................ ........................................ ....  ............................
+           ==HH--HH-==-HHHHHHHHH--              =    ==  = = =---==-=====---HH      =-H=   HHHH-HHHHH==--HHHH===--== =
+             CC  CB    CBBBBBBBC                                            CC        C    BCBC CBBBC    CCBC
+                             VV
 )ZOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  - -=+-=+++++XXXXXXXX++XXXXXXX++X++++++++++++++++++++++++++++XXX++++++++XX+X+++++++XX+=-+XXXX+XXXXX++XXXXXXXX++++++++
+          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''  '''''''''''''''''''''''''''''
+          ................................... ................................ ..  ....  .............................
+           ===-HHHHHH-==HHHHHHH==-=                        ===---======= --=H      =--   =HHH-=-HHHH==--HHHHH-=====
+               CCCBBC   CCCBBBC                                             C             CCC   BBBC    CCCBC
+                            VV
 +)MOAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -  ++++++++++++XXXXXX++XXXX++XXX++++++++++++++++++++++++++XXXXX++++++++XX+++++++X++-+XXXX+XXXXXX+++XXXXXXXX++++++++
+        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''
+         ........................................ ........................... ..  ....  ..............................
+              ====HHHHH-==HHH- =HH-===      =              ==-----========H-=  =   -==  -H--=--HHHH=  -HHHHHHH========
+                  BBBBC   CCB   CB                                        C              C     BBBB    BBBBBBC
+                    V                                                                                     V
 =+=MMZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       =++++++++++XXXXXXXXXX++XXXXX++++++++++++++++++++++++++++++++++++++++++++==+++-  ++++++++X+X++++XXXXXXXX++++++++
+        '''''''''''''''''''''''''''''''''''  ''   ' '  ' ''''''''''''''''''''''  '''   '''''''''''''''''''''''''''''''
+        ...............................   .                ................. ..  ..    ............ ..................
+          ==  ====-HHHHH----==HHHH-==                       ==  = =    = ===           == == ==-=-   =--HHH---==  ===
+                   CBCCC      CBBC                                                                      CCC
 )=+1MOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     -- +++XX++++++XXXXXXXXXXXXXXXX+++++++++++++++++++++++++XXX+X+++++++XXX+++++++++==+X++++++XXX+-++XXXXXXXXXXXX+++++
+        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''   '''''''''''' '''''''''''''''''''
+         ..................................................................... ....   ............  ..................
+          =--======----H-H--HHHHHH-===    =   =    = =     =---=- ======---=    ===   =H   ===HH-=  =HHHHHHHHH---=  ==
+                       C C  CBBBBC                                                     C      BB     CCBBBCBCC
+                                                                                                         V
 +)))ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     =--=++XXXXXXXXXX+XXXXXXXXXXXXX+++++++++++++++++++++++++XX+X++++++++++++X++++++==+X+++++++XXX==+XXXXXXXXXXXXXX++++
+         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''  '''''''''''''''' ''
+         ..........................................................................  ............  ................ ..
+           -----H----=-HHHHHHHHHHHH=== === ===         =  ==--=-====  ==== =-  ===   =H=  ====HH-   -HHHHHHHHHH---=  =
+                C      CCBBBBBBBBBC                                                   C       CC     CCBBBBCCCC
+                           VVV  V
 +=1XXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZOOOOOOOOOOOOOOOOOOOO
+      +--++++XXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++XXX++++++++++X++++++XX++=++X+++++++XX= ++XXXXXXXXXXXXXXX+++
+      '  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''   '''''''''''''''''''
+          ........................................  ..............................  ............   ................. .
+          ===H-HHHHHHHHHHHHHHHHHHH--=== ==  ==           ==---====  ====-= == =--=  ==- ==  ==--   =-HHHHHHH-HH--H-=
+             C CBCCCCCCBCBBBBBBBBB                                                                   CBBCBCB CB  C
+                           VVV  V
 O+1XMMXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXMOOOOOOOOOOOOOOOOOOOO
+-      ==+++XXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++-=+X++++++++++  ++XXXXXX++X+++++X+++
+          '''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''  '''''' '''''  '''''''''''''''''''
+          .................................... .        ..........................  ... .. .....   ..................
+            -H-HHH--HHHHHHHHHHH-HH--=======  =           ======== == =   ==   ===   =-=      ==    =-HH-H-==-=====-=
+             C CBC  BBCCCBBCBCC CB                                                                   CC C
+                    V
 OM)ZAOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOO
++    -  -++++XXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++++++++X+X+++++++++++++X++X+X+++XX+++++++XX+ ++XXXXXXXXXXXXXXXXXXX
+'          ''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''
+           ..................................... .      .......................... ........ ...   ....................
+            =HHHHH-HHHHHHHHHHHHHHHH-=-==== = =   =        =-=-==  =   == ==- =-=-=  --  =   =-H   =-HHHHHHHHHHHHHHHH--
+             CCBBC BBBBCBBBBBBBBBCC                                                           C     BBBBBCCBCBBBCCBC
+                    VV    VVVV                                                                         V
 OOO1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOOOO
+++-  -=--+++++++XX+XXXXXXXXXXXXXX+XX+X+++++++++++++++++++++++++++++++++++++++XX++++++++++++++X+- ++XXXXXXXXXXXXXXXXXXX
+''         ''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''' '''''  '''''''''''''''''''''
+            ......................................     ........................... ...... .....   ....................
+             ===--=HHHHHHHHHHHHH-=--=-=== =   == =     ======== ===  ======= --=== ===     ==-=   =HHHHHHHHHHHHHHHHH-H
+                   CBCCCBBBBBBBC                                                                   CBBCBCCCCBBCBBBBC C
+                          VVVV
 OOOM)XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOO
++++    +=++++++XXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++X+++++++++++++++++X+X+++X++++++++++- ++XXXXXXXXXXXXXXXXXXX
+ ''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''  '''''''''''''''''''''
+  .         ......................................     ................................. ......   ....................
+  =          = -H-HHHH-HHHHHHHH-----======= = = ==      ====-==== ========== =-=-= =-=     ====   =HHHHHHHHHHH-HHHH--H
+                C CBCC CBBBBBBB                                                                    BBBCCBBCCBC CBCC  C
+                           VV
 OOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)XOOOOOOOOOOOOOOOOOOOOO
+++++=  -=++++++XXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++X+X++++++++++++++  ++XXXXXXXXXXXXXXXX+XX
+ '''      ''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''' '''''   '''''''''''''''''''''
+  ..      . ........................................  .................................. .....    ....................
+   =        = =-HHHHHHHHHHHHHHHHH--==============      =====   === ========  =-=-======    ===    =HHHH-HH---HHHHH-=--
+                CCCCBCCCBBBBBBBCC                                                                  CCCC CC   CCCCC
+                           VVV
+                           AA
 OOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOO
+=+++++- ++++++++++XXXXXXXXXXXXXXXX+++++X++++++++++++++++++++++++++++++++++++++++XX+X+++++++++++ =+XXXXXXXXXXXXXXXXXXXX
+ ''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''  '''''''''''''''''''''
+  ...       ............................................................................ .....   .....................
+  ==           ===-HHHHHHHHHHHHHH-=====-===========        =  ======= ====  ====-- -==     ===    -HHHHH-HH-H-H-HH---H
+                   CBCBCCBBBBBBBC                                                                  CCCCC CC C C CC   C
+                          VVVV
+                           AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOO
+-++++++--+++++++++XXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++++XX+++X++=++++++ -+XXXXXXXXXXXXXXXXXXXX
+  '''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''  '''''''''''''''''''''
+  ....     ............................................................................. .....   .....................
+  = =           ==----H-HHHHHHHHH===  =====  = ==          =  = =  =         ===--= =-   = = =   =-HH-H---HHHHH-HH----
+                      B CCBBBBCCC                                                                  CC C   CCCCC CB
+                            V
 +1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOO
+   -+++-==++++++++XXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++XX+++X+++++++++ -+XXXXXXXXXXXXXXXXXX++
+     '    ''''''''''''''''''''''''''''''''''''''''''''' ''''' '''''''''''''''''''''''''' ''''''  '''''''''''''''''''''
+            ...........................................  ..     .. . ..    ............. ......  .....................
+               ===---H-HHHHHHHH-==   ===    = =                               = H- ==-=   ===    =-HHHH--HHHH-HHH---==
+                     C CCCCBBBC                                                 C                  BCCC  CBBB CCC
 XX1AAZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      -=++++++++++++XXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++=-+++XXXX+++XXXXX++++XX
+         '''''''''''''''''''''''''''''''''''''''''''''''  ''  '''''  '''''''''''''''''''  ''''    ''''''''''''''''''''
+         ..............................................        . .        ..............  ....    ....................
+               = ===---H--HHHH---====  ==  == == =                             ==== =-==  ====    ==--H-===-----====--
+                       C  BBBC                                                                        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+----=++++++++++++XXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++++++++++X++=+XXX+++++XXXXXXXXXXXXX+XXXXX
+      '''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''' '' '''''''''''''''  '''''' '''''''''''''''''''''
+      ..............................................      .  .   ..        .............  .....   ....................
+         ====== =---HHHHHHHHHHHH-==    = = = ===                               = = ===-=  =---    =HHHH-H-HHHH--=-----
+                    CBBCBBBBBBCC                                                                   CCBB C BCCC
+                          VV
+                           A
 OOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+ -===++++++++++XXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XX++++++XX+XXXXXXXXXXXX++X
+       '''''''''''''''''''''''''''''''''''''''''''''''''' ' '''' '''''''''''''''''''''''''''''''' ''''''''''''''''''''
+       ..............................................         .   . .... ................ ....... ....................
+        ===== = =----HHHHHHHHHH-== =   = =       =                             = = =====   =-H     =--=---HHHH-----==-
+                     CCBCBBBCCC                                                              C            CCBC
+                         VVV
+                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++X++X+XXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++++X++++X++X+++++X+++++++XXXXXXXXXXXX+X+X+
+ '' '''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  .  ....................................... ........ .   .    ..... .................................................
+         ====-==-=---HHHHHHHHH--===               =                       = ===-=  =-= -=  ==H===  ==---HHHHHHHHH=-=-=
+                     CCCCBBBBB                                                               C          CCCBBBBCC
+                          V
+                          A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ =++++++X++++++++++X+XXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++X+++++XX++++++XXX++++++XXXXXXXXXXX+X+XX
+   ''''''''''''''''''''''''''''''''''''''''''''''''''   '''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''
+   .........................................   .  .      .... . ..................  ...... ...........................
+     = =-====== ===-=--HHHHHHH-= == =    =                         =    =  =   -==  =HH==   =---=== ==HHHHHHHHH--=-=--
+                       CBBBBCC                                                       CC               CBCCBBBBB
+                         V                                                                             V     V
+                         A
 ZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   +++++++XXXXX+X++X+XXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XX+++XXXX+++++++XXXXXXXX++XXXX
+    ''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+    ....................................... .. ....     ..............................................................
+      == =--H--=-==-=H-HHHHHH-== = ==                       = == =    = = = = == ==  ===--  =--H-==  = =-H--H-H-==----
+            C        C CBCCBC                                                                  C         C  C C
+                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+---=++++++XXXX+++++++XXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++++++X++++++XX+X+++++XXXXX+++++++++++++XXXXX
+      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      .................................. ... .      ..   ............................................. ...............
+        ==----=======-HHHHHH--====                        =     ===    === ====-== ===--=-==  =-----=   ====== ==HHHH-
+                      CBBCCC                                                                                     CCCC
 XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ --=++++++XXX+++++++XXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXX+++++++++++++++++++++XXXXXX
+     '''''''''''''''''''''''''''''''''''''''''  '''   ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     ................................. . . ..              ...........................................................
+         =--H==== ==--HHHHH--===  = =                          == =  ==  = ======  ==-HHH--= =   == === == =  ==-HHHHH
+            C         BBCCC                                                           CBC                        CCCCC
+                       V
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ =+--=++++++++++++++XXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXX++++++++++X++++++++++X++X+
+      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       ............................ ..  . ..   . .  ........................................................ .........
+        ==== = =====-HH-HH--===  =  =                    =      ===   =       == == ==--HH--==  == ===-= = = ====-==-=
+                     BB CC                                                              CC
 OMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+- =+=++++++++X+++++XXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++++X++++++++XXXXXXXXX+XXXXXX+++++++++++X+X+
+     '''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      ...............................  .     . .. .    ...............................................................
+        == ==-= = =-HHHHH---=  =  =                        = =   =  ==== =====H====  ==HHHHHHH--=----H-===========-=-=
+                    BBCCC                                                     C        CCCBBCC       C
 MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -+++++++X+XXX++++XXXXXX+++++++++++++++++++++++++++++++++++++++++++++++++++++X++++++++++XXXXXXXX+++++++X+++++++++++++
+     '''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+     .................................  ..   .... ........ ...........................................................
+      ==  -=---== =HH-HH-=====    =                            ===  = ==  = ==-=== = = ==-HHHHH--==== ==-========== ==
+                   CC CC                                                                  CCCCC
 1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  --=++++XX+++++++++++XX++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      ................................ ...    .  .......  . ..........................................................
+      ===--====== ====H-====       ==                         === ==    == = === = ===== ============ ==  ==        =
+                      C
 )XAOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -- +++++X++++++++X+XX++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+      ''''''''''''''''''''''''''''''' ' '''''' ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''
+       ............................              .. .. ....................................................       .  .
+        = =-   === =-=H-===                             ===       = ==  =   = =  = ==  ====== =   =  ===  =
+                      C
 XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -+++++++++++++++++++++X+++++++++++++==+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+  ''  '''''''''''''''''''''''''' ' '       ' '      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''
+   .  .................... .                          ...  ...................................................      .
+         =     = ======-                                              =      =      == ==== ============   =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++=--=+++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++-++++++
+  ''    ''''''''''''''''''''''  '' ''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        '
+         . ... ............ .               ....  .  ...................................................... .        .
+                ====  =-                                  =   = = =   =      - ====   === ==============
 ZZZMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       -+++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=-++++++
+         '' ''''''''''''''' '    '''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''  '
+         .. ..............       .       .... ..... ... ....................................................
+                = =  = -                                 =   =  =      === = = ==== == =  == ========= =
 ==11XAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          =++++++++++=++++++++==++=++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-===+
+           '   ' '  ' '''' ' '               '''''   '' '''''''''''''''''''''''''''''''''''''''''''''''''''' '       '
+                       ..                                .. ............................................. .
+                       =                                        =                 =   =    = ========== =
 +))1ZAAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          -=++++++=++++X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++===
+            '''     '' ''          '''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ..        ..                  . ...  ......    ...............................................
+                       -                              =      = ===  ===     == ==  ====  ==== ====  = =
 ++)1Z1ZAAMMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            -==++++++++X++++=+++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======+
+               ''''' ''''            '''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 ...   ..                  .  .. ........  .................................................
+                       -                       =  =          =   =   =      =    =   ==   === == === = = =
 )=))Z1ZAXMXXAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              ---=++++++++==++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+=+
+                   ''  ''          ' '    '  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '
+                       ..                      ...... .. .. ............... ....... ..........................
+                       ==                                      == = =       =        = ===    ======== ==  =
 +)+11Z1ZZAZZXMZAAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                   =+-=+++=-===--+=++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+
+                       ''          ''''  ''    ''''''''''''''''''''''''''' '' ''''''''''''''''''''''''''''''' '''' ' '
+                       ..                 .     . ......... ........... .. ..  ..   ......................... ...
+                        =                         =             =  =        =          =  = == ==   =  =   =
 +1Z11XXX1Z1ZXAAZAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    -=-++++====+++++=++++++=+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
+                       ''            ''' ''    ''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''
+                        .                      ..  ...... ... ................  .  ........................   ..
+                                                                =  ==       =         = === = = == === ==
 ))1Z11Z1Z1ZXZXAAOMMMMOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                -    =-=+++=+==++++++++++++== =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                        ''        ' ''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ..           .          . .........  ................................................... ..
+                        =                                    == = ==                       ============  ===
 ))ZZ11ZZZZAAAMMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                -- ----=+++===++++++++++==-===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                        ''     ''''''''        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''
+                        ..       ... .           . ...  ........................................................ ..
+                        =                                 =         =      = =           = ==== ==== ======
 1)1ZXXZ1AAAAAXMMOOMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                --  -- -++++++++++++++++++--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                        ''   ''''''  ''          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ..                       . . ..    .................. .....................................  .
+                        ==                                    =                    = =  = = === = ===== = ==
 11ZZXX1AXAAMAMAMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                 -- ---=++++++++++++++++=----==+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                        ''' ' ' ''''''            '' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ..       ..                  ... ... ............ ... ...................................... .
+                        ==                                         ====    =      =          =   = ====  ==   =
 )1ZXAXAAXXAAMMMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                -- -==--++++++++++++++++=-----==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                        '''''' '''''''              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        ...     . ...                      .............. ............   . ...........................
+                                                               =   = ==    =   =   =       == =  == ==    = ===
 1XAXAXAAAMMMMOOOOOOMMOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+             --=-=-  ---++++++++++++++=== --==+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                         ''''' '''''''           '' '''''  ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                         ..    ....                          .......... ...............  .............................
+                          =                                               ==   =   = =        = =  =  == ====   =
 )1ZZZXZZZAMMMMMOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+               -- - ==-=+++++++++++++++==+-=-- -+=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                         ''  '''''''''                   ''    '''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                         ..    .                                 . .      .. ........... ............................
+                         =                                                     =            =   =  = ==== =  ===
 1ZX1AAOMOOOMMMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      - ---   --- -=====++++++++++++++=+==-=-=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                         '''' ''''''                 ''' ' ' '''''''''''''''''''''''' '''' '''''''''''''''''''''''''''
+                         ..   ..                               . ...... . .... ... .         . ................... ...
+                         =                                                 =                    =  ==     =======
 11XAMAOMOMOMOMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      - - - -    ===+==++++++++++++++++-=--=-=- -==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                        '''  ' '''''                ''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                         ..    .                              ... ...   . ........ ...    .... .......................
+                         =                                                ==    =                 =   = = ======= ===
 AZMMMAMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       - ------==++++++++++++++++++++==+-----= - -++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                  ''''  ''''''''''                    ' ''' ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                         ........                               ........ .........  .. .. .. . .......................
+                         ==                                           =         =                       ==========  ==
 XAMOMOOOMOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   - --- = - -====++++++++++++++++++++=+======== ==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                   '''''''''''''''''                '  ''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                        .... .....                            . ...... .......... .......... .. ......................
+                        ===                                              ==                  =     = =  ========= ==
 AMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     ---====+=++++++++++++++++++++++++++--=+==----+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++X++++
+                ''  ''''''''''''''''''             ''  ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 .   .............. .                  .   .  ..  .... ............... ......... .....................
+                         ==   =                                           =                      =   ====== =====-===
 MAAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     -==+++++=++++++++++++++++++++++++=-=== -=  ---==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++X+++
+                 ''''''''''''''''''''                      ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                    .  ............                            .  ...  ............... ...............................
+                         ===     =                                                        ==         == ==  = ====-===
 OMOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+- --  =++=+++++++++++++++++++++++++++=------  - ----==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++X+X++
+                '' '''''''''''''''''                     '  ' ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                 . ..  ...........                                  . ................................................
+                         = == = =                                        =   =            ==          = =  == ===-=-=
 MMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOXOMMMOMOMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -----====++++++++++++++++++++++++--- - -   - - -- -=====++++++=++=++++++++++++++++++++++++++++++++++++++++++++XX++
+                ''''''''''''''''''''                         '''    ' ''''''''''''''''''''''''''''''''''''''''''''''''
+                 .   ..............                                     ... ..........................................
+                         ==   =  =                                      ==   =                            == =====--==
 MMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOMOMMMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  - -=---=+===++++++++++++++++++++++++==--  --- -   --- ====-=++++=+++++++++++++++++++++++++++++++++++++++++++++++++X+
+               ' ''''''''''''''''''''                                   ''''''''''''''''''''''''''''''''''''''''''''''
+                  ..................                                    ..............................................
+                       =====     =                                                =    = =    =         =  = ==== ==-=
 MMMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMMMMMMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   --= -===-=+++++++++++++X+++++++++++-- --        - ---=--====+++=+++++++++++++++++++++++++++++++++++++++++++++++++++
+             ''''''''''''''''''''''''                           ''     '''''''''''''''''''''''''''''''''''''''''''''''
+                ...................                                     .. ..... .....................................
+                         =-=    =                                             =                   =   == ====  = =====
 OMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOMMAMMAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-   - ---=++=+++++++++++++X++++++++++++=-   -        ------==+==++++++++++++++++++++++++++++++++++++++++++++++++++++++
+               ''''''''''''''''''''''                            '     ''' '''''''''''''''''''''''''''''''''''''''''''
+                 ..................                                     ..  ..........................................
+                      =  =H= ====                                                     == =     =             === =====
+                          C
 MMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOMZXXXAAMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     --===+=++++++++++++++X+++++++++====-   -          - ---=-+====-====+++++++++++++++++++++++++++++++++++++++++++X+X
+             '' ''''''''''''''''''''                                    '    ' '''''''''''''''''''''''''''''''''''''''
+                ..................                                      .    .       ....................... .........
+                    = = ==-=== = =                                                   =   =       =  =  =       =   -=-
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOAAZ1ZZZAAOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ ----=-====++++++++++++++XX++++++++++===-- -         --- -==--==+==+++=++++++++++++++++++++++++++++++++++++++++++++++X
+           '' '''''''''''''''''''''                             '       '  '''''''''''''''''''''''''''''''''''''''''''
+              .....................                                     .  .. ..  ........................ ...........
+                 =  =====-H===== =                                                   =    =         =   =     =  ====-
+                          C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOAZZXZZZZXAAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+----=+==+=+++++++++++++++XX++++++++++=-= - -              ----=====+++=++++++++++++++++++++++++++++++++++++++++++X++++
+            ''''''''''''''''''''''''                                   '''  ''''''''''''''''''''''''''''''''''''''''''
+                ..................                                     ..    ..  .....................................
+                 =  ==  =-H= =  ==                                                   =  === =  == =  ==         =-====
+                          C
 OMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMMOMXXXZZXXAZAAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+- --= +++=++++++++++++++++XX++++++++= --  -               ----=++====+++++++++++++++++++++++++++++++++++++++++++XXX++X
+           ''''''''''''''''''''''''                                    ''' '''''''''''''''''''''''''''''''''''''''''''
+                 ..................                                    ..   . . ... ..................................
+                 =  === ==H-=== =                                                   = =   = ==    === = = =    =H--==-
+                          C                                                                                     C
 MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMMAZ)ZZ)ZZZZMMOOMOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  ====+=++++++++++++++++++XXX+++++++--- --              -- ------== =-=++++++++++++++++++++++++++++++++++++++++XXX+XX+
+          '''''''''''''''''''''''''                                    ' '   '''''''''''''''''''''''''''''''''''''''''
+              .....................                                                  .. ..............................
+                   == ====HH-===                                                          = =  == =    =   =   -H-=--=
+                          CC                                                                                    C
 MOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMAX1Z11111ZX11XAAMMAAMMMOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -  ----+=+++++++++++++++XXXX+++++++-                           ------ +++=++++++++++++++++++++++++++++++++++++XX+++X+
+           ''''''''''''''''''''''''                                    '       ''' '''''''''''''''''''''''''''''''''''
+               . .................                                     .              ................................
+                   =  ===-H--=                                                               =  === = =       =--===-=
+                          C
 MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAXAZZZ11)ZXZZZXXXMMAAMMMMMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  --+++++++++++++++++++++XXXX+++++++=                              -- =+++=+++++++++++++++++++++++++++++++++++XXXXXXX+
+        '''''''''''''''''''''''''''                                    '    '  ''''''' '''''''''''''''''''''''''''''''
+           ........................                                    .             . ...............................
+                 =   ====-HH-=====                                                           = = ==  =       =HH----H=
+                          CC                                                                                  CC    C
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAXZ111111Z1111XXXXXXXMMMMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ ----+++++++++++++++++++++XXXX+++++=+-                             ---++++++++==+++++++++++++++++++++++++++++XXX+X++++
+         ''''''''''''''''''''''''''                                    '        '' '''''''''''''''''''''''''''''''''''
+            .. ...................                                     .           .   .... ..........................
+                 = = =====HH--==                                                                  =  =       HH-=-====
+                          CC                                                                                 CC
 AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMM)1))1+)Z1)Z11ZAXZXAX1XXMOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  ---+++++++++++++++++++++XXX++++++=                             - - -+++==+++++++++++++++++++++++++++++++++XXXXX+XXX+
+       '''''''''''''''''''''''''''                                    ''     ''  '''''''''''''''''''''''''''''''''''''
+            ....................                                                     .. . ............................
+               == ========HH-===                                                              =     ===  == HHHH-=---=
+                          CB                                                                                CBCC
 OMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAX)1)Z)1)111)Z111ZZZXAZZXMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+- --==++++++++++++++++++++XXX+++++=--                            -- --+++++==++=++=+++++++++++++++++++++++++XXXXXXXXXX
+       '''''''''''''''''''''''''''                                    '         '  '''''''''''''''''''''''''''''''''''
+          .......................                                     .             ..   .............................
+             =   =========HH-= =                                                                     ====  =HHHHHHHH--
+                          CB                                                                                BCCCBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMZA1Z1)))1111Z11ZXXZZZAXAMMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-===-=+++++++++++++++XX++XXX++++++=-                             -  --+=++=-=+==++=+++++++++++++++++++++++++XXXXXXXXXX
+       '''''''''''''''''''''''''''                                    '             ''  ''''''''''''''''''''''''''''''
+        . ......................                                      .                   ... ........................
+                    =-- =-HH===                                                                         ====HHHHHHHHH-
+                          CB                                                                                CBBCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMA1Z))))))))111ZZXZXZZZAXAAMOMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+---===++++++++++++++++X+++XXX++++=--                             -    ++==-=--===++++++++++++++++++++++++++XXXXXXXXXXX
+        '''''''''''''''''''''''''                                     '             ''''''''''''''''''''''''''''''''''
+         .......................                                                         .... ........................
+              =  =====-===HH-===                                                              =   == =     -HHHHHHHH--
+                          CC                                                                                BBBBBCCC
 XMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX111)====-====))Z)+111=))11ZZZZZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    --=-=++++++++++++++++++X++++=-                                   -+=-------==++====+++++++++++++++++++++XXXXXXXX++
+          ' ' '''''''''''''''''                                                         ' '' '''''''''''''''''''''''''
+                 ..............                                                              ... .....................
+                   ==== ===-= =                                                                        =   =-HHHHHH-==
+                                                                                                             CCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZX)1++--=-=+++)))))1)))1Z1ZXXXXMOOOOMMOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+---==+++++++++++++++++++++XXX++++=-                                  -+=-  ---- =+=-=+++++++++++++++++++++++XXXXXXXXXX
+      ' ''''''''''''''''''''''''                                                         '''''''''''''''''''''''''''''
+        .. .....................                                                            .. .......................
+                 == ======-H-=                                                                           ===HHHHHHHHHH
+                           C                                                                                CBBBCCBBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXA1111+==++==+)+)++++))))+1)ZXZXXAOOOMOMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-===+++++++++++++++++++++XXX++++==                                   ++- -     --====+==++++++++++++++++++++XXXXXXXXXX
+     ''' '''''''''''''''''''''''                                                        ''''''''''''''''''''''''''''''
+            ....................                                                           . .........................
+              ==   = ====--H==                                                                     ==  = =  -HHHHHHHH-
+                           C                                                                                 BBBBCCCC
+                                                                                                              V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXX1))===+==+=))=+)==+))+))))1ZZZXAOOOMMMOMMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--==+++++++++++++++++++X+XXX+++++-                                   ++-   -  -  -===+=++++++++++++++++++++++XXXXXXXXX
+     '''''''''''''''''''''''''''                                                        '  ' '''''''''''''''''''''''''
+      . . .....................                                                              ...... ..................
+             ==========-=-HH===                                                                 =      == = =HHHHHH-H-
+                          CC                                                                                 CBBCCC C
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZ11+))=+-===-=+=--++++===+++=)1==ZOOAZ+ZXXZMMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -==++++++++++++++++++++X+XX++++=                                    +-           -----+=++++++++++++++++++++XXXXXXXXX
+      ''''''''''''''''''''''''''                                                         ' ' '''''''''''''''''''''''''
+         ......................                                                               ........................
+            =   ==== ===-=--==                                                                      = = = ===HHHHHHH--
+                                                                                                             CBBCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXZ1))=+--======-+++=--==-++))11)+MOOZ1ZXXXXMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--=+++++++++++++++++++X+XXXX++++-                                    +-           =---=+-++++++++++++++++++++XXXXXXXXX
+     '''''''''''''''''''''''''''                                     '                     '''''''''''''''''''''''''''
+       . ......................                                      .                         .. ....................
+             = =======-=--HH===                                                                       ====== -HHHHHH--
+                          CC                                                                                  BBBCCC
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOZZ)1)+=+==-==-=====---=-===++)))MOM1)11Z1ZAAAMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -=+=++++++++++++++++++++XXX++++=- -                                 +            =+ -==--=+++++++++++++++++++XXXXXXXX
+     '''''''''''''''''''''''''''                                                             '''''''''''''''''''''''''
+        .......................                                                                ..  .   ...............
+           === ====== ===---===                                                                        ==    =HHHH-H--
+                                                                                                              BBBC C
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXZZZ+))+===---=---==---++==)=)1OOA)1)1111ZMXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -+=+++++++++++++++X+XX+XXXX+++++--                                 ==            -=---=-=++++++++++++++++++++XXXXXXXX
+     '''''''''''''''''''''''''''                                                           '''''''''''''''''''''''''''
+        ........................                                                              ...  ...................
+          ==  =====-=--=----===                                                                           =   HHHHH-HH
+                                                                                                              BBBBB CC
 MOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZX11+==-=------------  -=--==++)OM+++)))11XXZAMOMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -- ==+++++++++++++++++X++X++++++-                                  =              -    -=++++++++++++++++++++XXXXXXXX
+      ''''''''''''''''''''''''''                                                                '''''  '''''''''''''''
+          . ...................                                                                     .   ..............
+             = ========-==-===                                                                           =    -HHH-H--
+                                                                                                               BCC C
 OMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXZ)++====-- ---=----=-----=====)OA+=)))Z)1M1Z1OOXXXAXOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+- -==++++++++++++++++X+XXXX++++++=                                  +             --     --=+++++++++++++++++++XXXXXXX
+      '''''''''''''''''''''''''''                                                             '''' '''''''''''''''''''
+         . .....................                                                                .    . ...  ..........
+              =  ====-=----==                                                                                 =HHH-H--
+                                                                                                               BBC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZZ11)==- -----==- --= --=- -==-1OX++)+))11A)1MOM1XZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=====+++++++++++++++XX++XXX++++++==-                                +             +      -=++++++++++++++++++++XXXXXXX
+        ''''''''''''''''''''''''                                                            ''''''''''''''''''''''''''
+         ......................                                                               ........................
+               =====--==---===                                                                         ==  =  =HHHHH--
+                                                                                                               BCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZ1111==---- ------ ==---==-=--=ZOX)++)+))11)1AOZ1ZXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--===+++++++++++++++XXXX+XXX+++++=                                  +             +      -=++++++++++++++++++++XXXXXX+
+      ''''''''''''''''''''''''''                                                            ''''''''''''''''' ''''''''
+        ........................                                                              ...........  .  ........
+              == ===----=---= =                                                                ==  ==         =HHH-H-=
+                                                                                                               CCC C
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZ1Z))=-  - -- ---  -----=----- XOX)==+-)+1Z11A1+11XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -==+++=+++++++++++++++++++X+++++-                                  +                   --=++++++++++++++++++++XXXXXXX
+      ' '''''''''''''''''''''''''                                                          '''''''''''''''''''''''''''
+        .......................                                                               ............... ........
+              = ===========-                                                                   = === =     =  =HHHH-H-
+                                                                                                               CCBC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ1))+--=- --  -   ----------===OO))+)+))111))MX)11XAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+===+++++++++++++++++XXXXXX+X++++++                                 -+                    -=+++++++X++++++++++++XXXXXXX
+      ''''''''''''''''''''''''''                                                            ''''''''''''''''' ''''''''
+      . .......................                                                               ........... ... ........
+         == =  =====------=-==                                                                = ==-==          HHHHH--
+                                                                                                               CBBCC
 OMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX1Z1+=-------    - -----------==OO)--=++1)))++++++1XZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+- - ==+==+++++++++++++++++++++++--                                 --                     -==++++++++++++++++++XXXXXX+
+           '''''''''''''''''''                                                               '''''''''''' ''' ''''''''
+            ..................                                                                ...........  .  ........
+                    === ====                                                                     ====         =HHHH--=
+                                                                                                               CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZ11)+=------    -  ---- --=----=OM)===)))))+==+==+1ZXAMMOMOOOOOOOOOOOOOOOOOOOOOOOOO
+----+++++++++++++++++++++++++==--                                  -                       - -+++++++++++++++=+XXXXXX+
+      ''''''''''''''''''''''                                                                   '''''''''''''' ''''''''
+          .  ...............                                                                    ......... .   ........
+               =   =                                                                            ========       H-HH--=
+                                                                                                               C BC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXZ)++==--- -        --  - - --=OZ+==+)+)1))+=-+=)11XZXMOOMMOOOOOOOOOOOOOOOOOOOOOOO
+===+++++++++++++++++++++++++++=---                                 =                       --  ++X+++++++++++++XXXXXXX
+     ''''''''''''''''''''''' '                                                                  ''''''''' ''' ''''''''
+      . ....................                                                                    ......... ..  ........
+              =    ====    =                                                                    =-= == =       HHHH---
+                                                                                                               BBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOAAZ11))+----   -     --- -------+OX)++++=+=++=---=))11ZZAAZZOOOOOOOOOOOOOOOOOOOOOOOO
+==++=+++++++++++++++++++++++==-- -                                 =                          -+++X++++++++++=+XXXXXXX
+      ''''''''''''''''''' ''                                                                   '''''''''''''  ''''''''
+         ...............   .                                                                    ........ .    ........
+            =  ==== ==                                                                           =-=   =      =HHH----
+                                                                                                               CBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMXZZ1++===    - -  --- - -- - =)OZ)++))=+)=+=-++)11ZXXMMAAXOOOOOOOOOOOOOOOOOOOOOOOO
+=-==++++++++++++++++++++=-=+---- -                                 =                          =+++XX+++++++++=+XXXXXXX
+     ''''''''''''''''''    '                                                                   '''''''''''''  ''''''''
+         .............     .                                                                    ........ .    ........
+               = ==                                                                              =--====      =HH-----
+                                                                                                               CB
 OOOOOOOOOOOOOOOOOOOOOOOOOMMOOOMMMMOAAXZXZ)+=---         - --------1OX1++))))1)===)+)AXZZAAAOXXOOOOOOOOOOOOOOOOOOOOOOOO
+==++++++++++++++++++++==-  +--    -                                =                       -  =+++++++++++++==XXXXXXXX
+    '''''''''''''''''      '                                                                   ''''''''' ''   ''''''''
+     . .............       .                                                                   .........      ........
+          ==                                                                                     =====        -HHH----
+                                                                                                               CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAAXZMMAAM111=--          ---   - -=1OX)1+))++)1+=+++)1Z1ZXXOOMOOOOOOOOOOOOOOOOOOOOOOOOO
+=++++++++++++++++++++====--+                                       +                      -= -+++++++++++++==+XXXXXXXX
+    ''''''''''''''''       '                                                                  '''''''''''''   ''''''''
+       .............       .                                                                   .........      ........
+            ====                                                                                ==== =        HHHH----
+                                                                                                              CBBC
 OOOOOOOOOOOOOOOOOOOOOOOOMMOOMMAMAXAAMMMAZZ1)=----    -  --- -----=1OX)111)11Z11))1111ZZAAAOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++==--  -+                                       =                      ---++++++++++++====+XXXXXXXX
+  ' '''''''''''''''        '                                                                   '''''''''     '''''''''
+    ..............                                                                             .........     .........
+         =  ===                                                                                    ===        HHHHH---
+                                                                                                              BBBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMZXAAMXOAXZ1)===--    - ---------=1OX1)1111Z))11ZZ111XXXXAMMOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++--------+-- -       -                           =                        -=++++++++++++==-+XXXXXX++
+''''''''''''''''''         '                                                                   '''''''''     '''''''''
+     ............          .                                                                    .  ... .     .........
+        =  ==                                                                                                =HHHH--==
+                                                                                                              BCCC
 OOOOOOOOOOOOOOOOOOOOOOOMMOOOOMOOMMAOMMAMMMZXZ1)+-- - -  ---- -=-==1MZ)11111)1111Z1Z11ZMAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++==-----  --+- --   -                                                       ---==+++++++++===+XXXXXXXX+
+'''''''''''''''            '                                                                     ''''''     ''''''''''
+  . ..... ....             .                                                                       ...       .........
+        = =                                                                                         =        HHHHHH--=
+                                                                                                             CBBCCC
 OOOOOOOOOOOOOOOOOOOOOOMMAAXOXMOMMXAMOMXAMMXAMZ1)---  -  -----=----ZA)111)Z11ZZ1Z111Z1ZAXAMMMOOMOOOOOOOOOOOOOOOOOOOOOOO
+=++++++++++++++=---==-     +  -     -                                                       -- -=+++++++=---+XXXXXXX++
+  ' ''''''''''                                                                                    ' '       ''''''''''
+      ......                                                                                      .         ..........
+         = =                                                                                                =H--H---==
+                                                                                                             C  C
 OOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOMOMOMMOOOOMOOMOOX1==------ --==-===AAAXZZZZZZZXXAAMXAAXAAOMOOOOOOOOOOOOOOOOMOOOOOOOOOOO
++++++++++++++++++==++=-- --+-=- - -  ---= == --                                         - --==+++++++++=== +XXXXXXXX++
+''''''''''''''''           '                                                                      '         ''''''''''
+  ............             .                                                                                ..........
+    = ==  =                                                                                                 -HHHHH--==
+                                                                                                             BCCCC
 OOOOOOOOOOOOOOOOOOOOOMOOMMMOOMOOOMOMOOMOOOOOOOOOA1+-- -- ------=+=AXZZZZX1ZZZXXMMAZAAAAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++=+====- --   += --- - -- --++++++-                                        ---===++====+===---+XXXXXX++++
+ '''''''''''               '                                                                               '''''''''''
+ .........                                                                                                 ...........
+      ===                                                                                                  =HH----====
+                                                                                                            CC
 OOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOZ)====----==+++)MXZ1ZZZ1ZZXXAMMAMMMMOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOO
+++++X+++++++++=+--------- -+=-++------===+=++++++-                                    -------+++====-==+- +XXXXXXXXX++
+'''''''''' '               '               '''''                                                          ''''''''''''
+.........                  .                ..                                                            ............
+   =-===                                                                                                   HHHH--H--==
+                                                                                                           CBBC  C
 OOOOOOOOOOOOMOOMMMOOMMMMOMOOOOOOOOOOMOOOOOOOOOOOOOOOZ)+===-==--=+)M1ZZAXZXXZXXMAMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+++++==+= --   --    - -+=-=====- --==++++++++++-                               - -------===--==-=-=--+XXXXXXXXXXXX
+'''''''                    '             ''''''''''                                                      '''''''''''''
+......                     .                .......                                                       ............
+-HH==                                          = =                                                        HHHHH-------
+ CC                                                                                                       CCCBC
 OOOOOOOOOOOOOMOOMOMOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)+=+=++==))OXZXXMXXAAMAMMOMMMMMOOOOMOOOOOOOOOOOMAOOOOOOOOOOOOOO
++++++=++==-=- -- - ----- --+===+========+++++++++++++             -             -     ---- ---===++===  -XXXXXXXXXX+++
+''''                       '               ''''''''''                                                    '''''''''''''
+...                        .                ........                                                     .............
+==                                                =                                                      -HHHH-H---===
+                                                                                                          BBBC C
 OOOOOOOOOOOMMMOMMOOOMMOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX1))+)))Z1O1ZAXAZAAXAAMMMMMMMOMOOOOMOMOOOOOOOMMOOOOOOOOOOOOOOO
++==--------   -  ---  -   -+==-----==--=+++++++++++++++           -                  - ---- - ---=-=-  -+XXXXXX++X++++
+                           '              '''''''''''''                                                 ''''''''''''''
+                           .                ...........                                                 ..............
+                                                  ====                                                  =-HHHH-==-====
+                                                                                                          CCCC
 OOOOMMMOOMMMMMMMMAMMAMMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ1)111ZO11XZMAMMMMXMMMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+----   --                  +==+++-===-==+++++++++++++++++         -                - --=-=-==---==+++--XXXXXXXXXXXXXX+
+                           '              '  ''''''''''''                                              '''''''''''''''
+                           .                 ............                                              ...............
+                                                   =====                                               -HHHH-H-------=
+                                                                                                        BBCC C
 XXAAMAXAMMMAXXXXZXXZAXAAOZAOMMMOOMMMMOMOOOOOOOOOOOOOOOOOOOOX)Z11)+OZ1ZZZZAAMAMOOMOMOOOOOOOOMOOOOOOOOMMOOOOOOOOOOOOOOOO
+                        -  =   --    - =+=+++++++++++++++X+       =           -- - =------- -----==-  XXXXXXXXXXXX++++
+                                            ''''' ''''''''                                            ''''''''''''''''
+                                               ..   ......                                            ................
+                                                     = ==-                                            -H-HHHH-----====
+                                                                                                       C CCCC
 XXAAMOMMMMAMAAMAMMMMOAMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAXZAOAZAXAAMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     -              -   -- +-===+==---=-=++++++++++++++++XXX+     =       -- ----=++==++++==++=+++=++XXXXXXXXXXXXX+XXX
+                           '               '''''''''''''''''                                '  ''   ''''''''''''''''''
+                                                ............                                         .................
+                                                =       =---                                         HHHHHHHHHH---=---
+                                                                                                     CBBBBBCCCC
+                                                                                                      V
 111ZZZAAAZ1AXXXAAMAMMMOMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAOMXAAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      -    +==-==-------=-=++++++++++++++++XXX+-  +       ----==-===++=++==+++=++==+XXXXXXXXXXXXXX+XX+
+                           '                '''''''''''''''''''                                '   '''''''''''''''''''
+                                                ...............                                    ...................
+                                                     =  ===-H-                                      -HHHHHHHHH--H-=--=
+                                                            C                                        BBBBBBCCC  C
 XXZXZAXAXZXAXAAMMM1MOMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAAMMOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    -     -+====+=-======+++++++++++++++++++++XX+-+     --  --=-===-=-+=++++++==++XXXXXXXXXXXXXXXXXX++
+                           '               '''''''''''''''''''''' '                      '   '   '''''''''''''''''''''
+                                               .... .............                                .....................
+                                                     = =======H-=                                =-HHHHHHHHHHHHHH---==
+                                                              C                                    BBBBBBBBBBCBCC
 1ZZZ1Z1ZZZZ1ZZAAZXMMMAMAOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        -  ++===++===-====+++++++++++++++++++++XXX++    -  --==+++==++=+++++++++XXXXXXXXXXXXXXXXX+++++
+                           '               ''''''''''''''''''''''''                 '  ' ' ' ' '''''''''''''''''''''''
+                                            .. ....................                        .   .......................
+                                                 =     ========-HH                              HHHHHHHHHHHHHH---====
+                                                                CC                              CBBBBBBBCBBCCC
+                                                                                                  VV
 )111)))ZZ111XZZAAAMMMMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                          -+====++======++++++++++++++++++++++++XXXX+++=---====+++++++=+++++++XXXXXXXXXXXXXXXXXXXXXX++
+                           '              ' ''''''''''''''''''''''''''          ''  '   ''''''''''''''''''''''''''''''
+                                            .  .......................                    . ..........................
+                                                      = ========----=                       ==HHHHHHHHHHHHHHHHH-----==
+                                                                                              CBBBBBBBBCCCBCCCC
+                                                                                                VVV V
 +)+))))))11111Z1ZXXMAMAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           +=-------=---=++++++++++++++++++++++++++X+XXX+++++++=+++==+++++++XXXXXXXXXXXXXXXXXXXXX++X++
+                                            ' '''''''''''''''''''''''''''''      '   '''''''''''''''''''''''''''''''''
+                                              ..  .........................             ..............................
+                                                     = == === =====-=---                  ==HHHHHHHHHHHHHHHHHH---==-==
+                                                                                            CBBBBBBBBBBBCCCCCC
+                                                                                             VVVVV  V
 ==-++)=)11)+1)Z+)111)ZXAMXXOOMMMMOAMMMOMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           --    -    -    -+=++=++++++++++++++++++++XX++X+++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXX+X+
+                                                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                    . ............................ ...................................
+                                                                = ===--==-====       == =-H-HHHHHHHHHHHHHHHHHHH----=-=
+                                                                                          C CBBCBBBBBBCBCCCCCCC
+                                                                                             V
 ==)+1)1)1+111ZZ1Z11AZ1XXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         --===+=+====+=++++++++++++++++++++++++++XX++++++X+X+XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++
+                                         ''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                               .......................................................................
+                                                       ======= ==--======-=-=---=-------HH--HHHHHHHHHHHHHHH-HHH-==== =
+                                                                                        CC  BBBBBBBBBBBBCCC CCC
+                                                                                             V VV V
 ==++===+)11X11Z1XAXMZAXMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        -  ==-+-==---=====+=+++++++++++++++++++++++++++XX++++X+XX+X+XX+XXX+XXXXXXXXXXXXXXXX+X+++++++++
+                                              ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                  ....................................................................
+                                                       ==  ====== =====--====-=--=-=--=---=-HHHHHHHHHHH-HH-=-=========
+                                                                                            CBBBCCCCBCC CC
 ===+)++1)+)11ZXZZAAMMMAMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         - =+=+=+======++++++++++++++++++++++++X++XXXXX+X++++++XX++XXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++
+                                        '     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                              . ......................................................................
+                                                   =  == = =  =-==-----=-======--==---------HHHHHHHHHHHHHH----=-== ==
+                                                                                            CBBCCBBBBBBCCC
 =-+=+=+1)1Z11X1ZAAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      -----=+==+++++++=+++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++
+                                  ''   '''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                              ... ....................................................................
+                                                       = =========-----------------HH-HHH---HHHHHHHHHHHHHHHHHHH--=====
+                                                                                   CC CCC   BBBBBBBBBBBCBBBBCCC
+                                                                                              VVV VVV
 ===))=+==1111)11AAMMAAAMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        -- -======++==+=++++++++++++++++++++++++X+XXXXXX++XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+
+                                          '  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                              .... . .................................................................
+                                                          ======- --H---==----==H-----------HHHHHHHHHHHHHHHHHHH--==--=
+                                                                    C           C           CCBBBBBBBBBCCCCCCCC
 ==)))==11)1Z11ZZXAMMOMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    -   = -=+++=+++++++++++++++++++++++++++++++++++XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++
+                                '  ' '       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                ......................................................................
+                                                        === = =====-------=--------HHH------HHHHHHHHHHHHHHHHHHHH--====
+                                                                                   CCC      BBBBBBBBBBBCBCCCBCCC
+                                                                                                 V VV
 ++)++++)1)1111XZAAAMMOAMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                     -  - -=+===+==+++=+++===+++++++++++++++++++++++X+XX+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++
+                            '                  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                 .. ..................................................................
+                                                     = =====  == ===-=--=-==---------------HHHHHHHHHHHHHHHH---HH--====
+                                                                                           CBBBBBBBBBBBCBCC   CC
+                                                                                             V V   V V
 ++==+=))))+1)11ZXAZMAMAAMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -+=-+=+=+=+++=+====++++++++++++++++++++++++++X+X+XX+XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX+XXXX+X+
+                                               ' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                     .................................................................
+                                                          ==  === ======-=-=--=-H---------=-HHHHHHHHHHHHHHHHHH=----=-=
+                                                                                C           BBBBBBBBBBBCBBCCCC
+                                                                                                   V
 )=+-++=)==)1)1ZZ)XXOMOOMOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                   - -- -  -==++===+=--==-=--=====++++++++++++++++++++++X+X+X++++XXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXX++X
+                                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                   . .................................................................
+                                                        = ======= ======-=-=-====----H----=-HHHHHHHHHHHHHHHH-------==-
+                                                                                     C      CCBCBBBBBCBCBBCC
 ==-=---===+1)))111ZXAAAMMMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -=--==++++++++++==++++==+++++++++++++++++++X++++++++X+++XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                   '          '     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                        ..............................................................
+                                                             = == = ==-= ======-===HH-H---=-HHHHHHHHHHHHHHH--H--------
+                                                                                   CC C     CBBBBBBBBBBBBCC  C
+                                                                                                VV V
 --==--==)+)+1))111ZXAAAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -+--=+++++=+=+++===++++++++++++++++++++++++X+++++++XXXXXXXX+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXX+
+                                        '         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                     .................................................................
+                                                      = =      = =====-=======H-H--H--=-=-=-HHHHHHHHHHHHHHHHH-H------=
+                                                                              C C  C        CCCBBBBBBBCCCBCCC C
+                                                                                                V V
 --==+=+=))==1+11)Z)A1XAMMAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                            =-===+=++++++==+++++++++++++++++++++++++++X++++++XXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                    '   '    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                . .  .................................................................
+                                                            =  =======-== ===----H--H----=--HHHHHHHHHHHHHHHHHHHH-HH---
+                                                                                 C  C       CBBBBBBBBBBBBBCBCCCC CC
+                                                                                                 VVV V
 ==)+=++++))111Z11)ZZXAAZOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        -- -+==+==++++++++++++++++++++++++++++++++++++XXXX+XX++XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                  '''' '       ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                    .             ... ................................................................
+                                                       =   =  == === =----=--==H--HHH-----=-HHHHHHHHHHHHHHHHHHHH-HHHHH
+                                                                               C  CCC       CBBBBBBBBBCBBBBBBCCC CCCCC
+                                                                                                V V
 =)====))+=+)Z111)ZXZMAAMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         - -==---++++++++=++++++++++++++++++++++++++++++X+++XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                     '         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                    .  ... ...........................................................
+                                                               =   =====-===----H--H------=--HHHHHHHHHHHHHHHHHHH-H--H-
+                                                                                C  C         BBBBBBBBBBBBBBBBCCC C  C
+                                                                                                 V  V
 =======++))11)1ZZXXAAMOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      -   --+-==-+++++++++++++++++++++++++++++++++++++++++X+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                            '     ''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                    ..           .. ..................................................................
+                                                         = = === = =======-=--=H--HHH-------HHHHHHHHHHHHHHHHHHH--H--H-
+                                                                               C  CCC       CCBBBBBBBBBBBBBBBBC  C  C
+                                                                                               VV   VVVV
 ==--=--==)))1)111ZZ1ZAXAMAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                            -----++++++++++==+=+++++++++++++++++++++++++X+++XXXX+XX++X+X++++++X++XXX+XXXXXXXXXXXXXXXXX
+                                    '' '        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                      .... ...........................................................
+                                                                 =======-===---H=H-==-=-======-==---=--HHHHHHHH-----H-
+                                                                               C C                     CBBBBCBC     C
+                                                                                                        V
 +====))))+)1+1Z)1ZZAMXAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -======+++++++++++++++++++++++++++++++++++++++XX+X+XXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX
+                                      ' ''''' '   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                   .. ................................................................
+                                                      =       == ========--=-=--HH---------=---HHHHHHHHHHHHHH-H--HHH--
+                                                                                CC             CCCCBCBCBBCCBC C  CCC
 =)==+=+==+=))+1Z)ZZ1ZXXMAOMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         - -= --==+++=++=++++++=+++++++++++++++++++++++++X+++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXX
+                                  ''  '  ' '    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                 .   ..      .........................................................
+                                                                 = = ====-=====================----HHHHHHHHHHHH-HHH---
+                                                                                                   BBBCCBBCCCCC CCC
 ====++++++)))++111ZZXAAAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -+==-++++++++++++++++++++++++++++++++++++++++XXX+XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                  ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                     .................................................................
+                                                                ========---=----H---HH----=H----HHHHHHHHHHHHHHHHHH--H-
+                                                                                C   CC     C    CBBBBBBBBBBBBBBCCC  C
+                                                                                                         VVVV
 =-=)+=+))1+)+)1Z1ZZ1AXXXXMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -+=-===+=+++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                            '        ' '  ''' '''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                               .   .. ................................................................
+                                                          ===      ========----HH-H--------HHH---HHHHHHHHHHHHHH-HHH---
+                                                                               CC C        CCC   BBBBBBBBBBBBCC CCC
 ==+))+))1=))+)11ZZXXZZXMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -+===+=+++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX+X
+                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                           .   .. ....................................................................
+                                                      = == = ==========-------HHHH--H---HHHHHHH=--HHHHHHHHHHHHHH----=-
+                                                                              CCCC  C   CCCCCCC   CBBBBBBBBBBCCB
+                                                                                                    V   V
 -==))))))111)Z))1Z1ZZZXXXAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -+-=-+=+++++++++++++++++++++++++++++++++++++++++++XXXXXXXXX+X++XXX+XX+XXXXXXXXXXXXXXXXXXX++
+                                     ' ''''''' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                        .   .  . ..  ... .............................................................
+                                                       =    = == ============---HH----=-==--H=--=--HHHHHHHHHHHHH----==
+                                                                                CC          C      CCBCBCCCBCCCC
 ----++)+)111))111111Z1ZXAOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         - -=---====++++++++++++++++++++++++++++++++++++++++XXX+XXXXXXXXXXXXXX+XXX+XXXXXXXXXXXXXXXXXXX
+                                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                              . .  .. ................................................................
+                                                         ===  == ===========---=H----------H--=---=-HHHHHHHHH-H-------
+                                                                                C          C        CBBBBBBCC C
 +++)+=)+1)11)ZXZXZXXMAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         ---++==+++++++++++++++++++++++++++++++++++++X++X+XXXX+XXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX++++
+                                 ' '''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                       . ..   . ..... ................................................................
+                                                       = =  =    ====-==-=----=---------HHHHH-----=--HHHHHHHHH----====
+                                                                                        CCCCC        BBBBBBBCC
 ===++)+=))1ZZ11ZX1XAMMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                          -=+=++++++++++++++++++++++++++++++++++++++++++XXX+XXXXXXXXX+X+XX+XXXX+X+XXXXXXXXXXXXXXXXXX++
+                               '   ''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                   .... .     ....   .................................................................
+                                                         ===============HH-=---H-----=-=--=----=-=---HHHHHHHHHHHH---==
+                                                                        CC     C                     CBBBBBBBCCCC
+                                                                                                       VVVV
 +)=+)=-+)1)11111ZXXAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        ---=+==+++++++++++++++++++++++++++++++++++++++++XXXXXXXX+XXX+X+XXX+XXXXXXXXXXXXXXXXXXXXXXXXXX+
+                            '      '''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                         .      ......................................................................
+                                                   =       =============HH---H--=---=-=---=H-H-------HHHHHHHHHHHHH---=
+                                                                        CC   C             C C       CCBBBBBBCBCCC
+                                                                                                       VVV
 ===++==)++++1111ZZ1ZAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        ---=++++++++++++++++++++++++++++++++++++++X+X++XXXXXXXXXXXXX+XXXX+XX++XXXXXXX+XXXXXXXXXXXXXXXX
+                            ' '  ''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            .             .    .......................................................................
+                                                        ==   == ==-=-==-H----H-H----=----=--==-------=--HHHHHHHH------
+                                                                        C    C C                        CBBBBCCC
+                                                                                                          V
 +=++=)))1)Z1111ZXZXXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      --===++++++++++++++++++++++++++++++++++++++++++++XXX++XX+XX+X++++++XX++X++X++XXXXXXXXXXXXXXXX+X+
+                            '  '  '  ' '''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            .                 .. .....................................................................
+                                                       =  =  ==========---==-H=--=-======--==-==-==-----HHHHHH-HH--=-=
+                                                                             C                          CBBBCC CC
 ++)1)11)1))1111XXZXAOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    -- - ==++=+++++++++++++++++++++++++++++++++++++++++++XXXXXXXXX+X+X++XXXXX+XXXXXXXXXXXXXXXXXXXXXXX+
+                               ' ' ''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                      .      .    ....................................................................
+                                                   = == =================---------=-=-==-----=-----------HHHHHHHHHHH-=
+                                                                                                         BBBBBBCCCCC
+                                                                                                           VV
 ==++=+==1+1)1Z1ZZZXMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    -  --=-+++=+++++++++++++++++++++++++++++++++++++++++++X++X++X++++++++++XX+XXXXX++++XXXXXXXXXXXX+++
+                            '      ' ''' ''' '    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                      ................................................................
+                                                         =================-==-==-==========--=-----====---HHHHHHH--===
+                                                                                                          BBBBCCC
+                                                                                                            VV
 =-=--+-+)))1)11Z1ZZMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      ---==+++++++++++++++++++++++++++++++++++++++XX+XXXXXXXXXX++++X++X+++XXXX+XXX+++XXX+XXXXXXXXXX+XX
+                            '   '  '' ''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            .             .       ....................................................................
+                                                       = =========--=----------====-==-===----=---===---=--HHHHHHH-=--
+                                                                                                           BBBBCBC
+                                                                                                            VVV
 ==+)=1)+111)1ZXXXAMMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    -  =-+=++++=++++++++++++++++++++++++++++++++++++++XXX++XX+X+X+++++++++++++XX+XXX+XX+X+X+XXXXXXXXXX
+                           ''     ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            .        .   ....... ... .................................................................
+                                                          =  ==== ====---==--=-=-=============--=---=--=-=-=HHHHHH----
+                                                                                                            BBBBCC
+                                                                                                             V
 ===)))))1+11ZZ1ZAA1XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                     ---==+=+=+=+++++++++++++++++++++++++++++++++++++++++X++++++++++X+++++X+X+X+++X+++XX++++XXXXXXXX++
+                            '    '' '   '''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            .               .   .. ..................................................................
+                                                     ==  =  == = ========-==========-=====-=-=-===-===--====-HHHHH--=
+                                                                                                             BBBBC
 ---==++=)=)1XZZAXMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                     -=-=++++++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++XXXXX++++
+                            ' '''''''''' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                 ..               ....................................................................
+                                                      = == = =  ========== ==-====== ====  ======= ==  ======-HHH-=
+                                                                                                              BBB
+                                                                                                              VV
 ==-)=+-+++++1))Z1AMMMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                     -  =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXX++XX+
+                          '''''''''''  ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            .  . ...          .     ..................................................................
+                                                            = ==== ============== == == = ========  = = ======-H-==H-=
+                                                                                                               B   C
 ====)==+-+++1)ZZZAXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                     --==+=++++++++++-=====++=+++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXX+
+                           '''''''''                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            . .....                         .. .......................................................
+                                                                  == =   ===== === ======= = =       == ========-HHH-=
+                                                                                                                 BCC
 =+++--===+)++)11ZXZAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                     --==+++++++++++=====-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXX
+                           ''''' ''              '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            ....                     .... ............................................................
+                            =                               == =================  ====  =======  =  =  === =  ==HHHHH-
+                                                                                                                BBBCC
+                                                                                                                 VV
 =))=++++)))+Z1ZZZAAMMOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                     ---=+++++++=+==-- ----++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXX
+                          '''''            '  '' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            .                      .  .. .............................................................
+                                                          =   =  =================== = == === == ==== = === = ==-HHHH-
+                                                                                                                 BBBB
+                                                                                                                 VV
 1)))))+=)1+1XX1ZZXXAAAMOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       -=+++++++++=---- -==+==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXX
+                           '''                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                            .                       . ................................................................
+                                                           = = =   = == == ====== = == = ===== =    =     ======-HHHHH
+                                                                                                                 BBBBB
+                                                                                                                  VVV
 ))+))1=+=)1))Z1111ZXXMMOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       ==+++++XXXX++++= --=-++=+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXX
+                           '''''''''''            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                           ...........                 ...............................................................
+                            ==-HHH==                    = =    == ===== =====  =     = ===    == =        = =  ==-HHHH
+                               CCC                                                                                BBBB
+                                                                                                                   VV
 ))+)1)+)+)))1111111XAMOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      --=++++XXXXXX++++==  -==+==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXX
+                         ''''''''''''''             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                          ............               . ............................................. .................
+                            =-HHHHH=                           ====== == ======    =  =    =              =   === HHHH
+                              CBCBC                                                                               CBBB
+                                                                                                                   VVV
 +=)1)1)1111)1111ZZZXXMMOOOOOOOOOOOOOOOMMAAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       --+++++++XXX++=      -===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXX
+                           ''''''''''               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                           .........                 .. ....................................  ... .... .  ............
+                            = ==-HH                             =      = = == = =======                   = ======-HHH
+                                 CC                                                                                BBB
+                                                                                                                   VV
 =+===+++))1)+)))1)11ZZMAMOOOOOOOOOOOOZ1))1ZZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                         --=++++++++-         ---==+=+++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++XXX
+                            ''''''''                  ' ' '''''''''''''''''''''''''''''''''''''''''' ''   ''''''''''''
+                             .......                           ............................. .  ...         ..........
+                              ====                                    =  = ==                                      HHH
+                                                                                                                   CBB
 =+=+=++=)))=)1)1)1Z1ZXMOMOOOOOOOOOOOMZ1)+1)ZXXMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       - --=++++++++           -- -===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXX
+                            ' ''''''                      '''''''''''''''''''''''''''''''''''' '''''' '   ''''''''''''
+                                                            .  ..............................   ..         ...........
+                                                               =         ===  =  ==   =   =                  ===  =-HH
+                                                                                                                    BB
+                                                                                                                     V
 ==1)++)+)11111)1)11ZAAAOMMOOOOOOOOOOOAZZXXMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       -  ==+++++===-         ==+=+++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++XXX
+                            ''                     '''''' '''''''''''''''''''''''''''''''''''''' '''' ''''''''''''''''
+                                                      . . .... ............................. ..  . ..  .. ............
+                                                                  =  ==         =  = = = = =  =               = ===-HH
+                                                                                                                    BB
+                                                                                                                    VV
 ==11)+1))1)1)1111Z1ZZXMOMOOOOOOOOOOOMMAMAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       - --=++======      ----==++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++XX
+                            '                    ''' '''''''''''''''''''''''''''''''''''''''''''''''     '''''''''''''
+                                                       ........................................ . .        ...........
+                                                            =    =          =    =   ===     =                 == ==HH
+                                                                                                                    BB
 ==)))+))+111ZZZZ111Z1AOMMAOOOOOOOOOOOOOMOOOO))MMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      -   --++==+=+=--- ----     +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XX
+                            '                     ''''''''''''''''''''''''''''''''''''''''''''' ' ''  '' '''''''''''''
+                                                  . .  .................................... . .            ...........
+                                                           =    = = = = =  = ====  =      =                   == = =HH
+                                                                                                                    CB
+                                                                                                                     V
 MA)111))111ZXAAX1A1AZAAOMOOOOOOOOOOOOOOOOOO   = - -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       - --=++++=+++=+=-=+=        -++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++XX
+                            ''           '          '''''''''''''''''''''''''''''''''''''''''''''' ' '' ''''''''''''''
+                                                    ........................................ ..       .   ............
+                                                        =    == = = = == ======= = ==  =                      = ====-H
+                                                                                                                     B
+                                                                                                                     V
 1MMZ1)=))11ZZ1XX)ZXXXAMAAMOOOOOOOOOOOOOOO1  -=+O-O)1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                          --===+===-==-++      - -   +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XX
+                                                     ''''''''''''''''''''''''''''''''''''''' ' ''  ''  '''''''''''''''
+                                                     .......................................               ...........
+                                                     ===  =  ==== ====   =======                               =====-H
+                                                                                                                     B
 )11MMA1))11)XXZZZAAAXAOMMOOOOOOOOOOOOOOOM  ZMXZ)+Z-Z-)OOOOOOOOOO-=XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      -  ---++===+=--+=+              ++++++++++   =+++++++++++++++++++++++++++++=+++++++++++++++++++X
+                            ''         '              '''''''''     '''''''''''''''''''''''''''    ' '''''''''''''''''
+                                                      .........     ....................... .          ...............
+                                                        == = ==     ===== =====  = = === =                    = = ===H
+                                                                                                                     C
 =)))AMMX111)ZXZZZXZXZZOMMMOMOOOOOOOOOOOM  ZZX+-Z-ZZ)Z)-OOOOOOOO     MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      -   - +++=-++-+=+                ++++++++      +++++++++++++++++++++++++++++=++++++++++++++++++X
+                                                       ''''''''      '''''''''''''''''''''''''  '      ' '''''''''''''
+                                                       ........      ........................              ...........
+                                                        ======        == ==   ====    ==                       = = ==-
 =+)1Z1ZOOX11XXXXZAAAXMMOO=+OOOOOOOOOOOO+ O11+ZMZMM-1A=)1OOOOO+  =--A ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       --              --  -+++++++++++  -              +XX++         ++++++++++++++++++++++++++++++++++++++++++++++++
+                            ''     ''''                 '''''         '''''''''''''''''''''''''' '''' ''''''''''''''''
+                            .                           .....         ....................... .          .............
+                                                        =--==         ========= === =                      ===  ======
 11)1Z1)1AOMXZAAAAAOMMOO    1OOOOOOOOOOOO XOO--)==)M--MO MOOO=  )OA O1+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+         +        -  -=     ++++++++++++  ++          =  +X+    +  -  ++++++++++++++++++++++++++++++++++++++++++++++++
+                            '''''''''''   ''             '''    '     ''''''''''''''''''''''' '' ''   ''''''''''''''''
+                            ....   . ..   ..             ...    .     .....................   .            ...........
+                                      =   ==             =-=           ======= ====  =                        ====   =
 )11111)11XOOMA)XXMOMMX   A=XAOOOOOOOOOOO  +   -)A=-O-Z+)ZOOO Z  -OOA=-OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          -=      -          =++++++++++           -     +XX     ++   ++++++++++++++++++++++++++++++++++++++++++++++++
+                              ''''''''''                 '''      '   ''''''''''''''''''''''''  ''' '     ''''''''''''
+                               .........                 ...      .   ................... ..              ............
+                               =  =   =                  =--           = = = ======  ==                       =  = ===
 ))Z1111)Z11AOOMAZAAOO  -OAZM--OOOOOOOOO=         A1Z)+1X1OOO A    AZ- OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            -=     --   +     -++++++++                  XXX          ++++++++++++++++++++++++++++++++=++=++++++++++++
+                        '      ''''''''                  '''          '''''''''''''''''''''''''''''''  '  ''''''''''''
+                                .......                  ...           ......................              ...........
+                                ==  ==                   -H-           = ======= =                           == = ====
+                                                          C
 )111ZXX11ZZ1XMOOMAAMM  Z1AO   MOOOOOOOO1 ZZ       M+AZ=X-OO1 1     -  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              =+          +    ++++++++                  XX           ++X+++++++++++++++++++++++++++++++++++++++++++++
+                          '    ''''''''                  ''           ''''''''''''''''''''''''' '  '''   '''''''''''''
+                          .     .......                  ..           .......................              ...........
+                          =      = ====                  -H            =-=======    =                       == == ===
+                                                          C
 +)Z1Z)Z1)Z+ZXAXXOOMMO  O=O    1MOOOOOOOO  1      -)MOZ1 ZOM --    =  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                =-  -  + +      ++++++++            -    X           +++++++++++++++++++++++++++++++====++++++++++++++
+                       ' '      ''''''''                 '           '''''''''''''''''''''''' '''          '''''''''''
+                         .      ........                 .            ............. ........  .             ..........
+                                ==  ====                 -            ====== =                              =    == =
 )ZZZZZZZZXAZAAMAMOOOO1 =ZO    =OOOOOOOOO  -        )Z-Z AX --      AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                 =++=    =     +=++XXXXX                            +X++++++++++++++++++++++++++++++=--==+++++++++++++
+                  '            ' '''''''                            ''''''''''''''''''''''''''''          ''''''''''''
+                                 .......                            ........................                ..........
+                                  =---HH                            =-==== =====   ==                       == ==== =
+                                      CC
 )11Z1ZZZAZMXAAMXXMOOOO   )+     ZXZZ+)MO --         -11---        -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOO
+                  -=++                 -                           ++++++++++++++++++++++++====----- - --=++++++++++++
+                     '                                             ''''''''''''''''''''                    '''''''''''
+                                                                   .................                       ...........
+                                                                    ======  ===                             = ==== ===
 1Z11ZXZZXAMMXXAMMOMMOOOA- =-     =1==AX  O          OO          = OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOO
+                 -  -++                  -          ++            -+X++++++++++++++++++++++++=++=--- -=+++++++++++++++
+                                                    ''             '''''''''''''''''''''''''              ''''''''''''
+                                                     .             ................. ....                  ...........
+                                                                   =-========== =                             = = ====
 XZZZZXXXXMMAOOOOMOOOOOOOO  Z-          OOOZ  --     OO         - -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            ---- -----+++              +++          ++            +X++++++++++++++++++++++++++++=-=---=+++++++++++++++
+                       ''              '''          ''            '''''''''''''''''''''''''''''        ' '''''''''''''
+                                       ...          ..            .........................   .           ............
+                                                    ==            =-==== =====   =   =                      = =====  =
 Z11Z1ZZZXZXXAAMMMMMOMMOOOO  )          OXA          OO           OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                   -  -===             =            ++           +XX++++++++++++++++++++++++++++====--=+++++++++++++++
+                                                    ''           '''''''''''''''''''''''''''''           '''''''''''''
+                                                    ..            .......................  .               ...........
+                                                    ==            --=== ===   =    =                           === =
 11ZXXZXZZXZZZAAAMAMMMOMOOOO  =         X1O    ---   OO        - MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                     - --+-              +          XX           +++++++++++++++++++++++++++++++=-=--=-=++++++++++++++
+                                                    ''           ''''''''''''''''''''''''''' '            ''''''''''''
+                                                    ..           .........................                 ...........
+                                                    -H           =======  =                                 =   == =
+                                                     C
 XXXXMMMMMMOMMMMOMOOMMOOOOOOO  ==       MZO     )   -OO)        ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          -    - =-  --=-++=             +          XX          +XX+++++++++++++++++++++++++++=++=--==++++++++++++++++
+                          '              '          ''          ''''''''''''''''''''''''''''            ''''''''''''''
+                                                    ..          .................. . ...                   ...... .. .
+                                                    HH          =--=== == ===  =
+                                                    CB
+                                                     V
 MAAOAMAMMOOMAOMMMOOOMMOOOOOOO- -M      OMMO        MOOO    +  MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOO
+   -     --  -   ---  -==++++          +  -         XXX        XXXX+++++++++++++++++++++++++++++++ --=-=++++++++++++++
+                           ''                       '''        ''''''''''''''''''''''''''' '   '        '  '''''''''''
+                                                    ...        ................... .. ..                    . ....  ..
+                                                    HHH        ----==== =====  =
+                                                    BBC
+                                                     V
+                                                     A
 MOMMMMOOMMMMMOMOMOOOOMOOOOOOOO)  )     OOXO        OOOOO  +  MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -    --     - - ---- -=====++         X+ X        -XX=+      +XX+XX++++++++++++++++++++++++++++==+====+++++++++++++++
+                            ''         '' '         '' '      '''''''''''''''''''''''''''''' '          ''''''''''''''
+                             .         .. .         ..        ............................                 ........ ..
+                                       -  H         HH        =H-=--===   ==   =       =                       =
+                                          C         CB         C
+                                                     V
+                                                     A
 MAMMMMMMMMMMOOMOMMOMOOOOOOMOOOOX   ---OOO)OOX    )O=OO)OOO  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            -- -  - ------ =+++       +XX XX      = XX +X=  +XXXXX+++++++++++++++++++++++++++++++++=====++++++++++++++
+                             ''        '' ''        '' ''    ''''''''''''''''''''''''''''' ''            '''''''''''''
+                                       .. ..        .. ..    ............................                  . ..... ...
+                                       H- -H        -H =H    -H---=  ====
+                                       B   B         B  C     B
+                                                     V
 MMMMMMMOOOOMMMOOOOMMMOMOMOMMOOOOO1   OMOO=OOOMZOOOO-OO1OO- OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       ----   ----   - - -  =++++    + XX +XX  +XX= XX +X  +XXXXXX+++++++++++++++++++++++++=++=+====+-=+++++++++++++++
+                               '     ' '' '''  '''  '' ''  '''''''''''''''''''''''''''''''  ''         '' ''''''''''''
+                                     . .. ...  ...  .. ..  ..............................               .      ... ...
+                                       HH  HH   -H  -H =H  =HHH---=======             =
+                                       CB  BB    B   B  B   CCC
+                                        V  VV        V  V
 1XAMMMAMMAMMMOOMXOOAMMMMOMMOOOOOOOO  Z1OO1OOO)-OOOO=OO)OO MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+             --  --     -  --==-+++    +X +XX  +XX+ XX XX  XXXXX+++++++++++++++++++++++++++++++++--====+==++++++++++++
+                                       '' '''  '''  '' ''  '''''''''''''''''''''''''''''  '''' '            ' ''''''''
+                                       ..  ..  ...  .. ..  .................. .. .......                        .   .
+                                        H  HH  =HH  -H -H  -H---==== ==  =
+                                        B  BB   BB   B  B   C
+                                            V    V
+                                            A
 AMMMAOMOMMOOOOOMAOMMOOMOMOOOOOOOOOOO  OOOOAOOM+OOOO+OOMO- OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     - -  -----  -  -- - --====++++-  -+X+ XX  XXX+ XX X  +XXX+XX++++++++++++++++++++++++++++++=+=---+=-+=++++++++++++
+                                '''     '' ''  '''' '' '  '''''''''''''''''''''''''''''''''  '            ''''''''''''
+                                  .     .. ..  .... .. .  .................... .      .                      . .  . ..
+                                        H  HH  -HH= -H -   HH-=--=========
+                                        B  BB   BB   B     CC
+                                            V    V   V
 MMMOMOOMOOOOMOOMOOOOOOOOOOOOOOOOOOOO1  MOO1OOOMOOOOZOOOZ OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   - -- ---- =- --==--------===+++++    XX +X+ -+++ XX+  =XXXX++++++++++++++++++++++++++++==++++++===++=+=++++++++++++
+                                   '    '' '''    ' '''   ''''''''''''''''''''''''''''''''   '               '''''''''
+                                   .    .. ...    . ...   ................... .....  .                            ....
+                                        -H =H       HH=   -HH-======= =
+                                         B  B       CB     CC
+                                            V        V
+                                                     A
 MMOMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA  OOOOOO  AOOOOOO 1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -   - -----===--=-==--=-=====+=++++   +XXXX+   -+XXXX  XXXXXXX+++++++++++++++++++++++++++=++====++++==++++++++++++++
+                                 ' ''   '''''     '''''  ''''''''''''''''''''''''''''' ' '                  ''''''''''
+                                    .    ....     .....  ..................... .... .                          ..... .
+                                         H-HH      HHHH  HH-----==== = ==  =
+                                         B BB      CBBB  CC
+                                         V  V       VV
+                                            A       AA
 XMMMOMOOOOOOMOOOOOOMOOOOOOOOOOOOOOOOOOO =OOOOO  1OOOOOO AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    - ------ =----- =-+===-=-=-++=++++-  XXXX+   ++XXXX  XXXXX++++++++++++++++++++++++==++++++==-=+=====++++++++++++++
+                                  ' ''   ''''     '''''  ''''''''''''''''''''''''' ''                   '''  '''''''''
+                                         ....     .....  ................... ..  .                           .    ..
+                                         HHHH      HHHH  -HH--===== == =
+                                         CBBB      BBBB   CC
+                                          VVV      VVV
+                                          AAA      AAA
 MMOMMOOMMOOOOOOOOOMMOOOOOOOOOOOOOOOOOOO  OOOOOXZOOOOMX- MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -  --  ------=--  ===+=====-=+++==++-  +XX++  +=++     XXXX+X+++++++++++++++++++++++++++++++++==++==++++++++++++++++
+                                     '   '''''  ' '      ''''''''''''''''''''''''''  '''   '''          ''''''''''''''
+                                         ....   . .      ..................... .                                  .  .
+                                         =--=   =        ----=-====
 MAMMOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOO      =-----   - OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    ---=-------- ---=======+=++=+++=++=                 -+XXX+++++++++++++++++++++++++++++++++++=========++=+==+++++=+
+                                    ''                   '''''''''''''''''''''''''''' '''' ''''                   '  '
+                                     .                   ..................... ..       .  .
+                                                         =H--====== =
+                                                          C
 MOOOMOOOOOOOOMOOOOMOOOMOOOOOOOMOOOOOOO- =-XAZ=MOOOOOOOO)=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ --= =--=-+=- =--- -== -=-==-= --=++++         -=--++XX  +XXXX+++++++++++++++++++++++++++++++=+++===+++++==+++++++++++
+                                    ''             ''''  '''''''''''''''''''''''''' ' '''  '   '      '       ' ''''''
+                                     .              ...  .........................
+                                                     -H  =H---=== ==
+                                                      B   C
 OOMMOOOOOOOOOMOOOOOOMOMMMMMMAMAMMMMMOO M+=1OOOOOOMOOOOOM OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--  --------- ------ -              ++     ++=XXX +XX--  +XXX++X++++++++++++++++++++=++++++++++++=-=-==--==+==++=+++++
+                                           '' ''' '''    '''''''''''''''''''''''''''  '''''     '             '   '  '
+                                           .. ... ...    ............... .......
+                                           == -HH =H-     ---==-  ==
+                                               BC  B
 OOOOOOMOOOOOMMOOOOOOOOMMOMMMMMMMOOOOO= M+==+OOOOOOOZ))1O MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+------ -=---  =-------  -       ---++       -+XXX++    +  ++XXX+++++++++++++++++++++++++++++++=+====-=+=++++=++++++=++
+                                    '        ''''''       ''''''''''''''''''''''''  '' '''' '            '     ' '   '
+                                             .... .       .................... .    .   .                            .
+                                             =H-H         ==---=== ==
+                                              B B
 MMOOOMOMMOOOMOMOOMOMOMOOMAZMMMAMOOOOO O)=====MOOOX====+O +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOO
+  --- -  --- - -- - - --        ---== -       +++      =  XXX+++++++++++++++++++++++++++++===- -----=+==++++++===+++++
+                                              '''         '''''''''''''''''''''''  '                    ''          '
+                                              .           ............... ...  ..
+                                                          ---========
 OOMOOOOOOOOOOOOOOMMMOOMMMMAMOAAMMMOO) O+=+=-==OO)==-===A- OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOMOOOOOOOOOOOOOOOOOOOOOOOO
+-- -----=---=----   --      -     -=  =       =+          +XXXX+++++++++++++++++++==+==+ - -- ----=-====++==+--+==++++
+                                               '          ''''''''''''''''''' '''                                   '
+                                               .          ............ .   ..
+                                                          =----=  ==
 MOMOAOXMOOOOOMOOOOOOMOOOMMAMOMOMOOOO-1M+=--==+OA+=-==-=)A OOOOOOOOOOOOOOOOOOOOOOOOOMOOMMMMMMMMMMMMMOOOOOOOOOOOOOMOOOOO
+ - - -  ----- ------ ---    - - ---+          +           +XXX+++++++++++++++++=+=- --             ---====---==- ----=
+                                                           ''''''''''''''  ''
+                                                           ............
+                                                           ---==     =
 OMOMMOOMOOOMOOMOOOMOOMOMAMOMMMMOMOOO ZO+====+O  X+=-===+O OOOOOOOOOOOOOOOOOOOOOOOMOOMOMOMMAAAAMMOOMOOOOOOOOOOOMOOOOOOO
+- -  -- --- -- --- -- -   -    - -=+  =      -          = -X++++++++++++++++====- -- - -        -- =-====----= --=+=++
+                                                           '''''''''''''' '
+                                                           ........... .
+                                                           -===== =
 OMMMMMMOOOOOOMOOOOOOOMOOMOMMOMMOOOOO OM++==+M--)ZZ=====1O OOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMMOAXAOMMOOOOOOOOOOOOOOOOOOOOO
+-      ------ ------- -- -  -  ---=- +                  + ++X++X++++++++++=+=====----  -  -   -  --=+=======+---=====+
+                                                        '  '''''''''''
+                                                        .  ...........
+                                                           =-==-==
 OOMOOMOOOMOOMOMOOMOOOOOOOOMMMMMOOOO- O+===+O =OOA1X=-==AO OOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOMAMMMMMMOOOOOOOOOOOOOOOOOOOO
+-- -- --- -- - -- --------     --=+  -     =  +X        + +XX++++++++++++=+==++=------ - -        -++=====-=--======++
+                                              ''        ' '''''''''' ''   '                                          '
+                                              ..        . .........
+                                               -        =  --= =  =
 MOOOMMOOMOOMOOAMMMOOOMMOMAMOMMAOOOO O)=)-=Z 1OOOO O==-==O XOOOOOOOOOOOOOOOOOOOOOOOMMMMOOOMMMMMMOOOOOOOOOOOOOOOOOOOOOOO
+ ---  -- -- --    ---  -   -   --=+ -        ++++ -     +  +++++++++++++=++===-=--    -=-      =====++=++==-+===++++++
+                                             ''''       '  ''''''''' ''                                         ''   '
+                                             ....          ........
+                                             ====          == =  =
 MOOMOOOOMOMMMMOOMMOOOMMMMMMOMMMMMO+ O)====O ZOOOO X====-A--OOOOOOOOOOOOOOOOOOOOOOOMOOMOMMOOOMOOOOOOOOOOOMOOOMOOOOOOOOO
+ -- -=-- -    --  ---      -     -  +     -  ++X+          +++++++++++++++=++=+==- -- -  --- ---=-+++--= --= -=+==+=+=
+                                             ''''          ''''''''''''''  '
+                                             ....          ........ ...
+                                             ==-=           ==== =
 MMMOMMOOOOOOOOMAMOMMMMAXMAAMOAAZAO XZ=====O OOOOO Z===--+M OOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMOMOOOOOMOOOOOMOOMOOOOOOOOOO
+   -  --------   -          -    -        - -++++          +X+++++++++++++++==++=------ -  - ----- =+=-- -- =-====++++
+                                             ''''          ''''''''''''''  '                                       '''
+                                             ....           ...........
+                                               ==           -=====   =
 AMMOMOMMMOMOOMAXMMAAAZXXAXAAAZZ1X) O+-===)- OOOOO )==--==O OOOOOOOOOOOOOOOOOOOOOOOOOOMMAMMOAMOMOOOOOOOMOMOMOOOOOOOOOOO
+   - -   - --                      -        +++++        + -X+XX+++XX++++++++++++=+--     -  - -----=- - - ---===+++++
+                                            '''''           ''''''''''''''' ''                                     ''
+                                             ....           ............. .
+                                              ===           -=--===H-== =
+                                                                   C
 XAMMMMAMAXZXXXAAXXXZX1AZXZ1Z1ZZAM X1====+O OOOOOOM X-=-==O-)OOOOOOOOOOOOOOOOOOOOOOOOOMOMOMMMMMMOMOOOOOOOMMOOMOOOOOOOOO
+                                         - -+++++        -  XXXXXXXXX++++++++++++===- - -      - -------  -- -=+++++++
+                                            '''''           ''''''''''''''''''''                                  ''''
+                                             ....           .................  .
+                                                =           -HHHHH---==== =
+                                                             BCBCC
 11Z1AZXXXZZZXAOMAMXZXXXMAXZ1ZXZZ- O++=)11 OOOOOOOO -))=+=1O OOOOOOOOOOOOOOOOOOOOOOOOOOMMMOMOMMOOOMOMOOOOMOOOOOOOOOOOOO
+              -                   -       -+++++X+        - +XXXXXXXXXXX++++++++++==--   - -  --- - ---- ---=+=+++++++
+                                           '''''''          '''''''''''''''''''''                                  '''
+                                            ......          .....................                                   ..
+                                               =-=          =HHHHHHHHH--=== =  =
+                                                             CCBBBCBBC
 1Z1ZXZXXXXZZAZAMMXAMAXXAAXXAMM+  M1=+=O--OOOOOOOOOO= )1===O OOOOOOOOOOOOOOOOOOOOOOOOOOOAMOMAMMMMMOOOMMOOMOOOOOOOOOOOOO
+                                      =  ++++++++X+       + +XXXXXXXXXX+++++++++++++++-  -       ---  -- ----+++++++++
+                                          '''''''''         '''''''''''''''''''''''''                              '''
+                                          .. ......         ......................  .                               ..
+                                               ==-           HHHHHHHHH-==== =
+                                                             CBCCBBBCC
 Z1ZZXXAAZAZAMZAOOXXMAXAMAAOM1  -OO1=-M))OOOOOOOOOOOOZ O=-=111OOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOMMOMOOOMMOOOOOOOOOOOOOOOOO
+               --         -     +X      ++++++++XXX+  -      XXXXXXXXXX+++++++++++++++-- - -  - ---  -=---+===++++++++
+                                ''       '''''''''''         ''''''''''''''''''''''''                          '''''''
+                                ..       ...........         ........................                             .. .
+                                 -           = =---=         -HHHHHHHH-======= ===
+                                                              BBCCCCBC
 XZZXXAZXXAAAM1AMXZAMAOXZXMM1  OOOOOOOO-OOOOOOOOOOOOOO-A)- -O-+OOOOOOOOOOOOOOOOOOOOOOOOOMOOMOOOMOOOMOMOOOOMOOOOOOOOOOOO
+                     -        +XXXXXXX -++++++++XX+XX      +  XXXXXXXXXXXXX++++X++++++= -- --- -=- - ---- =-==++++++++
+                              ''''''''  '''''''''''''      '  ''''''''''''''''''''''                           ' '''''
+                              ........   ............      .  ......................                             . . .
+                              =HHHHHHH    =   ==--=H-         -HHHHHHH-----====- ==
+                               BBBBBCB             C           BBBBBBC
+                                VV   V                          V
+                                AA
 ZAXAXZMMAAXAMAXAMXMOOOOOOMO- OOOOOOOOO=OOOOOOOOOOOOOOM1OOOOOO1)OOOOOOOOOOOOOOOOOOOOOOOOMOMMOMMMOOMOOOOOOOOOOOOOOOOOOOO
+                   ------ -  =+++XXXX+ +++++++++XXXXX  ++++XX  +XXXXXXXXXXX++++X++++++= -  -   -- -=-----=+==+++++++++
+                              '''''''' ''''''''''''''  ''''''   '''''''''''''''''''''                         ''''''''
+                              .......   .............  ......   .....................                          .  ....
+                              ===-HHH    = == ==----H  == =HH   HHHHHH--HH-====-== =                                =
+                                  CCC               C      BB   CBBBCC  CC
+                                                           V
 ZXAAAZAXAAMMOOMMOOOOOOOOOOOA=)ZXZMOAZ-OOOOOOOOOOOOOOOO OOOOOOOO+MOOOOOOOOOOOOOOOOOOOOOOMOMMOOOOMMMOMOOOOOOOOOOOOOOOOOO
+            --  ---==++=--=       -   -+++++X+++++XXX- +XXXXXX+  XXXXXXXXXX+X++++++++== -  ----   - =---=+==++++++++++
+                      '                ''''''''''''''  ''''''''  '''''''''''''''''''                          ''''''''
+                                       ..............  ........  .................                              ......
+                                       =====-=====--H  =HHHHHH=  HHH---HHHH=-===                                =   ==
+                                                    C   CBBBBB   CCC   CCBC
+                                                          V VV
 XXMOMMMAMMMMOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOO     -)MO  OOOOOOOOOOOOOOOOOOOOOOMMOOMOOOOOOOOMOOOOOOOOOOOOOOOOO
+   -        --==+=+++++===-  =+=-==+==++++++++++XXXXX+        -  +XXXXXXXXXXXX++++++==-  -- ----===- -=++=++++++++++++
+                  '''                 ''''''''''''''''           '''''''''''''''''                            ''''''''
+                  ..                  ................           ................                              .......
+                                         == = ==----H=           =HHH---HHHH--==                               =   =
+                                                    C             CCC   BCCC
 ZAMOOOMMMMMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX)-OOOOOOOOOOOOOOOOOOOOOOOMMOMMMOOOOMMOOMOOOOOOOOOOOOOOOO
+   ---     -  =++++++++++=+++++++++++++++++X+X+++XXXXXXXXX++    ++XXXXXXX+++++++++++=--  -   ----  -- -===++++++++++++
+               '''''  ''   '' '  ''''''''''''''''''''''''''      '''''''''''''''''                           '''''''''
+               ... .              .........................      ................                             ........
+                                         ==-=-= =HHHHHHHHH=      =--HH-H-=======                                 ====
+                                                 CCCCCCCBC          CC C
 ZAAOMOMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMOMOOOOOOOOOOOOOOOOOOOOOOOOOO
+   - - --- =+++++++++++++++++++++++++++++++XXXXX++XX+XXXXXXXXXXXXXXX+XXXX+XXX+++++=-+-  - - -=--=---=+===+++++++++++++
+             ' ''''' ''''' ''''' '''''''''''''''''''''''''''''''''''''''''''''''''                            ''''''''
+                ...   ...  .....    ............................................                              .... ...
+                                     = ====-----==--=HHHHHHHHHH-----=H-H-=---==                                      =
+                                                     CCBCBBBCCC      C C
 AAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    ----=-=++++++++++++++++++++++++++++++X+XXXXXXX++XXXXXXXXXXXXXXXXXXXXXX++++++++=-=---   -==--==+==+++++++++++++++++
+             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                 '      '''''''''''''
+             . .. ...............................................................                            ..... ...
+                =    = ==  = = = == == ==-=----H--==-HHHHHHHHH-H-------H--==== =                                 =
+                                               C     CCCCCBCCC C       C
 XAMMOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOMOMOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -   -===+++++++++++XX+X++XX++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++=--- - - - -=++=+++++++++++++++++++++
+              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                         '''''''''''''
+              ..................................................................                         .  ..........
+                    = =--=- =--============H--H---H-H-HHHHHHHHH-H-------H====                                    =  =
+                                           C  C   C C CBCCCBBCC C       B
 AMMMOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    - - --+==+++++++++++X+X+++++X+++++++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++= -- -  ----==+=++===+++++++++++++++++
+             '''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                             ''''''''''
+                 .. ...........................................................                                .  ...
+                      ==-=-= ===-=======---=---HH-H-----HHHHHHHHHHHH--HH---==
+                                               CC C     CBCBBCBBCBCC  CC
+                                                           V  V
 MOMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -    =-=-==++++++++++++X++++X++++++++X++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++==-=--=----+++++++==+=+++++++++++++++++
+            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''              ' '     ' '  ''''''''''''
+              ................................................................               .             ...........
+                      = -====-========-==-=--HH-HHHHH-HHHHHHHHHHHHHHHHHH---==                =                =
+                                             CC CBCCC CCBBBBCBBBCBCCCCBC
+                                                          V
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ ------=--==++++++++++++X++XXXXXXX++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+++-=---=====+++++++=====++++++++++++++++
+              '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''            '' '        '''''''''''''''
+                .. ...........................................................             ..          .  ...... .....
+                 =      -==-HH----==---=H--HHHHH-HHHH-H-HHHHHHHHHHH-HHHH-==--                                = =  =
+                            CC          C  CCBCC BBBB C BBBBBBBBCCC CCBC
+                                                    V   V VV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--=+========+++++++++++++++XXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++==--=+++++++++++++++++++++++++++++++++
+               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          ''''''' '     ''''''''''''''''
+                ..............................................................                           . ..........
+                = =  = == =-H--------=H-HH-HHHHH-HHHHHHHHHHHHHHHHHH-HHHH---H=                                 =
+                            C         C CC CCCBB BBBBBBBBBBBCBBBBCC BCBC   C
+                                                  V      V
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ --===++++++=++++++++++++++++XXXXX++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=++==+++=+++++++++++++++++++++++++++++++
+          '    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        '  ''' '      '  '  '''''''''''''
+                 ...........................................................                             .............
+                    === === =--H--==-HH=-H-HHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHH                               =   =
+                               C     CC  C CCBBCBBCBBCCC CBCCCBBCCCCCCCCCCB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-==++++++++++++++++++XXXXX+++XXX+XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++=++++++++++++++++++++++++++++++++++++
+    ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '    '' ''''''''''''' '''''''''''''''''
+        ....   .  ............................................................            ..      .    ...............
+                   ==-----===-HH=-HH-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=                                 == =  ==
+                              CC  CC  CBBBCBBBBBBBBBBBBBBBBCCBBBBBCCBBBBBB
+                                                VV   V          V      VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+==+++++++++++++++++++++XXXXX+XXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++
+   ' ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '  '''''''''' ''''''''''''''''''''
+        .......  ............................................................            .   .    .  .................
+              =      ==---H-=---=-=----H-HHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH-                                  == =   ===
+                          C            C CCBCBBBBBBBBBBBBBB CCCBBBBBBBBBB
+                                               VV                     VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=-=+++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++
+       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '   '   ''''''''' ''''''''''''''''''''
+        .   ..............................................................               .    .      .................
+                     ===-HH--HH---H-----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH                =            =      = =   =
+                         CC  CC   C     CCBBCBBBBBBBBCCBBBCCCBCCBBBCCCBBC
+                                                 V                    VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+---+++++++++++++++++++++XXXXXXXXXXXXX+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++
+       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '''  ' '''''''' ''' '''''''''''''''''''
+         .................................................................                ..        .  ..............
+                ========-HHHHHHHHHHH-=H-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=                                    ==   =
+                         CBBBBBCBBCC  C   BCBCCBBBBBBBBCBBCCBBBBBCBBBBBC
+                            VV                           V   V      VVV
+                                                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--==++++++++++++++++++++++XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++
+      '  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '     '''' '  ''''''  ''''''''''''''''''''
+           .    .........................................................                            . ...............
+                      ====HHHHHHHHHH----=---HHHHHHHHHHHHHHHHHHHHHHHHHH=                                    == ====   =
+                          CBBBBBBBCC        CCBBBBBBBBBBCCBBBBBBBBBBBB
+                                                              VVVVVVVV
 OMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+- -==+++++++++++++++++++++XXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++=++++++++++++++++++++++++
+         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      '' ''''' ''' ''  ''' ''''''''''''''''
+            ..    .......................................................                           . ................
+                     =====--HHHHHHHH------=---HHHHHHHHHHHHHHHHHHHHHHH-=                                    =    ====
+                            CBBBBBBC          BBBBBBBBCBCCCBBBBBBBBBB
+                              VV VV                 VV        VV VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--++++++++++++++++++++++++++XXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++=+++++++++++++++++++++++++++++
+       ' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''    ' '''''''''''''''''''''''''
+           ..  . .........................................................            .            .. ................
+                    ==  ====-HHHHHHHHH--====-HHHHHHHHHHHHHHHHHHHHHHHH-=                                     = == = ==
+                             CBBBBBBBC       CCCCBBBBBBCCBCBBBBBBBBBB
+                               VVV                  VV        VV  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--=+++++++++++++++++++++++++++XXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++==++++++--+++++++++++++++++++++++++++++
+   ''''' '' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''  ''''         ' ' '' '''''''''''''''''
+             .. ....................................................... .           .                 ................
+                     ==    ===-HHHHHHHH-==---HHHHHHHHHHHHH-HHHHHHHHH-=                                        === ===
+                               BBBBBBBC      CCBCBBBBBBBCC BBBBBBBBB
+                                  VVVV              VVV          VV
+                                   A                              A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -=++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++-++++++++++++===++=+++++++++++++++++++++++++
+   ' '  ''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''' ''' ''         '''''' ''''''''''''''''
+               ...........................................................      ...                   ................
+                =  ===== ====--HHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHH-==                                 = == ===== = =
+                               CBBBBBBBBBCC CCBBBBBBBBBBBBBBBBBBBBBB
+                                 VVVVVV        VVVVVVVVVVV  VVVVVVV
+                                  AAAA           AAAAAA A    AA AAA
 MOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ - ==++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++=+++++++++++++++++++++++++++++++
+        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ''''       '   ''''''''''''''''''''''''
+             . ..........................................................        ..                 ..................
+                    == == =====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=                                   == === =======
+                                 CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                   VVVVV       VV VVVVV VVVVVVVVVV
+                                    AAA             AA          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+----==+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++=+++++++++++++++++++++++++++++++
+        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''' ''     '     ' ' ''''''''''''''''''''
+           ...............................................................                           .................
+                 =   == =======---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH== =                                  =  =========
+                                  CCBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBB
+                                     VVVV       VVVVVVVVVVVVVVVVV
+                                     AAA         AA  A AA   AAAAA
 AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ ---=+++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++=++++++++++++++++++++++++++++++++++
+      '  '' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '   '    '''''''''''''''''''''''''
+         .  ............................................................                      . . ....................
+                 = ======= =====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH====                               == ==  =========
+                                  CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC
+                                        V      VVVVVVVVVVV VVVVVV
+                                                AAAA AAAA    AAA
 MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -===++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++++++++
+       ' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ' '  '  ''  ''''''''''''''''''''''''
+            ............................................................  ..                     .....................
+             === == =    =========--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===                               == = ============
+                                    CCCBBBBBBBBBBBBBBBBBBBBBBBBBBC
+                                        VVV  V  VVVVVVVVVVVVVVVVV
+                                                     A A  AA AAA
 MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  --==++++++++++++++++++++++++++XX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++==++++++++++++++++++++++++++++++++++++
+       ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '        '  ''   '''''''''''''''''''''''
+           ...........................................................   . .                   .   ...................
+               === =     =======--==--HHHHHHHHHHHHHHHHHHHHHHHHHHHH= =                                     = ==========
+                                      CBBBBBBBBBBBBBBBBBBBBBBBBBBC
+                                         VVVV VVV  VVVVVVVVVVVV
+                                           A         A AAA A AA
 MMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -===+++++++++++++++++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++++++
+        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''  '   '    ' ''' '''''''''''''''''''''''''
+            ...........................................................  .                      ......................
+                   = =    = ======-=--HHHHHHHHHHHHHHHHHHHHHHHHHHH-==                                  ================
+                                      CCBBBBBBBBBBBBBBBBBBBBBBBBB
+                                           VV V VVV VVVVVVVVVVV
+                                            A           AA A A
 MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -----===++++++++++++++++++++++++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++++++++++
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '' '  '    '' ''''''  ''''''''''''''''''''''''
+            .........................................................                             ....................
+                = ==     = ==== ==-==-----HHHHHHHHHHHHHHHHHHHHHH-===                                     ====== == ===
+                                          BBBBBBBBBBBBBBBBBBBBBC
+                                             VV  V     VV VVVV
+                                                        A   A
 MMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    ==-==++++++++++++++++++++++++++XX+XX+XXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++=+++++++++=++++++++++++++++++++++++++++
+         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''     ''''' '  '''''''''''''''''''''''''
+            ..........................................................  .           .  .     .   .....................
+              =   =  = ==   ==  ===--=--=--HHHHHHHHHHHHHHHHHHHHH-==                                ==   ==== =========
+                                           BBBBBBBBBBBBBBBBBBBBC
+                                            VVVVVVV VVVVVVVVVV
+                                             AAA A          AA
 AMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  - --=-=++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++=++++++++++++++++++++++++++++
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''  '' ''' '' ''''''''''''''''''''''''''''
+             ........................................................    .   .                  . ....................
+                 ==  === ===== ====--------HHHHHHHHHHHHHHHHHHHH--==                                 ===  ====== ======
+                                           BBBBBBBBBBBBBBBBBBBB
+                                             VVVVVVVVVVV VVVVV
+                                              AAAA         A
 AMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     -=-=+=+++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++X++++
+            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''' ''' '  '''''' ''''''''''''''''''''''''
+            .. .......................................................                        ........................
+                == =====  ============----HHHHHHHHHHHHHHHHHHHHH--==                               =    ==========-====
+                                          CCBBBBBBBBCBBBBBBBBBB
+                                              VVVVVV  V  VVVVV
+                                              AAAA
 MXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -=-==+++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++=+++++++++++++++++++++++++++++++++++++
+          ''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ''' ''   '    '''''''''''''''''''''''''''''''
+               ....................................................                          .........................
+                     ==== =  == ======------HHHHHHHHHHHHHHHHHH== ==                               = = == =============
+                                            CBBBBBBBBBBBBBBBBB
+                                               VVVVVVVVVV  V
+                                                 AA
 ZMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     --=-=+++++++++++++++++++++++++++X++XXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++++++++++++
+            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''' ' ' ''''    ''''''''''''''''''''''''''''''
+               ....................................................                      .   . . .....................
+                    == ======   = ===-==----HHHHHHHHHHHHHHHHHH-====                              ======= =============
+                                            CCBBBBBBBBBBBBBBBC
+                                                VVV   VVVVVV
+                                                      AAA
 AMMMOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    --  -==++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXX++++++++++++++++=+++++++===++++++++++++++++++++X++++++++
+            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''   '           '''''''''''''''''''''''''''''
+                 ..................................................                          .. ......................
+                      === =  = ============--HHHHHHHHHHHHHHHHH===                                ===  = = ===-========
+                                             CCBBBBBBBBBBBBBBC
+                                                  VVVVVVVVV
+                                                   AAAAAAA
 AAAOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -   -+=++++++++++++++++++++++++++XXX++XXXXXXXXXXXXXXXXXXXXX++++++++++++++++++=++++++++++++++++++++++++++X+++X++++++
+            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '' ''     ''' '  '''''''''''''''''''''''''''''
+             .. ..................................................  .                     . ..........................
+                     =  ==== = =====---==--H-HHHHHHHHHHHHHHH--====                              == === = ==-===-======
+                                           C CBBBBBBBBBBBBBB
+                                                 VVVVVVVVV
+                                                  AAAAAAA
 MAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -----==++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++X++++++++++
+              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''       '' '''    '''''''''''''''''''''''''''
+                ...................................................                         . ........................
+                       =  ==== =======------H-HHHHHHHHHHHHHHH-===                             ========   ==-=========
+                                            C BCBBBBBBBBBBBBC
+                                                 V VVVVVVVV
+                                                   AAAAAAA
 AAMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       ---++=+++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXX++++++++++++=+++++++++++++++++++++++++++++++++++X++++++++
+              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '           ''''''''''''''''''''''''''''''''''
+                 .................................................                         ...........................
+                    ==== = == = ========-----HHHHHHHHHHHHHHH-== =                             =  ==  == =====-========
+                                             CCCBBBBBBBBBBBB
+                                                  V VVVVVVV
+                                                     AAAAA
 AXAMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     - ---+=+=+++++++++++++++++++++++++XX++XXXXXXXXXXXXXXXXX++++++++++++++++=+++=+++++++++++++++++++++++++++++++++++++
+              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '     ''    '''''''''''''''''''''''''''''''
+                ..................................................                         ...........................
+                  ==  == == ==  =======--==---HHHHHHHHHHHHHH== =                             =   = = ==  ========= ===
+                                              CCCBBBBBBBBBBB
+                                                   V VVVVVV
+                                                      AAA
 XAMAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        -=++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXX++++++++++++=+=+++=+++++++++++++++++++++++++XX+++++++++++
+             '' ''''''''''''''''''''''''''''''''''''''''''''''''''''             ' ' ''  '''''''''''''''''''''''''''''
+                 ................................................ ..                      ............................
+                   = == ===  == ============---HHHHHHHHHHHHH-= =                              =  =  = ===--==== ======
+                                               CCCBBBBBBBBBB
+                                                     VVVVVV
+                                                      AAAA
 XZXAXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      ---==+=++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXX+++++++++++=++==++++++=+=+++++++++++++++++++++++++XX+++XX
+             '''''''''''''''''''''''''''''''''''''''''''''''''''''''  '          '     '''''''''''''''''''''''''''''''
+                ..................................................                        ............................
+                        = ====== ==== ===-----HHHHHHHHHHHHHH-=                                  = =============--===--
+                                              CCCCCBCCBBBBBB
+                                                      VVVVV
+                                                       AAA
 XAXXOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -   -==+++++++++++++++++++++++++++++X+XXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++X+++++X++++X+
+              ''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''    '   ' '''' '''''''''''''''''''''''''''''''
+              . .................................................  ..                   ..............................
+                  = = == = ===== =======-=----HHHHHHHHHHHHHH--= =                             ===== =====-=====-====-=
+                                              CBCCCBBBBBBBBB
+                                                       VVVVV
+                                                       AAAA
 XZZMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       --==+++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXX++++++++=+++++++=++++=++++++++++++++++++++XX+X+++X++++++
+             ''' ''''''''''''''''''''''''''''''''''''''''''''''''''                  ' '''''''''''''''''''''''''''''''
+                 .................................................                      ..............................
+                          ===  === =========--H-HHHHHHHHHHHHH-===                             =   = ====--=-===-======
+                                              C BCCCCCBBBBBBC
+                                                       VVVVV
+                                                        AAA
 X1XXAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        -===++=+++++++++++++++++++++++++X+XXXXXXXXXXXXXXXXXXXXX+++++++++++=+=++==++=+++++++++++++++++++++++++++++XX+++
+               ' '''''''''''''''''''''''''''''''''''''''''''''''''''''           ''  '''''''''''''''''''''''''''''''''
+                  .................................................                     ..............................
+                     ==  === =  ========-=---HHH-HHHHHHHHHHHH--===                         ====   = =============--==
+                                             CCC CCCCCCBBBBBB
+                                                        VVVVV
+                                                        AAAA
 XAXMOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -   --=-==++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXX+++++++++++++-++==+++++++++++++++++++++++++X+X++++X+++X+
+                 '''''''''''''''''''''''''''''''''''''''''''''''''''''  ''       '  ' '' '''''''''''''''''''''''''''''
+                  .................................................                      .... ........................
+                     =   =  = == ==== ====----HH--HHHHHHHHHHHH= ==                        =    == = =====-=-== =-===-=
+                                              CC  CCCBCCBBBBBC
+                                                        VVVV
+                                                        AAAA
 ZAAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       --=-===++++++++++++++++++++++++XXX+XXXXXXXXXXXXXXXXXXXXXX++++++++++++++++=+++++++++++++++++++++++++XXX+++++++++
+               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '      ''''''''''''''''''''''''''''''''''''
+                    ..................................................               .   .............................
+                           =  ==== ===---=--------HHHHHHHHHHHHH-=                             ==  ====== =---=========
+                                                  CCCCCCBBBBBBC
+                                                         VVVV
+                                                         AAAA
 ZZMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       ---==+++++++++++++++++++++++++++XXXX+XXX+XXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++++++X++++
+             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ' ''   ''''''''''''''''''''''''''''''''''''
+                   ....................................................       .         ..............................
+                           ==== =======----=---=--H-HHHHHHHHHHH-== =                         =     ==============-====
+                                                  C CCCBBBBBBBB
+                                                         VVVVV
+                                                         AAAA
 1ZXAMAOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      --  =+++++++++++++++++++++++++++++XXXXXXX+XXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++X+++X+X++++
+              ' '''''''''''''''''''''''''''''''''''''''''''''''''''''' ' '''''   '''' ''''''''''''''''''''''''''''''''
+                  ....................................................             .  ................................
+                     =     === === =====-------=-H--HHHHHHHHHHHH===                     =  = ==============-===-=-== =
+                                                 C  CCCCCBBBBBBC
+                                                         VVVVV
+                                                          AAAA
 ZZZAMMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        - =-=-+++++++++++++++++++++++++++++++XXXXXX+XXXXXXXXXXXXX++++++++++++++=+++=+++++++++++++++++++++++X++++X+++++
+                '''''''''''''''''''''''''''''''''''''''''''''''''''''''  ' ' '' '     ''''''''''''''''''''''''''''''''
+                   ...................................................                ................................
+                           == === ===========---H-H=HH-HHHHHHHHH-===                         ==  =   ======-====-=====
+                                                C C CC CCCBBBBBC
+                                                          VVVVV
+                                                          AAAA
 XAZXAAAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+         -----++++++++++++++++++++++++++++X+XXX+XXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++X++++X++X+++++
+                  '''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''   ''' '''''''''''''''''''''''''''''''''
+                      ...................................................            .................................
+                           = =============-=---=--H--H--HHHHHHHH--==                   ==     = ========-====-==-=====
+                                                  C  C  CCBBBBBB
+                                                          VVVVV
+                                                           AAA
 1XZ1ZMXMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          ----==+=+++++++++++++++++++++++++XX+X+XXXXXXXXXXXXXXXXXX+++++++=+++++++++++++++++++++++++++++++++++++++X++++
+                   '''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ' '' '''''''''''''''''''''''''''''''''''''
+                     . ................................................   .        . .................................
+                        =    =  === == ====--=-=--H----HHHHHHHHHH-== =                   =   ====================-====
+                                                  C    CCCBBBBBBC
+                                                           VVVVV
+                                                           AAAA
 1ZAAXMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          =-=-==++++++++++++++++++X++X+++++X+XXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++++++++
+                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''
+                   . .................................................... .    .. .. .................................
+                         ===    ==-==-=====-=-------HH-HHHHHHHHHHH-==                 =  === = == ===================
+                                                    CC CCCBBBBBBBC
+                                                           VVVV
+                                                           AAAA
 +1AAAAAOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       -- ---=+++++++++++++++++++++++XXX+XXX+XXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++X++X+++X+XX+XXX+X++
+                '  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                    .... ............................................... ..   . ......................................
+                          = === =====---=---=----------HH-HHHHHHHH-===                =   = =======-==-===-=--=---=-==
+                                                       CC CBBBBBBC
+                                                           VVVVVV
+                                                           AAA
 111XMXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       ---=====+++++++++++++++++++++X+++XX++XXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++XX+XXXX+X+XX+XX++X++
+               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                     .................................................................................................
+                             == = ==-===--==H--H-HHH-HH-H-HHHHHHHHH-=====           =    =========--=----=-=--=--==-==
+                                            C  C CCC CC C CBBBBBBBC
+                                                           VVVVV
+                                                            AAAA
 )1AAAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+         --==-=++=+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++X+XX+++X+X+XX+X++++++
+                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                       ...................................................... .. .....................................
+                         ==  = = ==========-----H--H-------HHHHHHHH--==  =         = =  =========-=--===-=-=--=-==== =
+                                                C  C       CBBBBBBC
+                                                            VVVVVV
+                                                            AAAA
 11XZAMOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      --  --=---+=++++++++++++++++++++++XX++XXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++XX+++XXXXXXXX+++++
+                   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                     ......................................................... .......................................
+                       =    ==== === ===--==----HH--HH---H-HHHHHHHHH-== =               = == =======--===--------=====
+                                                CC  CC   C CBBBBBBBC
+                                                            VVVVVV
+                                                             AAA
 AXAZXAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+         --=--==+++++++++++++++++++++++XXXX++XXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++X+++XXX+X+++X++++
+                 ''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                      ................................................................................................
+                             == =======----==--H--HHHHHHHHHHHHHHHHHHH======         ==     ==========-===---=-===-====
+                                               C  CBCCBCCCCCBBBBBBBBC
+                                                            VVVVVV
+                                                             AAAAA
 XXAAMMOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      --   ---===++++++++++++++++++++XX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++++++++++++++++XXX++XXXXXX+XXXXXXX++++
+                 '' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                       ...................................................... ........................................
+                           === =   ==--=-=----H--H---HH-HHH-HHHHHHHHH=-=    =  ==  =    = = ===---==------=-------====
+                                              C  C   BC CCC BBBBBBBCC
+                                                            VVVVVV
+                                                             AAAA
 AXOMMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -      ---=+=+++++++++++++++++++++XX+XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++XXXXXXXX++XXXXX++++++
+                  '''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                    .  ...............................................................................................
+                           == ======--=----==--HHH---H-HHHH-HHHHHHHHH-- ===  = =   ==============--------==-----======
+                                               CCC   C CCCC BBBBBBBBC
+                                                             VVVVVV
+                                                             AAAAA
 AZOMMMOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -   - - --=+++++++++++++++++++++++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++XX++XXXXXX+XXX+X++XX++
+                ''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                      ................................................................................................
+                              ======-==---------HHH--HHH-HH-HHHHHHHHHHH=  = === = ==  ==========--==------=---=-==--==
+                                                CCC  CCC CC CBBBBBBBBCC
+                                                             VVVVVV
+                                                             AAAAA
 ZMMMAXOAAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      -     --====++++++++++++++++++++++XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++X+X+XX+XXXXXXXXXX+++++
+                    ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                       .  ............................................................................................
+                             =    ======-------H---=HHHH---HHHHHHHHHHHH-=   ==== =   == ========-=-=--=--H--H----=====
+                                               C    CCCC   CBBBBBBBBBBC                                  C  C
+                                                             VVVVVVV
+                                                              AAAAA
 AAAMMAOMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      -     -==++++++++++++++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++XXX+X+X+XXXXXXXXXXX++++
+                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                      .. .............................................................................................
+                              = = =====-=---H--H-HH-HHHH-HHH-HHHHHHHHHH--=======    == ===  ===---=-=-=-----------====
+                                            C  C CC CCCC CCC BBBBBBBBBC
+                                                             VVVVVVV
+                                                              AAAAA
 AAMAAAAAOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        - ---=-=+++++++++++++++++++++X++XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXX+X++++++++++++++++++++++XX+XXX++XXXXXXXXXXXX+XX
+                  '' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                      .. .............................................................................................
+                           ==  == ===-==-----=--HH--HHHHHHHH-HHHHHHHHHH=-== === = = == ========--=---==------------=--
+                                                CC  CCCCCCCC BBBBBBBBBC
+                                                              VVVVVVV
+                                                              AAAAAA
 ZXZMXMOAOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      - --  ---=+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++X++X+++++X++XX+XXX++XXX+++
+                 ''''' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                       .   ...........................................................................................
+                             =  = =======------HHHHHHHHHHHHHHHHHHHHHHHH--======   ===   ====-==-=====-==--=---==---===
+                                               CCCCCCCCCCCCCCCBBBBBBBBC
+                                                              VVVVVVVV
+                                                              AAAAAAA
1
 MMOMMMMOOOMOOMMMMOOMOOOOOOOOMOMOOMOMOOOMOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -    --- --    -- -------- - -- - --- --=+=-=-=====--- ------+==-=+===+++=++++++++++++++++++++++++++++++++++
+                                                                          '  ' '  '  '' ' ' ''' ''''''''''''''
+                                                                                          .        . .........
+                                                                                                       ==
 MMOOMMMOMMMMOMMOMOMMMMOOOOOOOOOMOOOOOOMMOMOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  --   -    -  - -    --=--=--- ------  - -------== =-=---=--=+++=+====+=++==++++==+++++++++++++++++++++++++++
+                                                                               '    '    ''   '''''''' '''''''
+                                                                                                   ... .......
+                                                                                                         =
 AAMOMAMMOMMMMMMOOOMMMMMMOMOOMMMAOOMMOMOMOMOOMMOOOOMMOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -    -      ---      - --    --  - - - --  ----  - - -===-=-=++==--==-=++++++++++++++++++++++++++++++++++++
+                                                                                     '' '' ''''''''''' '''''''
+                                                                                                    .  .......
+                                                                                                           ===
 XMMMMAMMMMZOAXMOMOMMMMOOMMMOMAAMMMMMMMMMOMMMAOOMMMOOOMOOOOOOMOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+           -   - -    --   -            -    --   --- -=---= --=+== --====-++=+==++=++=+++++++++++++++++++++++
+                                                                                        '''' ''''' ''' '''''''
+                                                                                                 .  .     ....
+                                                                                                             =
 AXAMMAMMMOMMMMMOMMMOZAMMOOOMMOOOMOMOMOOMMAX1MAMOOMMMOMOOMOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+         -     -   -    ---  --- - - --        --   - -- =--  -==----==+=+=+=+=++++++++++++++++-++++++++++++++
+                                                                                  ' '  '''' '''   ''''''''''''
+                                                                                         .               .. ..
 AMMMAAMMMAMMMMMMOOOMMAMMMMMAOMAOOOMMOOOMMMOMOMMMMOMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                ---         -  ---  ---   - -    -  - ----==--===---===+=++++==+==++++++++++++++++++++++++++++
+                                                                            '       '' '' '' '''    ''' ''''''
+                                                                                                          ....
 AMMMAMMMAAAMMAAAMMAAAMOMMAMMMMAMMMMMOMOMMMMMMMMMOMOMMOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                      -             - -         - -  ---- ==--=-----==--++++==++==+++++++++++++++++++++=++++++
+                                                                        '           '    ''   '''''      '''''
+                                                                                                          . ..
 AMXAXAMOMXZMMAMMMMAAAMAAXXMAAAMOMAMMOOMMMMMOMMMMMMMMOOOOMMMMOMOMAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       -                       -    --     -        ----    - -    ----=+=+====+===+=+=++++=++=++++++=+=++++++
+                                                                                       ''    '  ''       '''''
+                                                                                                          .. .
 1XXM1ZAMAXAZOAXZMMMAAMAAAAMMMMAXMMMMMOMMXAAXOAMMMAAMMAMMMMOMMOOMOOMOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            -                        -      -             -  -- -- --  =-+===--+=+-=+++==++==-=+==-===+=++++++
+                                                                                                         '''''
+                                                                                                           .
 XZMAZXAMMXAAAAZXAAMMAAAAZXMAAMOMMMOAMOMMMMMMMMMOMMOAMMMOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                              -   -  -         -  -    --=----  =-----==-+=---=+==-=--======+===++===+++++++++
+                                                                         '                             ' '''''
+                                                                                                          .. .
 AAAAMAAAAXZXAXZAMAAAXAAAAMMAMAMMMMOAMMOMAOOMMMMMMOMOAOMMOOMMMAMOMMOMOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                  -   -  --      - - -  --     -  - -----=-- --+====+==+=+=+++===+++++++++++++
+                                                                                                        ' ''''
+                                                                                                             .
+                                                                                                             =
 MMMMAAAAXAZXZAXAXXZXZMXXAMAXMMAMXMOMMOMMAMMMMMMOMOOAMMMMOOMMMMMMOOOMOOOMMOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOO
+                                  -  -         - --     --      --- ---  -=--=-======+ =+=+==+==-+-==+++++++++
+                                                                                                       '''''''
+                                                                                                           . .
 ZMXAAXXXXX1XZXXXXXXZZZXAXXXAXZAMMOXAMMMAXAAOMAMZMOXMXAMXAAAOAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOO
+                                 -         -     -         -     --------+-==-===-=++=====+=+= =+===++++=+++++
+                                                                                                       ' ' ''
 XAXXXZAAXZAXZXZ1XZXZX)ZAXXAAAXXXAMMMMMAXZAMMMMAMMAM1MMMMAAXAMZOAOOMOMMOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                              - -- -  --==-= --+=--==-==-+-====-=+==++++=+++++
+                                                                                                       ' '''''
 XAAXAXXZX11ZZXXXZ111XZZXXAAXAXXZAAMAMAXAXAMXAAMAAAMAXAMZXAMMMOMMMMMMXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                             -         -------=-=-====---+--========+=====++++
+                                                                                                          '
 AAAAZXXZXZZXXAZXXZZZXXA1AAZXMAAXMAAXMMAAZMZXZXAAMMMAMAXA1AAMAOMOOMOMZMMOOMOMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                             - -- -    -- - -  -=-==-----==+=-++=-==++++++++++
+                                                                                                          ' ''
 1ZZAZZZZX111ZZ1ZZZZZZ1ZAXXAXMAXZAAMAZMXXMAMXXMA1MAXZ1ZMZXAOMAOAMMMMMMOMMAMOMOMOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOO
+                                                          -  -       -    - - -=----= ----=+-=-+==--++++++++++
+                                                                                                        '  ' '
 XZ1ZZXZXX1ZZZZXZXXZXAXXAAMAAMAAAAMMXXMMXAMAAZXAXXAXXZZAAAMMOMMMMMMMOOOAMOMMMMOOOOMOOOOOOMOOOOOOOOOOOOOOOOOOOOO
+                                                           -       ---  -    ---- -===-- -==+===+-+=+++=++++++
+                                                                                                     '' ' ' ''
 AZZZZ11ZZ1)ZXXZZ11ZXZZZXXXXXAXAAAMAZAMAMAMAAAMZXAXAXZXXAMAMOOAMOMMMMOMMMMMOMOMOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOO
+                                                           --  -    -     - - -----=- ---======-=-=+++++++++++
+                                                                                                         '''''
+                                                                                                          . ..
 XZXA11Z111))ZZ1ZXXXAXXZAAXAXXAXXMZAXXMAAMMMMMMXXXXXXAMXOMOOMXAMMMMMMMAMMMMMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                       - --                --- -=-----=============+++++++++++
+                                                                                                         '''''
 1ZXX111Z1))Z)X1ZA1AAXZ1XXZMAAZZXZAX1ZXAAXAMZXX1AZAAXXAMMMMMAMAMAMMMAAZMMMMAOOMMOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                           --  ---- = -=-======-==+++=++++++++
+                                                                                                       ' ' ' '
+                                                                                                             .
 ZZXXZ1ZZZ1)1ZAZZAMZXAZAXMOMAMXMXMXAZXMAAXXA1ZAAXXZX1AAAAAZXAAMAMMXMMOOMMMOOMMOMOMOOOMOOOOOOOOOOOOOOOOOOOOOOOOO
+                         -                                          --   --  - - =-- ---===+=-=-==++=+++++++++
+                                                                                                             '
 XZZXZX111Z11ZZZZZAXXAXMZXXMXAZXXXAAZAAMXAAAAAAA1XZXMXMAAXXMMAMAMAAAMMMMOMOMOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                       - - - - ---------=+-===+--======+++++=+
+                                                                                                         '   '
 ZZZZZZ1ZZX1)ZZX1ZXZMXXZZAZOZXMZ1MAMAMMAXMMAAMAXMXMXAXZAMXAMMAMAMXXAXMMAMXMMOOMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                          -                                                --  - -------===--++==+-===++++++++
+                                                                                                         ' ' '
 1ZZ1ZA1X1Z1ZZXZAXZZ1AXMAXAMAAMXAMZMXMAMAAAMMXAMMMMZMAZAAMAA1MMMAMMAAMOMOMMOOOMMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                     - -  ---   -- =-=---==-==+====++==+++++++
+                                                                                                          '''
 ZZZZZXZZXZZZZXZXZXZZAXXXMAXAZAXAAXAZXOAXOXAMAXMMXZMMMAXAMZAAMMAMAAXMAMMXMMOAMOMOOMOOMMOOOOOMOOOOOOOOOOOOOOOOOO
+                                     -  -                                 -  - -- --  ----- -=-========+++++++
+                                                                                                       ' ''' '
 Z11ZZZZZXX1ZXXZZZXAZXZZZZZXXXMAAXMAXZZAXZXAAZXAZZ1MAAAXMAAAMMAAXMMOMAMAAMMMMMMMOMOMOMMOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                  -            - - -  ---------=-=---==+++++++
+                                                                                                          '  '
+                                                                                                             .
 Z11ZZZ1ZXZZXXXZZMZXZXXZXXZA1AXAXXAXAXXZAXXXXAAZ1XXZMXMMAAAAMMAOAMMAMMMAMMMMMMMMMOOMMOOMMMOOOOOOOOOOOOOOOOOOOOO
+                                                              -                 --  --   ----=----=--=--=++=++
 11Z1Z11ZZZ1XM1)ZXX1)1AZXXA1ZMXZXZZ1Z1AX11ZXZZ11ZZZXXZAAAZAXMAAMAMMAMMMAOOMMOMMMMOMOMMOMMOOMOOMMMOOOOOOOOOOOOOO
+                                                                       --  -    - -  -  =- --   -----=+=++++-=
+                                                                                                         '
 Z))1Z)1ZZZ)1ZZ1)XZ111XZZZ1111ZZZ11Z11ZXZ1ZZ1)XXXZZAZZXAMZAZXMAZAMXOMMXAOMOMMOOMOOOOMOOOOOOOMOOOOOOOOOOOOOOOOOO
+                                                                  -    - -  -- ---- ------- -=-----===-==++=++
 ))11ZZZXZZ))ZXXZ1ZZ)1XZXXZZ11XZZXZZ1XXXZXXXAZZAX1ZXXZZZZZXXAOXXMAXAMZXMMMMMOOMOMMOMOOMOOMOOOOOMOOOOOOOOOOOOOOO
+                                                            -              -- -  - -- -- ----- ----=-++=-=+++=
+                                                                                                          '
 1+))1ZZZX1+1)Z11ZZZ1ZXZZXZZX1ZZZZ11ZXZXZ)ZXXXZAAXXAXAXZXZZXXXZXAMXAMAAAMMMMMMAMMOMMMMOMMOOOOOOMOOOOOOOOOOOOOOO
+                                                                                -    -  ------ -=----=+--+=++=
 1+))11+)))+)1)))1)))))))11)ZZ11Z)1)11)111)1ZZ1)Z)+)))))111)Z11ZZAZZ1AMAZMAXAMAXAAMZMMMMOMOMMMOOOMOOMOOOOOOOOOO
+                                                                                       - -   --- -- --====++=+
 1X1)1)1)1XMZZZ1MZ11)1ZZ1Z1ZZ1ZZ111ZZZZX1MAZXX1AZ)ZZ11ZZ1ZZ1ZZXXMAXMMZMMXMMMMMMMMMMMMOMOMOOOMMOOOMOOMOOOOOOOOOO
+                                                                                    - - -+-  --- -= =--===+=++
 ))+=)11)OOOX1ZXOXZ1)1Z111)ZZZ11Z11ZA11ZZOOZ111ZZZ1XZ1ZZZZZ1ZX1ZOOZOMAMAZMMMMAMMOMMMOMMMMOOOMOOOOMOOOOOOOOOOOOO
+        -++    +                        +=                     ++ +            -   -    +X= ---- ------=---=-=
+          '    '                        '                      '  '                     ''
+               .                        .                      .                        ..
+               =                                               =                         -
 )))1)+)1OM1)11AO1Z1)1Z1Z111111ZZZZZZZ1ZAOMXZX1ZXZZXA1ZX1Z11ZZZZOOZXAAOMAMAMMAOOMOMOMMOMOOOOOOOOOMOOMOOOOOOOOOO
+        +      +                        +                      +-    -       -- - -  - -++===--= -- ------=-==
+        '      '                        '                      '                        ''
+        .      .                        .                      .                        ..
+        =                                                      =                        =
 ))+1))AOOO1OOXOOOAOOOOOOZOOXOOOOOOOOOOOM1ZOOOXZXOOMOOOOOOOOZAOOOOOOMMOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       +X+ ++ +X+ -X++=+ +- +XX-X+X=X=X   +++   ++ X++=+++=  +X+=X=  +XX=X+X +XX-=XX=-+XX+=--=-------=-==-=--=
+       ''' '' '''  ''' ' '  ''' ''' ' '   '''   '' ' ' ' '   ''' '   ''' ' ' '''  ''  ''''
+       ... .. ...  ... . .  ... ... . .   ...   .. . . . .   ... .   ... . . ...  ..  ...
+       =H  ==  -=  -==   =  =-- -=H - -   ==    == - = = =   =-= -    H- - - =--  -H  =-H
+        C                         B                                   C            C    B
+                                                                                        V
+                                                                                        A
 ))))111OOZOOOAOMOOMOOZOOOOMOMOOOOOZOOOOOZZOMZZAOMXMOOOOOOOOMOOOOOOOAMOOOOOMOOOMOOOOOOOOOOOMOMOOOOOOOMMOOOOOOOO
+       +- +=+ + += X- ++=+ X ++=++ -+++-  +    X   -++=X+++ X-+--X-  -+=X+ ++X X+X-X++++X= - =------  -=-=====
+       '  ' ' ' '  '   ' ' ' '' ''   ''   '    '    '' '''  ' '  '    ' '' ''' ''' ' ''''
+       .  . . . .  .   . . . .  ..   ..   .    .    .. ...  . .  .    . .. . . . . . ....
+          =   =    H     = -    =     =   =    -    == -    - =  -    = -= = - - - H ===-
+                   C                                                               C
 )++111ZOXOOOZOOMOMOOZXOOOOOOAOOAOAZ1OOOX1MOOZZOOOZ1MOOOOMOOOOOOOOOOXAOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOMMOOOOOOOO
+       X -+- =+ X -+  +-++++ X+ X   +X+   ++  ++-   X+-+ X-++-+-=+-  ++-X++=+++++++X+X+X+=- --------  --=-====
+       '  '   ' '  '  ' '' ' '  '   '''    '  '     '' ' ' '' '  '   '' ''' '''''' ''''''
+       .  .     .  .  . .. . .  .   ..     .        .. . . .  .  .   .. .   .. ... . . ..
+       -  =     -  =  = =  = -  -    -     =        -  = -    =         H   =  = = H H H=
+                                                                        B          C C C
 =1+))1OOZXOOZOOOA1OZ11OOOOMOOOOMOZ11OOZXZOOOZZOOO11OOXOOXOMOOOOMOOOXXOOOOOOMOOOOOOOOOOOOOOMMMOMOOOOOOMOOOOOOOO
+      ++  += -+=  +   +=+= +-X- +   ++   ++-  -+=  ++ +- + ++++ ++-  =+++X+ -++=-+++-X+X+-   - ------ --==--==
+       '  '   '       ' '  ' '      ''   ''    '   ''    '  ' ' ''    '''''  ''  ''  ''''
+          .   .       . .  . .      .    ..    .    .    .  . .  .    . ...  ..  ..  ....
+          =   =       = =  = -      =          =              =  =    = =-       =   -=H
+                                                                                       C
 1Z1)1ZOM11ZZ11ZZZZ1ZZZ1Z111Z1ZZZ+11OOZXZZXZ1Z1ZZ11OO1ZZZXZZZA1XZXAXXZAMMAMXMXOOMMMMMMMOMOMOOOOOOOOOOMMOOOOOOOO
+      +                            ++             =+                         --       - - --=-------  ----====
+      '                             '              '
+      .                                            .
+      =                                            =
 1))AZOO))1))1ZZ)1111)Z1Z111111ZXXOOOZ1Z1X11ZXZ11OOOX1Z1111Z1X1ZZ1ZX1AAMOMAMMOMMMMMMAMMAMOOOMOOMOOOOMMOOOOMOOOO
+     -+                          ++-            ++-                    -    -           --- -- ---=  -=-= -==+
+                                 ''             ''
+                                 ..             ..
+                                 ==             ==
 1+11OM11))))))+))11Z1111)111)111XZXZ1111ZZ1XZZZ1Z11111111111XXZZZXXZXXAAXAMMAMAAAMMOMAMOOOMMOMOOOOOOOOOOOOOOOO
+    -                                                                              -   ---  - ------=---=--=+=
 )=)+))Z1)111111)1)111))11ZXX11ZXZZ1ZZZ1Z11Z1ZZ1ZZZZZ11Z1ZMZ11ZZZZXXXZXMOXAAMAMAMZMAMMMMOMOMOMMOOOOOOOOOOOOOOOO
+                                                                       -               - - -  ------=-==+---==
 1))1)MOOOO11))1)Z1OOMZZ1Z1ZXZXZAAAZX111XXXXZX11OOA1ZZOOMMOOZZMX1XAZAXMMAOAMAAMMMAMMMMMOOMMOMOOOOOOOOOMOOOOOOOO
+      ++++        +X                           ++    -X  X-             -             --  - --=---==- -===-===
+      ''''        ''                           ''     '  '
+      .. .        ..                           ..     .  .
+         =         -                           ==     -  -
 )+=)+O1)=+++==+))1OO11)))11ZXZ11Z1)ZZ1ZZZXZZZ11OOZ1ZZOOZXZ1ZZ11ZXAMXMMMAMOMMMMMOOMOOMOOOOMOOOMMOOOOOOOOOOOOOOO
+     +            +-                           +-    -+                  -     -- -- ---- =-+  =--++=-=====++=
+     '                                         '      '                                                    '
+     .                                         .      .
+     =                                         =      =
 ))))MOZMOZOOOOZXOAOMMOOXZZMOOO1ZOOOOOOOZOOOMAOOOMOOOAOOOOOMOOOOXOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     +  + -+-=  = X  --    ++=  -++++=+ ==+  +=X --+ +--+- +++- +=+-   ++--+++++++-+++=++++++--=--=+====++++==
+     '            '         '    ' '           '   ' '  '  '      '    ''  ''' ''' ''  ''''''
+     .            .                            .     .     .      .    ..  ... ... ..  ......
+                  -                            -                                    =      ==
 ))11OO1MOZOOOOAOOOOMOOOAZMOMOOZXOOOOOOOOOMOMOOOOMOOOOOZMOOOOOOOOOOOMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    +=  + -X-X ++-+ -+-   X X-  -X+X+++-X X ++++ +++-+  X--X+X--X=X   ++=-X++++++++XX+XX++X++------====-=+++=+
+    '   '  ' ' '  '  '    ' '    ' '''' ' ' '''' ''' '  '  ' '  ' '   ''  '''' '' ''' ''' ''
+    .   .  . . .  .  .    . .    . . .. . . .... ... .  .  . .  . .   ..  .... .. ... ... ..
+        =  - -    =  =    - -    H - =  - -      === =  -  - -  - H   =   - =  ==  -- --= -=
+                                 C                                C
 )))1OX1OO)OOOOZOZOOZ1OOZXOOOOMXAOOOOMOOOOMOOOOOOOOMAOOZOOAOOOOAMOOOAMMOOOOOOOOMOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOO
+    +  ++ +-+= X +=  X=  ++-X   =+-X X-++ X=X-X-=X  += -+ ++=+  +++   X--++-X= X+-X+-=X=--X+----  =---=+=+=+=+
+    '  '  ' '  ' '   '   '  '    ' ' ' '' ' ' '  '  '   ' '' '  '''   '  '' '  '  ''  '   '              '
+    .  .  .    . .   .   .  .    . . . .. . . .  .      .  . .  ..    .   . .  .  ..  .   .
+    =          - =   -      -      - -    - - -  -      =    =  =     H   = H  H  H   H   H
+                                                                      C     C  C  B   B   B
 )+)OO11OOXOZOOMOOOOOOOOZZOOOOOXZOMOOXOOOOOOMOOOOMOMXOOMOOOOMOOAOOMXXXAOOMOOOOOOOOOOOOOOOOOOMMMOMOOMAMOMOOOOOOO
+   -+  ++ + ++ +-X++-+-  +-++=  + == +++=+- +-+= +  ++ ++-+ ++ +=     += =++++=+--++++++-++   - --   - ----===
+    '  '' ' '  ' ' ' '   ' ''   '    '        '     '     ' '' '      '   '''' '  ' ' ''  '
+    .  .  . .  . .   .   . ..        .        .           .    .      .   .... .  .   ..  .
+    =  =  =      -                   =        =                             =     =   =   =
 ))1OM11XX111MMZMAOAXMAZ1ZZOMOXXXMXMAXMMMOMAXOMOMAOMZMX1AAZAXOOOOOOOMOAOMOMOOOOMMMMMOMMOOOOMMMOOOOOMMOOOOOOOOOO
+   +             -        - -           -   - -  -          --+++++ - - - =-=-     -  =---   -----  ----======
+   '                                                          '''''
+   .                                                           ....
+   =                                                             =
 OMOOX)11ZZZ1ZXX1ZXZZZ1X1XXZZZ1XZ1AXMXAZAXAMAXAXX1ZZZ1ZZXX1ZXAAOOOOOMMAAMOOMMMOAMAXMMMMMMMOOOOOMOOMMMMOOMOOOOOO
+- -+                                                          ++=++     --   -           ----- --    -- --=+++
+   '                                                          '' ''                                          '
+   .                                                          .. .
+                                                               = =
 ZOXZZZ11ZX11ZZ1ZXXZX1Z11A1ZZZXX1ZXXXZXMXXZXXXXXZ)XZXZZZZZ11ZXAAXXXZXXZAXMMAAAMMAMMXXMMAOMAMMOMMMOOOOOOOMOOOOOO
+ -                                                                                     -    -   ------- -==++=
 Z11)11ZZZZ1ZZXXZ1ZXZMAAXXMAAXXXAAXAAAZAAXZMMXMAAXA1ZMAXXZAZMOMAMAOMXOMMMMMMMOOOMOOOOMOMMMOOOOOOOMOOOOOMOOOOOOO
+                                                            -    -  -       --- ---- -   ------- ----- -=-==++
 1Z1111111ZZZOOOAZXZXOOAMOOOOXXOMMOOOAAAMXOOOZXZXXXZAMAMAXAXOOMMAXAMMOMOMMMMOOMAAOOMAMMMOMMOOOOMOOOOOMOOOOOOOOO
+            =-+     +-  ++=+  +  +--     -+-               =+       - -    -+   ==     -  ---- ----- ----++=++
+              '     '      '  '  '        '                 '               '
+                    .      .  .  .        .                 .               .
+                                                                            =
 1)11)1111111OAAZ111AOAXOOAMMZMOAMOMXAZXMZOOMZZZZXZZXMMAXXXZOOAMAMAAAAMMMMOMOOMAXMMOAMMMMMMMOOMOMOOMOOMOOOOOOOO
+            +       +  +=     +  +       ++                ++            - ++     -        -- - -- -- =-====++
+            '       '  '      '  '       ''                '               ''                               ''
+            .       .  .      .  .       .                 .               ..
+                    =         =  =                         =
 1111)ZZ1X)OOOOOMXOAOOMOOOMOOXOOXOOOOOOMXAOOOXAOOOOOOOAAOOOOOOOAAOOMOOMOOOOAOOOMOOAZOOOOMMMMMMMOOMMOOOOOMOOOOOO
+          =+X-+  + ++ +X+ +- ++ ++--X+   X++  =+-++X-  +X=-X++  ++ ++ +++= XX+ ++  +++=       --  ----- ====++
+           ''    ' '  ''' '  '  ''  ''   '''   ' '''   ''  '''  '' '' '''  ''' ''  '''
+           ..    . .  ... .  .  ..  .    ...   . . .    .  ...  .. .    .  ... ..  ...
+           =H    =     H= =  =  =   -    -==     = -    -  -==  =          -H=  =   =
+            C          B                                                    C
 111Z1ZZ11)ZOOMOOOOAOMZOOAOOOMOAMOMXOOMAAOOOOOOOOOOOAMAAOOOOOOOOOOOOOOOOOOOOOOOOOOMAOOOMMMOOMOMOMMMOOOOOOOOOOOO
+           +- ++++ X  ++ ++= X  X  ++   =X-X-++++++    X=-++++-+-+-=+-+++=-X=X=++  +++   -- - -   --==--====++
+           '  ' '' '   '  '  '  '  '     ' ' ''''''    '  '' ' ' '  ' ' '  ' ' ''    '
+           .  . .  .   .  .  .  .  .     . . ......    .  .. . . .  . . .  . .  .    .
+           =       -      =  -  -  =     - - =   ==    -   = = = =      =  - -  =    =
 )Z)11111))AOZXOOOOOOMZOMAOOOOOMOOMAOOMXAOOOOOOOOMOOZAAMOOMOMOOOOMOOOMOOMOOOOOOMOOAOOOMMOOMMMOMOOOOMOOOMOOOOOOO
+           +  +-X-++  +  -+-++ ++  ++   +=++-X+= +-    ++ + ++++ X-+ ++ +-++++ ++ ++-  --   - ---- --- =-===++
+           '  ' '  '  '   ' '' ''   '   ' '' ''  '     '' ' '''' ' ' '' ' ' '' ''  '
+           .  . .  .  .   . ..  .   .   . .. .   .     .. . . .. . .  . . . .. ..
+           =  = -     =     =   =   =   = =  H   =     == = =    - =  =   =  = =
+                                             C
 )1)1111111OO)XOOOOOOMAOAZOOMOOAOOOOOOMXMOMOOOOOMOOAXXXOOOOOAOOOOOOXOOOOOOMOOOOMOOOOOOOMMMMAMMMXMOMMOOOOOOOOOOO
+          ++  ++X=++  X  +X ++ ++-+++   + X+-X+ ++    +++++ X+-++= X++X+= +++- X++++-=          -  -=---==--++
+          '   ''' ''  '  '' '' '' '''   ' '' ''  '    ''  ' '  ''  '' ''  '''  '''''
+          .   ... ..  .   . .. .. ...   . .. ..  .    ..  . .  ..  .. ..  ...  .....
+          =   = H     -   - ==  =  ==   = -= H   =     =    H  ==  -= -=  ==   H= ==
+                C                            C              C                  C
 1))1)1)111OM1)11Z111)OO1Z1Z1ZZZZZZ1XXZ1ZZZXZXAZ1ZXZZZXXZ11ZZZXZX11XXZXAXXAMMAAAXZAAOOOMAMMMMMMAMAAXMOMMOMOOOOO
+          X          ++                                                            =XX              -  - ---=+
+          '          '                                                              ''
+          .          .                                                              ..
+          -                                                                         HH
+                                                                                    BC
 )1+111ZAMOO111ZZ1ZZOOOAZ1ZXZZ1Z1)Z1ZXMXZMZXZZXX1Z111AZXMZZ1ZXXZXZZZXAZZZZXXMAOZMMAMOMMMMMMMOOOMAMMMMMOOOOOOOOO
+         -=        =-+                                                       -     -       ---       --=====+=
+                     '
+                     .
+                     =
 111))11MOOZ111ZXZZXOOM1ZXAZX1ZZZ1ZXXZAXXZZXXXXXAAXXXAXXXZ1ZAZZAA1ZXXZZZXZXXXAMZMAMOMMMMOOMMOOMOMMMMMOOOOOOOOOO
+        =-         +=                                                             -    --  -- -     --=-======
 11)1)ZZ1111111Z1ZZZZZZZ1XZ11ZZZZ1ZZZ1ZXZ1ZZZZZAAZXXXXZZZZZZXXZXZX1XX1ZXXXAXAMMAMAOOMMMOOOMMMMMOOOMOMOOOOOOOOOO
+                                                                                 --   ---     --- - -----=-=-=
 11111111)+)+Z11111ZZ1ZZOOMX1OOMZ1ZOOMZZZ))111Z1Z1ZAX11ZZZ1MOOOXXXZXMZZZXXZXAMXAAXOAMMMOOAAMOMMMOMOMOOOOOOOOOOO
+                       +X   =X    =X                       XX+                   -    --   -   - - ----=--====
+                       ''    '     '                       ''
+                        .    .     .                       ..
+                        H    H     -                       -H
+                        C    C                              C
 111Z11Z11+))111111)111ZOOMX1ZXZOOAAZXZXZZ11111Z11Z11ZXX11ZOMXZXXZZZ1ZZXAAZXXXAAMAOOMMMMMOOMAMOMMMOMMOOOOOOMOOO
+                       -+      ++                         X                      --     --   -   -  ------ -==
+                        '       '                         '
+                        .                                 .
+                        =                                 -
 ))111)1Z1))MMO1OOOOMOAZOOOMOOOAOOOOOMOOMOOOOMXOOMX111XZZMOOMMOOMOOOMZAOOOOAOOOOOOOOOOOOMOMAMMMMOMOOMMMOOOOOOOO
+             + -=-= -  +++ -+- ++++- += -+-+  +=         +X  =+ =++   ++== +-+-++-+=+-- -      - --   ------++
+                       '''  '  ''''  '   '    '           '      ''   '        '' ' '
+                       ..      ..                         .       .            .. . .
+                        =      ==                         -
 111111)1))OOAOMOOOOOOMZOOOOMOOMOOOOMOOOOOOOOMMOOMAZZZAXZMOOMOOOOOOOMZOOOOOOOOOOOOOOOOOOMMZAMAMMOOMOMMOMOOOOOOO
+          -+ X =X-X-+  +-++ X- X--X ++++-X=X  X=         ++ X-+=+X+  -++++++-X=+++++X+-        -- -  - -----==
+           ' '  ' ' '  ' '  '  '  ' '''' ' '  '          '  ' ' ''    '''' ' ' '''' ''
+           . .  . . .  . .  .  .  . . .. . .  .          .  . .  .    .... . . .... .
+           = -  - - =  = =  H  -  H =    H -  H          =  - =  H    ==   = -  = = -
+                            C     C      C    C                  C
 1++))))))1OMOOXOOOOXO1OOXOMOOZOOZOOXOMOOOOMOMZOOOOOOOOOOMOMOOMOMOOMA1MOOOOOOMOOOMOOMOMMAAXXAAAMMAMOOOMMOMOOOOO
+          + =+ ++=+ + =+ X -+ += ++ X ++=+ +  +++XXXXXXX X ++ X ++    +-X=++ X-X ++ +             ---  - =--==
+          '  ' '  ' '  ' '  ' '  '' ' '' ' '  '''''''''' '  ' ' ''    ' ' '' ' ' '' '
+          .  . .    .  . .  .     . . .. . .  .......... .  . . ..    . . .  . . .. .
+          =         =  = -        = - =    =  = =HHHHHH- -    - =     = - =  - -  = =
+                                                 BBCCCC
 )111111111OOOOMOOOMOOMOOOOAOOOOOOOOOOOOMOMOOOOOOAZX1XMZXOOMOOOOAOOAMAOOMOOOOOOOOOOOOOOMMAXAXMMAMMMMMOMMMOOOOOO
+          +-X+ +-+ -+ ++++ ++-++=++-+=+ + ++-+++        ++ =+++ +-   =+ X+++++=++++++-              -   ---=--
+          ' '' ' '    ' '' '' '' '' ' ' ' '' ' '         '  ''' '     ' ''' '  ' '''
+          . .. . .    . .. .. .. .. . . . ..             .    . .     . ... .  . ..
+          = -  =           =  =  =  = = =                =      =       -      = ==
 1)11Z111Z1MOOOZMZMZZA1MOM1ZOOZOOXMMZOOAZOZMOXOOZZ1XZZZZXOO1AOOXXOMXMAOMMOMMOOMMOOOOOOMMMAMAMMAAMMMMMMOMOMOOOOO
+           --=         +   -- --    -=  -  - -=         ++  =-  -    -  +  +-  ++-++-                - - -====
+                                                        '                      '  '
+                                                        .
+                                                        =
 )1111)))+)1111Z111Z1)))1Z11ZZZ11X11ZZZ111ZZZ1XZX111ZZOMOO1)))11)ZAAXMAZAZAMMAAMMAOMOMAMOMMMOOAMMMMMMOMOOOOOOOO
+                                                     = -+                        - -   -   --       - -=-=+-+=
+                                                        '
+                                                        .
+                                                        =
 ))111)1)+1Z111)ZZX1)1ZX1X1XXZ1Z1Z1ZZ1)ZZ)Z1ZZ11ZZZZ1XOOOAX11AXAZMMXMMMXMXMAAAAAMMMMMMMAOAOOOMMOOOMMMMOOOOOOOOO
+                                                     -++                               - ---  ---    ---====-=
+                                                      ''
+                                                      .
+                                                      =
 ))111111111Z11ZZ1ZX11ZZZZZXXAX1AZX1XZZZZZX1AAXZZA1X1AAXZXXAXXAAZAAOMMAAAMMAAAMAMMOOOOMMMAMMOMMOOMMOOOOMOOOOOOO
+                                                                  -              ----      -  --  ---- -==+=++
 +)111)1111Z1111ZZ1ZZXZZXXZZAAXZXXXZZXXXZAZ11XAZXXZZ1ZZ1ZZZXZZXXXZAMXAXXAAAAMAMMMOMMMMAMMMMMOOOMOOMMMOOOOOOOOOO
+                                                                                -          --- --   ---=====++
 )+=++)))11+=++))++)1)+)))))111)1111))))++1)+)11))11))111111)1)ZZZZZ1Z11ZAXXZZXAAAXAMAAMAOMOOMMOOOOOOOOOOOOOOOO
+                                                                                        - --  ------=-==-===++
 XZZ1Z1ZZ11ZZ11111)11111Z1)1ZXZ1Z1ZX11)ZZZXZZXXZXMXXOAAX1XXXX1ZAMZMZAXAAMMAOMMXMMM1MMAMOAOMMMXMMMMOOOOOOOOMOOOO
+                                                   -                      -           - -        ------== ==++
+                                                                                                            ''
 O)1))1ZZ111ZZ)ZZZ1ZZZ1Z111ZZZZZXZXXAAXZZAMOOOOOOMXAXAXXZZXXZXMOOOOMAAAAXZAAAMXMMOOOOOOOOMMOMMOOOOOMOOOOOOOOOOO
+-                                         --=---              --=-              --++=---  -  ----- ----=++++++
 1)))1)1ZZ)XOOMMMOAZOOOOOOAZZZXZ1XZXXXZZOOOOOOOOOOOMXZMZXZZXOOOOOOOOOOMMAAMMMOAOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOO
+           =+   -  +===-+              +++++++++++         -++++++++=       - ++++++++++---------- --=--++++=+
+                                        ''''  '' '          '''''' '          ''''''' ''                     '
+                                        . .   .. .          .  ..              . .... .
 ))1))+1ZOOAAAA1XOMXOMAMMOM1ZZXZ1XAZZZAOOMAZX11ZXMOOOMMXXZZOOOAMAZAMOOOMMMMMMOOOOOMOOOOOOOMOOMOOMOOMMOOOOOOOOOO
+        -+      +  +    +             ++         -++      ++-      -=+      -++=- ----+++ -- -- --  ---=====++
+         '      '  '    '             '           ''      '          '       ''        ''
+         .      .  .    .             .           .       .          .       .         ..
+                   =    =                         =                  =       =
 +1111)XOO1)1Z=)ZOO1O1ZZZOO1ZZXX1ZX1ZXOO1ZX1XZ1ZXXZMOOZAXZOOXZZXXZXZZZMOMAMZOOOMAAAAAAMMMOOMAOMMMMMOMMOOOOOOOOO
+       +=       +- +    +-           ++            X+    +=           +    -X-          ++  -     -  --====+++
+       '        '  '    '            '             '     '            '     '            '                   '
+       .           .    .            .             .     .            .     .            .
+       =           =                 =             -     =            =     H
+                                                                            C
 1Z)1ZOOAZ1+)11)1OOZOXZZ1OOZZ1XZZZXZXOOAZ11MMMOOAZXZAOOAAOOAAXXMOOOMAAZOOMXMOOAAAOOOOOMMMMOOOMMMMMOOOOOOOOOOOOO
+     -+         +- +    +-          ++       --     +=  ++     =--    =+   +=   -====    ++-     ----==--=++=+
+      '            '    '           '               '   ''             '   '             ''
+      .            .    .           .               .                  .   .             ..
+                                                    =                      =
 ZZ1ZOOZ1Z)11MOOOOOZO1ZZ1OMXZZZZZZXXMOMAZ1MOOOOOOX1AMMOMMOMXMXOOOOOOMAZZOOMOOMOMOOOOOOOOMMOOOOOOMOOOOMOOOOOOOOO
+    ++       +=-+- +    +           +     ++++++     +  +    ++++++    += =+ - -++++++-  -+---- ---= --==-++=+
+    '           '  '    '           '     ''''''     '  '     '''''    '   '    ''''''    '
+                .  .    .           .     ......     .  .     .....    .   .    .....     .
+                   =                =                =  =              =           ==     =
 )11OO11)11OOOMMXXZ1O11Z1OOAZZZXAZ1ZOOAAZ1OOXXZMOOXAXZOMOOAXZMOOMAOOOAXZOOOOOMMAOOOMOOOOOOOOOOOOOMOOOOOOOOOOOOO
+   +=     ++-      +    +-         ++    +=    ++    X =+    +-  -X=   ++-++   ++- -+X=---++---- -==--=-==++=+
+          ''       '    '          '     '     ''    '  '    '    '     ' '     '    '    '               '  '
+           .       .    .          .     .     .     .       .    .     . .     .    .    .
+                   =                     =           -       =    -             =    -    =
 111O11111OOZ11)))1ZOXZZZOMAZX11XZZ1OOAXXXOAAAAAMOAMAXOOOOMAXOOMAMXOOOOOOOMOOOMAOOOMMMOOOOOOOOOOOOOOOMOOOOOOOOO
+   +     +=        +    +          +-    X      +    ++++   -+    +XXXXX+ +=-  ++-   XXXXXX+------=- =---==+++
+   '     '         '    '          '     '      '    ' ''    '    ''''''' '    ''    ''''''
+   .     .         .    .          .     .      .    .  .    .    ....... .    ..    ......
+   =               =               =     -      =    =       =     HHHHH             -HHHHH
+                                                                   BBBBB              BBBBB
+                                                                       V               VV
 11OO1))1OO111))111ZOZZ11OOZXXZAXAXXOMAAZAOMMAAZOOAAXXOOOOMMXAOOOMAAMOAZMOMOOOAMMOOOOOOOMMOMOOOMOOOOOOOOOOOOOOO
+  +-    +-         +    +-         +     +     -+    +==+    ++=    -   - ++-   +++----  - --- ---=-==-==+++=+
+  '     '          '    '          '     '      '    '  '    ''           ''    ''                           '
+        .          .    .          .     .      .    .  .    .            ..    .
+        =          =               =     =      =    =  =    =             =
 11OX1+1MO11)1))))))O1111OMZZ1X1ZAZ1OMAZXAOAXMXAMOOMXXOOAOOAAAAOOOOOOMAMAAMOOOAMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  +     +          +    +          +     X      +-   +- +-    ++++++      -X-  - ++++++--------=-=======++==++
+  '     '          '    '          '     '      '    '  '     ''  ''       '     ''''''
+  .     .          .    .          .     .      .    .  .      .  ..       .     .. ...
+  =                =                     -      =    =  =                  -         =
 1ZO1))1OMZ1111)Z111O111ZOOZ1ZZZXAXZOOAXZXOAXMMMMOMMXZOOXOOMXXXAMMOOOOOOMMOMOOMMMOOAMOOOOOOOOMOMOOOOOOOOOOOOOOO
+  +    +           +    +-         +=    X      X    +- ++       ---++-  - ++   --  ==+++--- - ==--=-===-+++++
+  '    '           '    '          '     '      '    '   '          ''     ''          ''                    '
+  .    .           .    .          .     .      .    .   .          ..     ..          ..
+                   =                     -      -    =   =                 ==          ==
 ZMO1ZZ1OA1Z1Z1+)1ZZO1ZZZOOAXMAAAMXZOOMMXAOOOOOOOOMMXZOOMAOOMMMMMMMAMXOOMZAMMOOOMOMMAOOMMOOOOOOMOOOOOOOOOOOOOOO
+  =    X           +    +-         +=    XXXXXXX+    +-  +X          -+     ++- -   --  ++=--- =--======-==+++
+       '           '    '          '     ''''''''    '   ''           '     ''          ''                   '
+       .           .    .          .     ........    .   ..           .     ..          ..
+       -           =                     HHHHHHH=    =    -           =     =            =
+                                         CBCCBBB
 1MOZ1+)OX1Z11Z1XZXZOXZZAOO1XXXXZMAAOOMMXMOOMAXMMAMAZZOMMMMOOOOOAMMAAZAOOOMOMOOOOOOOOMOOMOOOOOOOOOOOOOOOOOOOOOO
+  +    X           +    +-         +-    X+          +    +++=-       =+- - -++++--- -- -++=--------==-+++=+++
+       '           '    '          '     '           '    ''           '     ''          ''
+       .           .    .          .     .           .     .           .     ..          ..
+       -           =               =     H           =     =           =      =           =
+                                         C
 1MO1)+ZOMZZZ111ZZZZO1111OMZZZZXZXXXOOOAZXOOAAMZAMZZXZOMAMAMOOOOOOOOAZXMOOMMOMAOOOOOOOOMOMOOOOOMMOOMOOOOOOOOOOO
+  +    +           +    +          +--   X+          +     -++++++=    ++  -  -++++++- - -++--  -- ----==++=++
+  '    '           '    '          '     '           '      ''''''     ''      ''''''     '
+  .    .           .    .          .     .           .       .....     .       ......     .
+       =           =               =     H                      =                  ==     =
+                                         C
 11OX111MOZZZ1)11111O111AOO11ZZAZXAZOOZAZAOOMMMAAAZZ11OMMOOOOOOMOMOOOAXAMOMOOOOOOOOMOOOOOOMOOOMMOOOMOOOOMOOOOOO
+  X     +          +    +-         +=    X+          +  +++++= = =++    + ++++++-- ++X=-- ++=  --- ---- =+=+++
+  '     '          '    '          '     '           '  ' '''     '     '  '''''    ''     '
+  .     .          .    .          .     .           .     .      .     .  .....     .     .
+  -     =          =               =     H           =            =     =  =         -     =
+                                         C
 1+OOZ1)1OO111Z111Z1OXXXXOO11Z1ZXZZMOMMM1MOOOOOOOOAOXZOOOOOMOOOMAAXOOOMOMOOOOMMMOOMMMOOOOOMOOOOOOOMOOOOOOOOOOOO
+  +=    ++         +    +-         +     XXXXXXX+ -  +-++- -++    =X- - X-X=   X+   -++-- -X=--=- -=----===++=
+  '     ''         '    '          '     ''''''''    ' '    ''     '    ' '    ''    ''    '
+  .     .          .    .          .     ........    . .    ..     .    . .    .     ..    .
+  =                =               =     HHHHHHH=    = =    =      -    - -    -           -
+                                         CBBBBBB
+                                          V VV V
 11AOA1111OOOXZ1ZX1XOMXAZOOZ1ZZZZXXAOOZXXAOMOAOMMOMMXZOMOOAMMOOMMAMOOOMMMOOOOMMMOOMMMOOOOOOOOOOOMOOOOOOOOOOOOOO
+   +     ++-       X    +=         +-    X - -  +    + X-   ++    =+-   X+X-   ++   -++---=X=-- -----=-=+++=++
+   '     ''        '    '          '     '      '    ' '    ''     '    ' '    ''    ''    '
+   .     ..        .    .          .     .      .    . .    ..     .    . .    .     ..    .
+   =               -               =     -      =    = -    =      =    H H    =     =     H
+                                                                        C C                C
 111OOX11ZZOOOOOOOAAOZZZZOOOOOOOOOOAOMMXZAOMMAMAMOAAXAOMOOXAMOOOOMOOOMMAOOMOOMMOOOOOOOOOOMOOOOOOOOOOMOOOOOOOOOO
+   ++     -+++++-  +    ++++++++++ +     X      +    + ++   -++- +++   =X X=  -+++-=++=- -++------- ---==+==++
+    '      '''     '    '''''''''' '     '      '    ' '     ''   '     ' '    '''  ''    ''
+    .      .       .    .. ... ... .     .      .    . .     .    .     . .     .   ..    ..
+                   =     =         =     -      =    = =          =     H -          =     =
+                                                                        C
 Z1ZZOOXXZZ1ZOOOMOOOOXXZXMOOOOOOOOOOOOAXXMOMAXMMOOXAMMOOOOMMMAMOOOOOMMMOOOOOOOOAOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOO
+    ++      -=- ++-+     ---==--=X-+-    X     -X    +==+     =+++-   -++-++-- -=++++= --=X+-----=-=--===-+=++
+    ''          '  '             ' '     '      '    '  '      ''      '' ''      '''     '                  '
+    ..          .  .             . .     .      .    .  .              .. ..              .
+                   =             H =     -      -    =  =              =   =              H
+                                 C                                                        C
 ZZ111OOAZZ1ZZX11OOAO1ZXZXXZXZZAXZOMOOZZXXOMX1ZXMO1XXXOMXOOMAZZ1ZXZXM1MOOOOMOOMMMMOMOOOOAMOOOOOOMOOOOOOOOOOOOOO
+     -X         ++ X             X +-    +      +    +  ++            +X-- X+    - ----  X+---- ------==--++=+
+      '         '' '             ' '     '      '    '  ''            ''   ''            ''
+      .            .             . .     .      .    .  ..            ..   ..            ..
+      -            -             -       =      =    =   =             H   H             -
+                                                                       C   C
 )))1)1OOOMZZZ1)1OOAOX1ZZXZZ1ZZZ11OMOOZMZAOOAZZXOOZOOMOOXMOOOMXZOAMAOOOOOOMOOOOOMOMMMMOOOOOOOOOOOOMOOOOOOOOOOOO
+      =++       ++ +             X ++    X-    -+ -- X-  ++=   -   --+X=- --X++ -    --++X==----- ----=--==--=
+       '        '' '             ' '     '      '    '   ''          ''     ''          ''
+       .           .             . .     .      .    .   ..          ..     ..          ..
+       =           =             - =     -      =    -   =            -     -=          =-
 1)))1Z1ZOOOOOOAXOOZOOOOOOOOOOOOOOOMOOOOOOOOXMAAOOOOOOOOXMMOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        +++++-  ++ X+++++++++++++X ++++++X-    -X++++X-   ++++----++X+= -----+X+++==++++++--======---=+++==--+
+         '''    '' '''''''''''' '' '''''''      ''''''    ''''    ''''       '''''   ''''
+           .       ....... ....  . .......      ......    ...      ...       ....    ....
+                   -             H  =    H      H    H     =        -        =-==    ====
+                                 C       C      C    C
 11)1Z111ZZXMOOOOOMZMOOOOMOOMOOOOOOMOOOOOOMMAAXXMOOOOOOXXAAMMOOOOOOOOOMMMOOOMMOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOO
+            -=+++   ---= -- +---=- --====       --=+==      =++++++++   ---  -=++++X+++= ---====-====+++++=+++
+              '''                                             '''''             '''''''              '
+              ...                                             ....              .......
+                =                                              ===              ===-==
 )Z11Z11)1111)1Z1)1Z11Z1X1XAOOOOMAXAAAXAXXAXAXAMMXMMMMXAAMAAXXXAAXXZAAAMMOMMMMOMOMOOOOOOMMMOOOOOOOOOOOOOOOOOOOO
+                           -=++                                         -    - - ------   --=-====--=+==-+=+++
+                             '
 111Z1Z111Z1ZZ1ZZZ1Z1ZXZMOOOOOMOOOOOMAAXMAMM11XMMOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMMMMOMMOOMOMOOOOOOOOOOOOOOOOOOOOO
+                        -+++= -+++=             -==+++++-=--======-====+++  -    -  -- - ------==--===+===++=+
+                         '''   '''                 '''''                '                                    '
+                         ...    ..                 .....
+                          ==     =                  ===
 ZZ111Z1)1Z1Z11ZZZ1111ZMOOMZXX1MXZMOOOAAAMMXMXAOOOOMAAOOOOOMMOOOMOOOOOOMOOOOOOOOMMOOOOOOMOOOOOOOOOOOOOOOOOOOOOO
+                       ++         +++         ++++   --+++  -=- ------ -++-----  ------ ---=-===-=+-=-+===++++
+                       ''          ''          '''     '''               '                                   '
+                       ..          ..            .     ...               .
+                                   =                   = =
 Z1111ZZ1ZZ)11ZZZXX)11AOOXAZZXZMXAAXOOOMMMMAMMOOOOOAAAMOOOOXMOOMOMMMMMMMMOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOO
+                      X=           -++       ++=--    -+++  -- -        -+--------------  ---==============+=+
+                      '             ''       ''        '''               '
+                      .             .        .         ...               .
+                      -             =        =         =                 =
 1111ZZZX1)11Z111XX)11OOZAMAAAOAZZZMZMOMAMMOOOOMMOOMMMMMOOOXMMMMMMOMOMMMOOOOOOOOMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                     +-      -       +    --X-  --     +++       - -   --+=----  - -------=-=========+==+=++++
+                     '               '      '          '''               '
+                     .               .      .          ...               .
+                     =               =      -                            =
 1111ZZ1ZZZ1ZZZZ)XXZ1MOMAXOOOOOOOOMOMAOOMMMOOOOMOOOOOOOOOOOOOOOOMOMMOOOOOOOOOOOOOOOOOMOOOMOOOOOOOOOOOOOOOOOOOOO
+                     +   --++++++ -  =+   +X=- ---===++++++++++ -  =+=++++---------- --- =====--+++=+=-++=+===
+                     '     '''''      '    '         ''' '             '''                                '
+                     .     .....      .    .         ... .              ..
+                            ====           -           =                 =
 )))+)))11)11111)1Z1)OOZXXMOOMMXOOOOOZXOOMMOMOAXAOOOOOOOMMOOOOOOMMMXOOOOOOOMOMOOMOMMOMOOOOOMOOOOOOOOOOOOOOOOOOO
+                    +-    ++   -++--  +-  + -   ++++---  +++++X    ++++++= - -- -  - ----- -=--===-=-=+==+++=+
+                    '     '     '     '   '     ''''      '''''    ''''''
+                    .     .     .     .   .      ...      .....    ......
+                          =     =     =   =                   H     =
+                                                              C
 ++))=+11)+1)ZZ11ZZ11OOZ1XMOZXAZ1OOMMZZOOXOOAZMAOOOMMAMMZA1MAAXOXMZZOOOMAMAOMMMOOMOOMMOMMOMOMOOOOOOOOOOOOOOOOOO
+                    +-    +     =+    +- +-    ++-            +    +=-    -   -- --  -  - - ----==-------++===
+                    '     '      '    '  '     ''             '    '
+                    .     .      .    .  .     ..             .    .
+                    =     =      =    =  =      =             =
 )++)111XZ1Z1ZXA1Z111OMZXZOOA1AM1MOMMX1OMZOAZ1ZOOOXZZZZXXZ1XAZXOOMMZOOMOOOXOOMMMMOMOMOOMOOOOOOOMOOOMOOOOMOOOOOO
+                    +    -+      +    +  +    ++-             +-   += --- --    - - -- ------- --- =--- =++=-+
+                    '     '      '    '  '    ''              '    '                                      '
+                    .     .      .    .  .     .              .    .
+                    =            =    =        =              =
 +)+ZZZ)1Z11ZZXZ)ZZZZOMXZXOOAAAAZOOOMZZOMOOMMXMOOXMMXMMAMMZAAAAOMMAAOOOMAMAMOOOMOMMMOOOOOOMMOOOOOOOOOOOOOOOOOOO
+                    +    -+     -+-   + +=    +-              X    +=-     --- -   -----=  ------==+--===++==+
+                    '     '      '    ' '     '               '    '                                      '
+                    .     .      .    . .     .               .    .
+                    =     =           =       =               -    =
 )))1Z1111111ZZ1ZZZZXOMXZXMOMMAMAOOMM1ZOOOOMAAOOAZZXXZXZAZXZXXZOZ11XOOMXMMMOMOMOOMMMMOMOOMOMMMMOOOOOOOOOOOOOOOO
+                    +     +     ++    +-X-   ++               +    +-     - - --    - -- -    ---=----==-=++=+
+                    '     '      '    ' '     '               '    '
+                    .     .      .    . .     .               .    .
+                    =     =      =    = -                     =
 ))1))X111111Z1ZX1ZXZOMXXXOOOOOOOOOMAZAOMOAAMMOOXA1ZX1Z1ZZAXAAXOAXAMOOOMMMMMMMMMMMOOOOMOMMOMOMOOOOOOOOOOOOOOOOO
+                    +    -X++++++-    X X    +=               +    +--           ---- -  - - ----=-===-=-==+++
+                    '     '' '' '     ' '    '                '    '
+                    .     ..          . .    .                .    .
+                    =     H           - -    =                =
+                          C
 )1)))1111)Z1Z1XZZ111OAXXAMOMAZXZAZXA1ZOMOMZMAOOMMXXAMZMAXAXXAAOMAMAOMXXZMMMMMMMOOMMMMMMAOMMOAMOOOOOOOOOOOOOOOO
+                    +     X           X X    ++               +    +           --       -  -  -=--=--=----====
+                    '     '           ' '    '                '    '
+                    .     .           . .    .                .    .
+                    =     H           - -    =                =    =
+                          C
 )))+11))1Z1Z1ZX111XZOAZZXOOOXZ1AZXZXX1OMOOAMMOOOAXAAAAAMAAAAAMOMAAAOMAAMOMMMAMOMOMOOOOMOMOOOOOOOOOOOOOOOOOOOOO
+                    +    -X-          + X-   =+-              +    +    -     - - ---- - -----====-===--====++
+                    '     '           ' '     '               '    '
+                    .     .           . .     .               .    .
+                    =     H           = -                     =    =
+                          B
 )Z))1)1111ZZZXZZ1ZZXOAAZXOOOOOOMAZZX1XOMOOZAAAOOXXXZXAXAMAXXZMOZXXZOAXZAAMMMAMOOMMOOMOMOOMOOOOMOOOOOOOOOOMOOOO
+                    X    -X=---       + ++    +=              +    +          --  -- - -- -=-- ---==-==== -+=+
+                    '     '           ' '     '               '    '
+                    .     .           . .     .               .    .
+                    -     H           =       =               =    =
+                          B
 1111Z)1111111XZ111Z1OMXX1OOOOOOOOOZZZ1OMMOMAAAMOOZAZXXAXAAXXAMOMMMAOMMAAMMMMOMMOXMOMOMMMMOOOOOOOOOOOOOOOOOOOOO
+                    X    -X+++++++    +  +     +=             +    +        -  -  - -    ----===--====-=--====
+                    '     ''''''''    '  '     '              '    '
+                    .     ........    .  .     .              .    .
+                    -     -           =  =     =              =    =
 +)=)))+11Z111Z1Z11)1OAXZ1OOAMXAXOOZXZ1OAZOOZXZZZOOZXXXXXXXXZZMOMAAAOMMMXMOAAMMMZMXMMMOMOMOOOOOOOOOOOOOOOOOOOOO
+                    +    -+     ++    +  +=     ++            X    +     -           - - -----=========--=====
+                    '     '      '    '  '      ''            '    '
+                    .     .      .    .  .      .             .    .
+                    =                 =  =      =             -    =
 )11)1))11ZZ1)ZZ11ZZAOXXZZOOZXXMXOOMAXZOMXAOOAZZZZOOOOOOOXXZAAMOMMMXOOMMAOMXXMOOMMXMMMOOMOOOMOOOOOOOOOOOOOOOOOO
+                    X    -+     =+    X   X=     ++===--      X    +=   -    --      -= --- --=---=-==-----=++
+                    '     '      '    '   '      ''           '    '
+                    .     .      .    .   .       .           .    .
+                    -     =           -   -       =           -    =
 )1))+)))111)1ZZ111ZZOMMXXOO1AAAXOOMAXZOMXAOOOXXZXXZMOOOOAXZXMAOMAA1OOMMXMMAXMMMMMMOMMOOOMOOOOOOOOOOOOOOOOOOOOO
+                    X    -+     =+    X   -++       +++X      X    +-             -  --- ----====-=-=====--==+
+                    '     '      '    '    '         '''      '    '
+                    .     .      .    .    .         ...      .    .
+                    -     =           -    =           -      -    =
 ))=)))+)1111Z1111Z11OOXZZAOAAMMAOOMAZ1OOZZXOOOAOZZZZZAAOMXZZAOOMAXZOOMMMMMMAMOMMMOMMOMMMOMOOOOOOOOOOOOOOOOOOOO
+                    X-    +     -+    X-   -++ -       X     -X    +-        -   -  -   - ----===-+====--=====
+                    '     '      '    '     ''         '      '    '
+                    .     .      .    .     ..         .      .    .
+                    -     =           -     =          -      -
 +))1)))+)1X+)1)11111OM1ZZXOAXZAMOOXX1)OAZ1ZZZOOO1ZZZXZZOMAXZAMOOMMZOOAZXMAMMAMMMMMOOMOMOMOOOOMOOMOOOOOOOOMOOOO
+                    +     X     -+    +      +X=       +      X-   +-             -- - - ---- -- -======- =-=-
+                    '     '      '    '      ''        '      '    '
+                    .     .      .    .       .        .      .    .
+                    =     -      =    =       H        =      -    =
+                                              C
 +))1)+)11Z11)111ZZXZOOMOMOOAXXXXOOOOOOOOZ11XZZAOOOOOOMOOMZ1ZZAOOOOOOOAXMAMMAMOOMMOMOMOMMMMOOOOOMOOOOOOOOOOOOOO
+                    ++ - ++     -+==--X-       +++=-- -X      X=-+-+=        --  - - -    ----- -==--=====++=+
+                    '     '      '    '        '''     '      '    '
+                    .     .      .    .        ..      .      .    .
+                    =     =      =    -         =      -      -    =
 +)))+)+)))++)))+1111OOOOOOOZZZXXAOOOOOOMX111Z11ZZOOOOOOOMA1ZXXOOOOOOOMMAMMMMXMAAAMMMOMMOMOOMOOOMOOOOOOOOOOOOOO
+                    -++++++      ++++++          -++++++      ++++++-               -  - -- --- -----==--=====
+                      ''''       ''''''           ''''''      ''''''
+                         .        ... .            ..  .       .....
+                                                                   =
 ++++11))))=+)))+1111111Z1ZZZ1ZZZXZXZZ1MMMAZ1111ZZ1ZXZZXZZZZXXZZ1XZXMXMAMAAAMXAAAMMXAMMMMOMMOMOOOOOOOOOOOOOOOOO
+                                                                                        -  - ----------=-=--==
 )+))1)+)))=))-+))111111Z1ZZZXAXXXXXZXXXXMZ)11ZZ1ZZZAZX1Z1XAXX1ZAAZXMMAAAMAMMMAXZXAAMMAMMOMMOOOOOMOOOOOOOOOOOOO
+                                                                                        -  ----- ----=--===+==
 ++=+)+)+))))1)11+11+111ZZZ11XZZ11XXXZXXXZZZ1Z1A1Z1XX1ZZZ1ZZ1ZZZXMAMXZAAAMXMAMAAMMMAMOMMMOMOMOOOOOOOOOOOOOOOOOO
+                                                                                    -   - - =------=-==--==-==
 )++)+))1))+)11)1+)))ZZ11ZZ11ZZXZ1ZZXXZXXZXZXZZAZZZAXXZXAXZAAXAMAMMXXAAAMMMMAMMAAOMMMOMMOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                -   -  -==-----========++==-=+
 )+=)++==++=+))1+))1)11)1Z1X1ZXXZZXZXXX1Z1XZZXZX1Z11ZZZAXXXMAMMAMXMOAMMMOMMMMMMAMMXOMMMOOOMOMMOOOOOOOOOOOOOOOOO
+                                                                  -    -          -   --- -  --==+=-===-=-=-==
 )+=+++))1)))11))Z1Z)111111)11ZZZ1ZXZXZ11111ZZZZ1111ZZZXXAXXXA1MMAAMMMMMAAZXXOAMOMOMXMMOMOMOMOOOOOOOOOOOOOOOOOO
+                                                                            -  - -    - - - -=====-=+++++=+===
 ++==++)1)1+)+))))Z11ZZ11ZX1ZZ1Z11ZZZ111AX11Z111X1ZZZZAXMXXXXZMAAMMAMMMOOMMMMMMMOOOMOOOMOOMOOOOOOOOOOOOOOOOOOOO
+                                                                      --       --- --- -- --------==-==+-=+===
 ))==+)+))1)1)1111Z11)Z11111Z11ZZZZZ11)1Z111Z11ZXX1ZXXXXMMAXAAMMMAAMAMMAMMMMOMOOOOOMMMOMOOOOOOOMOOOOOOMOOOOOOOO
+                                                                           - -----   - ------- ----=- ====+==+
 ))1))))1))))))1+))11)=+)+)11+Z111)11Z))1))1))1Z1Z11ZZXZXXAXAMAMZAMMMMMMMOMOMMMOOOMOMOOMMOMOMOOMOOOOOOOOOOOOOOO
+                                                                        - -   --- - --  - - -- ==-===--===-==+
 AMAAAMMXZZ111ZZ11ZZAZ+)1)+111)1)1111Z11X111))Z11AAAXZMOMMMMOOMOOMOOMOMOMMMOOMOOOMMOOOOOOMOOOOMMOOOOOOOOOOOOOOO
+                                                      -    -- -- -- - -   -- ---  ------ ----  -====+=======++
+                                                                                                            '
 OOOOOOOOO))++=+AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOO
+XXXX++++-       ++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++=+=+++=--=------ ----+==-=++=+++++++
+''''''''        ''''''''''''''' '   '  ''''''''''''''''''''''''''    '''                                  ' '
+........         .............          ........................
+-HH-  =          == == =                     =  =   ==
+ CC
 OOOOOOOO)=-==-+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX+++X+       -+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++=--=-----==+====++==
+'''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......         ..........................................................................
+=--= =-         ======= =   = =  == =====--HHHHHHHHHHHHHHHHHHHHHHHHHHHH--==============
+                                           CCCBBCCCCBBBCCCCBBCCCCCCCCCC
 OOOOOOOO+==-=)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+++-       +++X+XX++X+++X++X++XX++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++-=====+=++++++++
+'''''''        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......        .............................................................................
+----= =         ==-=--==-===-==-==--==-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHH==
+                                          CBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBB  BBBBBBBBBBBBBC
+                                               VV VVVV  VVVVV VVVVVVVVVVV    V  VV VVVVV
+                                                  A      A      AAA A        A     AAAA
 OOOOOOOOA1))AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX++X+=     +++++XX++X+X+XXXXXXXX+X++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++==++++=++++=++++
+'''''''      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......      ................................................................................
+ -- =-=        ===--==-=-=--------=-==-==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+                                           BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                               VVVVVVVVVVVVVVVVVVVVVVVVVVV  VVVV VVVVVVVVV
+                                                 A      AAAA    AA AAAA      A    AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++XX++X+XX+XX+++X++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++=++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '    ' '   ' ''
+........  . .................................................................................
+ =   =      ===   =======--==-=--=--===-====HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+                                            CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBC
+                                                VVVVVVVVVVVVV   VVVVVVVVVVV VVV   VVVVVVVVV
+                                                       AA A      AA   A       A    A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++X++++++XX++++++++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
+..............................................................................................   .
+   =   = = ==== = = ========-======--==== ===-HH-=H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+                                              BC  C CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                      VVVVVVV   VVVVV        VVVVVVVVVVVVVVV
+                                                                AA             A   A   A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++++++X++++++XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''
+  ............................................................................................ .    .
+         ====== ======= ======  =====-======--HHH=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-
+                                              CBB CBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                      VVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVV
+                                                       A AA     A              A AAA      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++X++++++++++++++X++++++XXXXX+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '' ''
+.............................................................................................  .. ....
+===== = = ============-==============-======---HH=--=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+                                               BB     BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                       VVVVV   VVVV VVV  V    VVVVVVVVVVVVVV
+                                                          AA                    AA A    A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++XX+++++++++++++X++++X++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''
+................................................................................................ .      .   ..
+ ====  ==== ======--=============-====-======--HHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+                                               CBBC   CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                 V        VVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVV
+                                                          AA          AAA A  AA AAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++X+XXXXX++++XX+++++X+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''   ''
+.................................................................................................. ... .    .
+======   = =========-=-----====--=====-===-=---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-   =
+                                               CCBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                          VV VVV VVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                               A  A        AAAA AAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++XX+XX+++++++XX+X+XX++X++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''
+.................................................................................................... . .    .
+=======    ==========--=--=======--=-=--==-==-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=    =
+                                                 BBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBB
+                                                    V        VVVV V VVVVVVVVVVVVVVVVVVVVVVVV
+                                                             A             AAAA  A  AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++X++XX++X++X++++X++++++X+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................................ ....
+==== == = ===-==--==-==-====-======-======== ====--HHHHH-HHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHH=     =
+                                                   BBBBC BBBBBBBBBB  BBBBBBBBBBBBBBBBBBBBBBB
+                                                             VVVV V    VVVVVVVVVVVV VVVVVVVV
+                                                                                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++X+X++XX+XXX+XXXX++++XX+++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
+.........................................................................................................
+  ==== = = ==-=-==--=---=----====--=============-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=  =
+                                                   CBBBBCCBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBB
+                                                      VV   V VVVVVVVV   VVVVVVVVVVVVVVVVVVV
+                                                              A          AAAAAA AAA A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++X+++++++X++XXXXXX+X+XXXXXXX+++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''
+...................................... . . . .... ................................................     .   .
+=== =-=  ====-==------=-=-------==  =               ===-HH-HHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHH=
+                                                        CC CBBBBBBBBBBC BBBBBBBBBBBBBBBBBBBB
+                                                             VV  VVVV     VVVVVVVVVVVVVVVVVV
+                                                                  A         AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++X+++++X++++++++++++++++=+++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++
+''''''''''''''''''''''''''''''''''         ' ''' '  ' ' ''''''''''''''''''''''''''''''''''''''''''''''''    '
+.................................                       ........................................... .
+== === ========-=====-=======                               -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-
+                                                             BBBBBBBBBBBBBBCBBBBBCBBBBBBBBBB
+                                                              VVVVVVV   V    VVV    VVVVV V
+                                                                  A          AA     A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++++=++==++++++++++++++++==+=+=+==++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++=++
+''''''''''''''''''''''''''''          ' '  '''''              ''''''''''''''''''''''''''''''''''''''''''''' '
+............................            .                     ...................................  .      .
+ ==        = ==== == ==  =                                     =HHHHHHHHHHHHH---H--HHHHHHHH-= =
+                                                                CBBBBBBBBBBBC   C  BBBBBBBB
+                                                                      V  VV          VVV
+                                                                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X+++++++X+X++X+XXX++X+++++++++++++++++++++++++++++++++++++++=+++++XXXXXXXXXXXX+XXXXXXXXXXXX++++++++++++++++=+
+''''''''''''''''''''''''''''''''''''''''''' ''''''  '    '      ''''''''''''''''''''''''''''''''''''' ''' ''
+......................... ..       .....        ..               ...................................
+=-= =====-=-==-=---==-===                                        ==HHHHHHHHHHHH=HHHHHHHHHHHH=
+                                                                   CBBBBBBBBBBB CBBBBBBBBBCC
+                                                                      V VVVVVV    VVVVVV
+                                                                          A A     A  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++++++++++X+X++X+XX++++++++++++++++++++++++++++++=++=+=++++=+===++++XXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''' '' '' '                    '''''''''''''''''''''''''''''''''''    '
+........................        .  .                                .......................... ...   .
+H-=====   ==-=-==-=--==                                               -HHHHHHHHHHHHHHHHHHHHH=
+C                                                                      CBBBBBBBBBBBBBBBBBBCB
+                                                                        VVVVVVVV V VV VVV
+                                                                           A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+X+++++++++++++X++++++++++++++++++++++++++++++++++++++++++=+=++===+XXXXXXXXXXXXXXXXXXXXX++++++++++++++++++
+''''''''''''''''''''''' '  '  ' '' '' '''''' ''''''          '        ''''''''''''''''''''''''''''''''''''' '
+......................                         .                      .................................
+H---=-= ===========-=                                                  -HHHHHHHHHHHHHHHHHHHH==  =  =
+C                                                                       BBBBBBBBBBBBBBBBBBBB
+                                                                         VVVVVVVVVVVVVVV V V
+                                                                              A       AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+XXX++++++++X+++X+++++++++++++++++++++++++++++++++++++=++++++++++++++++XXXXXXXXXXXXXXXXXXX+++++++++++++++=++
+''''''''''''''''''''''' ''''''''''' '''''''''''' ''   '     ''          ''''''''''''''''''''''''''''''  ' '  '
+....................         .. . .          .                          ...................... ... ...
+-H=---=== ====-===-=                                                     -HHHHHHHHHHHHHHHHHH=
+ C                                                                        BBBBBBBBBBBBBBBBBB
+                                                                           VVVVVVVVVVVVVVV V
+                                                                             A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+++++++++++++++++=====+=++++++=++=+==-++==++++===-+++++++++++++++=+++++++XXXXXXXXXXXXXXXX++++++++++++++++++
+'''''''''''''''''''         '                          '''' ''' ''   ' '' '''''''''''''''''''''''''''''''''
+...................                                                       ............................
+-H-== ====== ==  =                                                         =HHHHHHHHHHHHHHHH=  =
+ C                                                                          BBBBBBBBBBBBBBBB
+                                                                             V  VVV VVV VV V
+                                                                                     AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+++++++++++XX++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXX++++++++++++++++++
+''''''''''''''''''''''  '' '''' ''''''' '' '''''' ' '' ' '      ' '' ''    ''''''''''''''''''''''''''' ' '
+..................               .   .       .                              ......................
+-H-===== =====--=                                                            -HHHHHHHHHHHHHH=   =
+ C                                                                            BBBBBBBBBBBBBB
+                                                                                VV  VVVVVVV
+                                                                                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXX+++++++XXX++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXX++++++++++==++====
+''''''''''''''''''''' ''''  '''''''''''''''''''' ''' ''' ''''''   ' ''  ''' ''''''''''''''''''''''      '
+.................       .   .            .    .   .                           .................  .
+-=---=======---=                                                              =HHHHHHHHHHHHH
+                                                                               BBBBBBBBBBCBC
+                                                                                     VVV
+                                                                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++XXXXXXXXXXXXX+++++++==-==-===+=
+''''''''''''''''' ' '''   '' ''     ' ' ''    ''''''  ' '   '''  ' '  '' ''    ''''''''''''''''''''
+.................                                                              ...............
+--===========-==                                                               -HHHHHHHHHHHH
+                                                                                CCBBBBBBBBCC
+                                                                                  V  V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++++X+X++++XXX+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXX++++++++++++++++=+
+'''''''''''''''''''' ''' '' ''''''''''''''''' '''''''''' ''''''''''''''''  '''''''''''''''''''''''''' '   '' '
+...................  .      ..   ..  . ....   .   .           .     ... .      .....................
+--====-=-= ==---==                                                               HHHHHHHHHHH
+                                                                                 CCCBBBBBBBC
+                                                                                     VVVVVV
+                                                                                     AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++=+++++++++++++++++=+++++++++++=+++++++++++++++++++++++XXXXXXXXXXX++++++++++++++++++
+''''''''''''''''''''''  ''   '' ''''' '   '   '   ' '' '     ' '   '''''  '''''''''''''''''''''''''''' '  ' ''
+....................             ...                                       .    ..................
+================== =                                                             HHHHHHHHHHH=  =
+                                                                                 CBCBBBBBBBC
+                                                                                  V  VVVVVV
+                                                                                       AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX++XX+++X++++XXXXX+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXX++++++++++++++++++
+''''''''''''''''''''''  '' ''' ''''' '''    ''''' ''''' '''  '''''' ''' '  '''  '''''''''''''''''''''''  ' ' '
+.....................          .     .            ..           ...  ..           .................. . .
+=--==--===-====-----                                                             -HHHHHHHHH- =
+                                                                                  BBBBBBBBB
+                                                                                  VVV VVVV
+                                                                                  A A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++X++XX++++++XXXXX++++++++=+++++++++++++=+++++++++++++++++++++++++++++++++++++++XXXXXXXXX+++++++++++++++++++
+'''''''''''''''''''''''       ''  '    ''     '  '''''''''''''''''''''''' ''''' '''''''''''''''''''' '' '''  '
+......................                                . .   . ..      .          ............. ...
+--==-==--======-----=                                                             HHHHHHHHH=
+                                                                                  BBBBBBBBB
+                                                                                  VVVV VVV
+                                                                                   AA  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+XX+X+++++++++X+X+XX++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXX++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''' '''''''''''''''''' ''' '  ' '
+........................     .  ... .. .... ... .... ...  ....  . .....     .    ...............
+--=--=-=== =====-=-=--==                                   =                      HHHHHHHHH-==
+                                                                                  BBBBBBBBB
+                                                                                   VVVVVVVV
+                                                                                   AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXX+X+X++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXX++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '' '''''''''''''''''''''''    '
+.........................   ...................  .    ..  . . . .... ..    .      ................           .
+-=----=-=-=== ========-==        =           =                                    -HHHHHHHHH
+                                                                                   BBBBBBBBC
+                                                                                   VVVVVVVV
+                                                                                   AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXX+X++++++++++++++XXX++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXXX++++++++++++++++++
+''''''''''''''''''''''''''  '''  ' '  ''' ''''''''''''''''''''''''''''''''''  '   '''''''''''''''''''' ''  '''
+..........................                  ........  ... ..      ....            ................           .
+-=----=-==============---=                                                        =HHHHHHHH-=
+                                                                                   BBBBBBBB
+                                                                                    VVVVVVV
+                                                                                      AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+X++++++++++++++++++XXXX++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXX+++++++++++==++==++
+''''''''''''''''''''''''''''''' '  ''''''''''''''''''''''''''''' '''''''''''''''  '''''''''''''''''''   '   ''
+........................... .       ...  .   ..........            .           .   ........... ....
+-=-============= ====----=                   ==                                    HHHHHHHH===
+                                                                                   CBBBBBBB
+                                                                                     V VVVV
+                                                                                        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++++++++++++++++++++++XXX+++++++++++++++++++++++++++X+++++++++++++++++++++++++++++XXXXXXXXX++++++++++++++++++
+''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................... .. ..     ............................. ........ .     ................
+-============= =  =====---=             =============-  =                          -HHHHHHHH=  ==
+                                                                                    BBBBBBBC
+                                                                                    VVVVVVV
+                                                                                        AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++X+++++++++++++XXXX++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXX++++++++++++++++++
+'''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''' '' '''''''''''' '''  ''''''''''''''''''' '''' ''
+...........................     .    .......................      . ...... .       .................         .
+========-==== ========----=            = = =  =  =   ====                          =HHHHHHH-= = ==
+                                                                                    BBBBBBB
+                                                                                     VVVVVV
+                                                                                      A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++X+++XX+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXX+++++++++++=++++++
+'''''''''''''''''''''''''''''' ' '''''''''''''''''''''''''''' ''  '''''''' '' ' '  ''''''''''''''''      '' '
+............................       ..........................            . .       ...............
+     =  = ===  ====-===--==         == =  == =  = =  = = ===                       =HHHHHHH-   =
+                                                                                    CBBBBBB
+                                                                                     VVVVVV
+                                                                                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++---==-=+++++++++++++++++++++++++++++++++++++++++++=+====+XXXXXX++++++++++++=++++=+
+''''''''''''' ''''''''''''''       '''''''' ''''''''''''''''''''  '''' ' ''         '''''''''''''''''''  '
+............    ...........        ....   .   .. .............                      ..............
+      =  ==         = =              =                   ====                        -HHHHH= =
+                                                                                      CCCBB
+                                                                                         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++XXX+XXXX+++++++XXX++++++++++++++++++++++++++++++++++++++++++++++++XXXXXX++++++++++++==+++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '' ' '''''''''''''''''     '  '
+ ............................    ................................ . .       .       ..............
+    == ====  ======---=H--H=      -H-=== === ===  == ===   =====                     -HHHHH= == =
+                       C  C        B                                                  CBBBB
+                                                                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++XXXXX+XXX++++++XXXX++++++++++++++++++++++++XX++++++++++++++++++++++++XXXX++++++++++++=++++++
+'''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      ''
+ ...........................     .................................  .....      . .  ................
+    =    = =======-----=---=     -HH- ==  == =    = =    ====--=                    ===-HHH
+                                  BB                                                    CCC
+                                  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++XXXX+XX+++++++XXX+++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXX++++++++=++++++=++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          '
+  ........................... . .................................  .... . ......... ...............
+        ===========----=--=      HH-=== = = = =   =  = = ========                   =HHHHHH-== =
+                                 CB                                                  BBCBBB
+                                  V                                                   V  VV
+                                  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++XXX+XX+++++++XX++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXX+++++++++++++=+===+
+ '''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''' '''''''''''' ''  ''''''''''''''''
+    ........................    .................................  .   ....  .       ..............
+        ==   =======---=--==    =HH= == ===== ===  = =   =  =====                    HHHHHH====
+                                 BB                                                  CBBBBB
+                                                                                      VVVVV
+                                                                                      AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++XXXXXXXX++++++XXX++++++++++++++++++++++++++++X+++++++++++++++++++++XXXXXX+++++++++++++++++++
+    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''         '
+     .......................  ........................................... .         .............
+         =  = ====--------==    -H-=  ========== == = ==== == =-                     HHHHHH===
+                                 B                                                   CBBBBB
+                                 V                                                    VVVVV
+                                                                                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++X++++++++XXX+++++++++++++++++++++++++++X++++++++++++++++++++++XXXXXX+++++++++++=+++++++
+   ''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''' ''' '''''''''''''''''''        '
+     . .....................   ..................................   ..        .      ............
+          =  = =  =====-===     HHH= ==== ==  =  = ==  ==    =-==                    -HHHHH=
+                                CBC                                                   BBBBB
+                                 V                                                    VVVV
+                                                                                        AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++++++XXX++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXX++++++++++++++=++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''' '''''''''''''''' ''  ''''
+    ........................   ...................................  ...    ...    .  ............
+        = =      ===========   =HHH====== =  = ===== ==== == ===                     -HHHHH = =
+                                BBC                                                   BBBBB
+                                 V                                                     VVV
+                                 A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++X+X++X+++++XXX++++++++++++++++++++++++++++++++++++==+++++++++++++XXXXX+++++++++++++++++++
+ ''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''  '''  '''  '''''''''''''''''''           ''
+  ... .......................  .................................                     ............
+    =  =   =  =======-=-==-    =HHH=  =====  =  = ==== =  = = =                      =HHHHH===
+                                BBB                                                   BBBBB
+                                 VV                                                     VV
+                                 A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++XXXX+++++XXX+++++++++++++++++++++++++++++++++++++++++++++++++++XXXXX++++++++++=++=+++++
+' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''' ''' ''''''  ''''''''''''''        '
+  ...........................  ..................................    . .             ...........
+          = == ========----=    HHH=  == = = = ==   ===  =  ===                       HHHHH====
+                                CBB                                                   BBBBC
+                                 V                                                     VVV
+                                                                                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++X+X+X+++++++XXX++++++++++++++++++++++++++X+++++++++++++++++++++++XXXXX++++++++++=++==++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''' '''''''''''''''''''''''''
+ .. ........................    .................................                ..  ...........
+           ====== ===-=-=-==    =-H-==== = ======= = = = =  ==-=                     =HHHHH==
+                                  C                                                   BBBBC
+                                                                                       VVV
+                                                                                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++XXXX+X++++++++XXXXX+++++++++++++++++++++XX++++++++++++++++++++++++XXXXX+++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''  ' '   ''
+....................................................................  .        .. ................
+        === = ======----=-=       -HH--== ===     = =====  =--=                      =HHHHH===
+                                   CC                                                 BBBBC
+                                                                                       VVV
+                                                                                       AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++X++++++XXXX++++++++XXXXXX+++++++++++++++++++X++++++++++++++++++++++++XXXXXX+++++++++-++=++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''' '     ''  '
+................................................................         ..   . ...............  .
+==       =  =  =-======----        -HH---===  ========  ====-=                       -HHHHH =
+                                    CC                                                BBBBC
+                                                                                      VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++XXX+++++++++++XXX+++++++++++++++++++X+++++++++++++++++++++++++XXXXXX+++++++++++++=+++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' '   ' ''
+  ................................................................ . ..            ..............
+      =  ===  =========---==        =--H===== =  ===== == =-=                        HHHHHH= =
+                                       C                                             CBBBBC
+                                                                                      VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++X+XXXX+++++++++++++XXXX++++++++++++++X+++++++++++++++++++++++++++XXXXXX+++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '     '' '
+.................................................................  ... .. .    .    ............
+    =    =   =  ====-=----=    =     = ----=== =  ====== -===                       =HHHHH-= =
+                                                                                     CBBBB
+                                                                                        VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++XX+XXX++++++++++++++++XXXX++++++++++++++++++++++++++++++++++++++XXXXXXX++++++++++=+==+++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          ''
+.............................   . .  . ......................... ..... ... . .. .   ...........
+    ==== =   = =====--=---             ===-HH-= ==      ====   =                    -HHHHH-=
+                                           CC                                        CBBBB
+                                                                                         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++X+XXXXX++++++++++++++++++XXX+++++++++++++++++++++++++++++++++++++XXXXXX++++++++++=+==++=+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''''' '         ''
+..................................   ..  .................... . .       ...  .     ............
+  =  = =  ==   = ==-=-----                  HH-==    =  ==                          -HHHHH=
+                                            CB                                       CCBBB
+                                             V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++XX+++++++++++++++++++++XXX+++++++++++++++++++++++++++++++++++++XXXXXX++++++++=++==++=++++
+'''''''''''''''''''''''''''''''' ''' ''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''            '''
+............................  .             .............................   .    . ...........
+           ===  = ===--==                   -HH     = ==== =    =  ==              =--HHHH==
+                                             BC                                       CCBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++X++++++++++++++++++++++++XX+++++++++++++++++++++++++++++++++++++XXXXXX++++++-=-------=++=+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '  '''''' ''''''''''''               '
+............................... .....       .............. ...   .                ...........
+=       ==   =======-=====                   HH===  ======                         =---HH-
+                                             BC                                        CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++XX+X+++++++++++++++++++++XX+++++++++X++++++++++++++++++++++++++XXXXXXX+++++++===+-=--=++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''           ''
+............................. .. .....      .................. ........ .....................
+ =  =    = == ======--=-==         =         HH= =     =-=                        =H-HHH--==
+                                             BB                                    C CCC
+                                              V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++X++++++++++++++++++++++XXX++++++++X+++++++++++++++++++++++++XXXXXXXX+++++++=-----===++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''            ''
+..........................   .    ..  ...   ................  ........... .. .  ............
+==   = == === = ======-==                    HH- =  = ==-===                     =----HH-H=
+                                             BB                                       CC C
+                                              V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++X++++++++++++++++++++++XXX++++++++X+++++++++++++++++++++++++XXXXXXXX+++++++====-=+===+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''           '
+.......................... .  .   . ...      ................     ..... ... ..................
+=== ==  === =  =======-==                    HH-= ======-= =                 =   =HHHHHHHH = =
+                                             CB                                   BBBCCCCC
+                                              V
+                                              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++X+X+XX++++++++++++++++++++++XXX++++++++X++++++++++++++++++++++++XXXXXXXXX+++++++=-==-====++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................      . ...... . . ............... .   ...........   ................
+==== = ==========-=-=--=                     HHH= ======-=                       -HHHHHHHH=
+                                             CBC                                  CCCCCCCC
+                                              V
+                                              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++==+++++++++++++++XXX+++++++X+++++++++++++++++++++++++XXXXXXXXX++++++=============+
+''''''''''''''''''''''''   '   '  ''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''
+........................          ... .      .................. ... ........ ................
+====   === = === === ===                     -H-=======-===               =   ===HHHHHHHHH==
+                                              B                                  CBBBCBBCC
+                                              V
+                                              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++XX+XXX+++++=====+++++++++++++++XXX++++++++X+++++++++++++++++++++++XXXXXXXXXX+++++===-====-==-==+
+''''''''''''''''''''''''          ''' ''''''''''''''''''''''''''''''' '''''''''''''''''''''''                '
+........................            .        .............. ...    .          ...............
+=  = ===== ===--=---===                      -H-== = = =-=                     =HHHHHHHHH-=
+                                              B                                 CCBBBCBCB
+                                              V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOO
++++++++++++++++++XX+++++++++++++=+++++++++++++XX+++++++++++++++++++++++++++++++XXXXXXXXXXX++++===---=- -===-=-
+''''''''''''''''''''''''   '       '''''''''''''''''''''''''''''''''''''''' ''''''''''''''''
+........................              ..    ................ ..  ..... .      ..............
+= ===============--====                      =HH= ========                    =---HHHHHHH-=
+                                              BC                                  CCCCBBB
+                                              V
+                                              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++++++++++++++++++++XX++++++++X++++++++++++++++++++++XXXXXXXXXXX++++===---=--=--====
+'''''''''''''''''''''''''''  '    ''' '' ' ' ''''''''''''''''''''''''''''''''''''''''''''''''
+.......................                  .   ................ ..... ..  .... ...............
+=== ==================                       =HH= =  ===-==                   =--HHHHHHHH-
+                                              BC                                 CCCCCCCC
+                                              V
+                                              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOO
+++++++++++++++++++++++++++++++++++++++++++++++XX++++++++++++++++++++++++++++++XXXXXXXXXXX++++===--  --------==
+'''''''''''''''''''''''            '      '' '''''''''''''' '' ''''''''  '''''''''''''''''''
+......................                       ..............        .     . .................
+====== ====== ========                        HH       ===                   =-------HHHH===
+                                              BC                                     CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOMOOMOOOO
+++++++++++++++++++++++++======-=-=+=+==++=++++XX+++++++++++++++++++++++++++++XXXXXXXXXXXXX++++- = ---- -- ---=
+''''''''''''''''''''''''                  ' ''''''''''''''' ''' '''''   '''''''''''''''''''''
+......................                       .............  ...  .         .................
+========= ====== ====                        =HH=    = ===                 ==-------------
+                                              BB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOO
+++++++++++++++++++++++====+==+++=+==+=++++++++XX+++++++++++++++++++++++++++++X+XXXXXXXXXXX++++=--- -----=--=-=
+''''''''''''''''''''''                ''     ''''''''''''''''''''''''''''''''''''''''''''''''
+.....................                        ..............        ..    ...................
+= ==== ===== ==== ==                          HH   =======                 ==-=----H--HHH-
+                                              BB                                   C  CCC
+                                               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOOMMOOOOOOO
+++++++++++++++++++++++++++++=+++++++++++++++++XX++++++++++++++++++++++++++++X+XXX+XXXXXXX+++++--   --  -=--=-=
+'''''''''''''''''''''' '       '   '    '  '''''''''''''''''''' ''''''' ''''''''''''''''''''
+.....................                         .............      .  ... ....................
+=== ======= ========                          HH====  ====               ===-=---=-----HH==
+                                              CB                                       CC
+                                               V
+                                               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOO
++++++++++++++X+++++++++++++++++=++++++++++++==XX++++++++++++++++++++++++++XXXX+XXXX+XXXXXX++++==-  -----=-==+=
+''''''''''''''''''''''       '   ''  '   '    '''''''''''''''''' '''''''''''''''''''''''''''
+.....................                         ............... .. .  ........................
+=============-======                          -H===  =====              ==----=----=---HH-=
+                                               B                                       CB
+                                               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMOOOOOOO
+++++++++++++++++XX+++++++++++++++++++++++=+++++XX+++++++++++++++++++++++XX+XXXXXXX+XXXXXXX++++-=--- -- -=-===+
+'''''''''''''''''''' '' ' '''  ''  ' ' '   '' '''''''''''''''' ' '''''''''''''''''''''''''''
+....................                          ............          ........................
+======= ========--=                           =H- === ====            ==--=-------=-H-HHHH
+                                               B                                    C BBBC
+                                               V                                       VV
+                                               A                                        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOMMMMOOOOOOO
+++++++++++++++++++++++++=====+=+=+=+++=+=++++++X+++++++++++++++++++++XX+XXXXXX+XXXXXXXXXXX+++= = --    -=-=+==
+''''''''''''''''''''                          '''''''''''''''''''''''''''''''''''''''''''''
+...................                           .............. .     ........................
+== ==  = == ======                            =H= = ====== =       ==--=------=----HHHHHHH=
+                                               B                                   CBBBBBC
+                                                                                    VVVVV
+                                                                                     AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMOOMMMOOO
+++++++++++++++++++++++++++++++++++=+++++=++=+++XX+++++++++++++++++++XXXXXXXX+XXXXXXXXXXXXX+++=---- -- --   ==+
+'''''''''''''''''''' ' ' '''''' '     ''      ''''''''''''''''''''''''''''''''''''''''''''''
+...................                           .............. ...............................
+======== =========                            =H- = = =====       ==-HH-----=----HHHHHHHH-=
+                                               B                     CC          CCBBBBBB
+                                               V                                   VVVVVV
+                                                                                     AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOO
++++++++++X++++X+X+++++++++++++++++++++++++++=++XX+++++++X++++++++++XXXXXX+++XX+XXXXXXXXXX+++=+----------- - ==
+'''''''''''''''''''' ' ' '''' ''  ''  ''  '   ''''''''''''''''''''''''''''''''''''''''''''''
+...................       .                   .............................................
+=========-====-=-=                            =HH= = ===-== =  ====--HH--===--=--HHHHHHHH=
+                                               BC                    CC          BBBBBBBB
+                                               V                                  VVVVVV
+                                                                                  A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOO
+++++++++++++++XX+++++++++==++==++++++++++++++=+XX+++++++XX+++++XXX++XXX+XXXXXX+XXXXXXXXX+++++===-----  ++=-==+
+'''''''''''''''''''               '' ''' '''' ''''''''''''''''''''''''''''''''''''''''''''''
+..................                            .............................................
+==============--=                              HH  == = --=====---==---=------=HHHHHHHHH==
+                                               BB                              CBBBBBBBB
+                                                                                 VVVVVVV
+                                                                                  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+++++++++++XXX+++++++++++++++++++++++++++++++XX+++++++XXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXX+++++=-=---=---=++-==+
+'''''''''''''''''''' ''' ''''''''' '' ' ''''''''''''''''''''''''''''''''''''''''''''''''' '''
+..................     .   .    ..        ............................................... ..
+--== === ====---=                          =  =HH=======-H-H----HH---HHH-H=---HHHHHHHHHH
+                                               BB        C C    CC   CBC C    CBBBBBBBBB
+                                               V                               VVVVVVVV
+                                               A                                AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOMOOO
+XXX+++++++++X++++++++++++++++++++++++++++++XXXXXX+++++++XXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXX++++++--- - --=-=- -+=
+''''''''''''''''''''   ''' '' ' ' ' ' ''' ''''''''''''''''''''''''''''''''''''''''''''''  ''
+.................               .         ..............................................  .
+---=== =====-====                         =--HHHH==  =  --H--H---H-----H-H--=-HHHHHHHHH-
+                                             CBBB         C  C   C     C C    BBBBBBBBB
+                                               VV                              VVVVVVVV
+                                               A                                AAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOO
++X++++X+++++++X+++++++++++++++++++++=+++++++XXXXX+++++++XXXXXX+XXXXXXXX++++++XXXXXXXXXX+-+++=====---=-==-- =+=
+''''''''''''''''' '' ''  '' ''''' '  '  ' ''''''''''''''''''''''''''''''''''''''''''''''  ''
+.................                         ..............................................  .
+=-====-=======-                             --HHH=  ==  -H-H-H=--------====  HHHHHHHHHH=
+                                              CBB        C C C               BBBBBBBBBB
+                                               VV                             VVVVVVVVV
+                                                A                              AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOMMOMOMOMMMMOOMOO
++++++++++++++++++=++===+++++=++++++++++++++++XXXX+++++++++X++++XX+X++++++++=+XXXXXXXXXX+ ++++=  - - -    -- --
+''''''''''''''''       ' '    ''''''''' '  '''''''''''''''''''''''''''''''' ''''''''''''  ''
+................                           ........ ....................... ...........
+==== = ========                             =--HH=      ==-====--=-==== ==  =HHHHHHHHHH
+                                               BB                            BBBBBBBBBB
+                                                V                              VV    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOMOOOOOOOOOOOO
+XX++X++++XX+++++==++=++++++++++++++++++++++++XXXX++++++++X+XXXX+X+X++++++XX++XXXXXXXXXX+ ++++=--- ---------===
+''''''''''''''''       ' ' '' ''   '''    ' ''''''''''''''''''''''''''''''' '''''''''''' ''''
+...............                             ............................... ............
+--==-====--====                             =--HH==     =-=----=-=-======H-  HHHHHHHHHH
+                                               CB                        C   CBBBBBBBBB
+                                                                               VV    VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMMOOMOO
+X+++++++++++++++++==+++=+++++++++++++++++++++XXXX+++++++XXX++XX+X++++XXXXXX++XXXXXXXXXX++++++=------ --  -- ==
+'''''''''''''''''    '   ' ''' ''' ' '' '''''''''''''''''''''''''''''''''''''''''''''''' '''
+.................               .           ............................................
+-====== ====== =                            =-HHH== =  =---==--=-====---HHH==-HHHHHHHHH=
+                                              CCC                       CBB   BBBBBBBBB
+                                                                         V     VVVVVVVV
+                                                                                AAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOO
+XXXX+++++++++++XXX+++++++++++++++++++++=+++++XXXX+++++++XXXXXXXX+++XXXXXXXXXXXXXXXXXXXXX++++=------- --=--=-==
+'''''''''''''''''''   '   ' '   ' ' '''   ''''''''''''''''''''''''''''''''''''''''''''''' '
+..................                          ....... ....................................
+----===========HH-                          =-HH-==    =---HHH--===----HHHHH--HHHHHHHHH-
+               CB                             CC           CCC         CBBBC  CBBBBBBBB
+                                                                         VV     VVVVVVV
+                                                                                 AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMOOMOOOMOO
+XX+X++XX+++X+++XXXX+++++++++++++=++++++++++=+XXXX++++++++XXXXXXXXXXXXXXXXXX++++XXXXXXXXX+++++=--=    -- --- --
+'''''''''''''''''''''    '       '' '   ' ' ''''''''''''''''''''''''''''''''''''''''''''''''
+...................                         ...............................................
+--=-==--===-== -HH-                          ---H==  = ==-HH-HH--------HHHH====-HHHHHHHH=
+                BB                              C         CC CC        BBBC     CBBBBBBC
+                 V                                                                  VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOOOOOOOOOO
+XX+++++++++++++++XXX+++++++++++=++++++=+++++++XXXX+++++++XXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX++++=- --- ----------
+'''''''''''''' ''''''  '' '' '   '' '   ' '' '''''''''''''''''''''''''''''''''''''''''''''''
+..............  ....                         ..............................................
+--============   HH-                         =--H-==  = =-HH-H--H--H--HHHHHH--=-HHHHHHHHH=
+                 BB                             C         CC C  C  C  BBBBBB    CCBBBBBBC
+                                                                       VVVVV       VVVVV
+                                                                        AAA         A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMOOOMOOOOO
++++++++++++X++++++XX+++++++++++++++++++++++++++XXX+++++++XXXXXXXXX+XX+XXXXXXXXXXXXXXXXXX+++++----    --- ----=
+'''''''''''''' ''''''   ' '''     '  '    ''''''''''''''''''''''''''''''''''''''''''''''''''
+..............   ....                        ..............................................
+===========-=    =HH                         ==HH-    = =-H-------=--=HHHHHH----HHHHHHHH=
+                  BB                           CC         C           BBBBBB    CCCBBBBC
+                                                                       VVVVV        V
+                                                                        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOOOOOOOOOO
+XX+XX+++++++++++++XX+=+++++=++++++==+=++++++++XXXX+++++++XXXXXXX+XXXXXXXXXXXXXXXXXXXXXX++++++=- --- -------===
+'''''''''''''''' ''''  ' '  '       '   '''''''''''''''''''''''''''''''''''''''''''''''''''
+............. .  ....                        ..............................................
+--=--========    =HH                          --H-    ===-----H-=-----HHHHHHHH-H-HHHHHH=
+                  CB                            C             C       BBBBBBCC C CCCCBB
+                   V                                                   VVVVV
+                                                                       A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOMOMOOOMMOOOO
+X++++++++++++==+++XX++=++========+++=+++=+=++++XXX+++++++XXXXXX+++XXXXXXXXXXXXXXXXXXXX+- ++++=---- - ---  ---=
+'''''''''''''   '''''                '       ''''''''''''''''''''''''''''''''''''''''''  '''
+.............    ....                        ..........................................   .
+-===== =====     =HH                          =HH-  = ===---H--===---HHHHHHHH---HHHHHH=   =
+                  BB                           CC           C        CBBBBBBB   CCCCCC
+                                                                      VVVVVV
+                                                                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1MOOOOOOOMOMOMMOOOOOOOO
+X+++++++++++++++=+XX++=====- --=-=====++==++++++XX+++++++XXXXXXXX+X+XXXXXXXXXXXXXXXXX+   +++=--- - -  ---=--=+
+''''''''''''''   ''''                        '''''''''''''''''''''''''''''''''''''''''   ''
+.............    ....                        .........................................    .
+-===== = ===     =HH                          ==--=   = =-H------=-=-HHHHHHHHHH--HHH-
+                  BB                                      C          BBBBBBBBBC  CCC
+                                                                      VVVVVVVV
+                                                                      AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO11MOOOOOOOMOMOOMOOOOOOOO
++X++++++++++++++++XX++++===--======-===++++++++XXX+++++++XXXXXXX+XXXXXXXXXXXXXXXXXXX+-   ++++=-- - -- ---=--==
+'''''''''''''''' ''''                       '''''''''''''''''''''''''''''''''''''''''    '''
+.............    ...                          .......................................    ..
+=-====  ===      =H-                           ---=  =  =--H---H=---HHHHHHHHHHHHHHHH=
+                  B                                        C   C    CBBBBBBBBBBCCCCC
+                                                                     VVVVVVVVV
+                                                                      AAA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA++MOOOOOOOOOMOOOOOOOOOOO
+X+XXX++++++++++++XX++=+=+=-===-=+======++++++++XXX+++++++XXXXXXXXXXXXXXXXXXXXXXXXXX++    +++=----- -=-------==
+''''''''''''''''''''                     '  ''''''''''''''''''''''''''''''''''''''''     '''
+............    ....                          ......................................     ...
+-=---=======     -H=                          =--- = = ==-H---------HHHHHHHHHHHHHHH=
+                  B                                       C         CBBBBBBBBBBBBCC
+                                                                     VVVVVVVVV
+                                                                      A  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)--AOOOOOOMMMMMMMMMOOOOOM
++X+X+X+++++++++++X++=+++++=++=+++++=+++++++++++XXX+++++++XXX+XXXX+XXXXXXXXXXXXXXXX++     +++=--         ---==
+'''''''''''''''''''            ''            '''''''''''''''''''''''''''''''''''''''      '
+..............  ...                           .....................................
+=-=-=-=== ==    =H=                            -H- ==== =HH-=H---=--HHHHHHHHHHHHH-=
+                 B                              C        CC  C      BBBBBBBBBBBBC
+                 V                                                   VVVVVVVVVVV
+                                                                      A  AA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+)+MOOOOOOMOOOOOMMOOOOOOO
+XX++++++++++++++XX++=++=+=+++++++===+++=++++++++XX+++++++XXXXXXXXXX+XXXXXXXXXXXXXX+-     +++=-- -----  =---==-
+''''''''''''' '''''             '       '''''''''''''''''''''''''''''''''''''''''''      '''
+............   ...                            .....................................      ..
+--====== ==    =H-                            ==-H=  =  =----------=HHHHHHHHHHHHH-=
+                B                                C                  BBBBBBBBBBBBC
+                V                                                    VVVVVVVVVV
+                                                                      A      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1+++OOOOOOMOOMOMOOOMOOMOOO
+X++++++++++++++XX++====+=====+==+=======+++==+++XX+++++++XXX+XXXX+++XXXXXXXXXXXXX++     -++++- -- - --- -- -=-
+'''''''''''' '''''                            ''''''''''''''''''''''''''''''''''''       '''
+............  ...                              ...................................       ..
+-======= ===  =H-                              =--    =  ---=----===HHHHHHHHHHHHH=
+               B                                                    BBBBBBBBBBBBC
+                                                                     VVVVV VVVV
+                                                                           A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO11)++MOOOOOOOOOMOOOMMOMOMOO
+++++++++++++++X++=+-===+++++++==========+===+=+XXX++++++++XXX+XXX++XXXXXXXXXXXXXX+-      +++=----- ---  - - --
+'''''''''''''''''           '           '     ''''''''''''''''''''''''''''''''''''       '''
+................                               ...................................       ..
+==== ======  =H=                               ---=     ==---=---==-HHHHHHHHHHHHH
+              B                                                     BBBBBBBBBBBBC
+                                                                     VVV VVVVVV
+                                                                            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1+))=OOOOOOOOMMMOMOMMOOOMOO
+X+X+++XX++++XX+++==++++++===+=++=+====+==+=-+=++XX++++++++X++XXXX+XXXXXXXXXXXXXXX+      -+++=---   - -  -=- --
+'''''''''''''''                               ''''''''''''''''''''''''''''''''''''       '
+...............                                ...................................
+-=-===--=== HH=                                =--       =-==----=-HHHHHHHHHHHHH-
+            CB                                                     CBBBBBBBBBBBB
+             V                                                       VVV VVVVVVV
+                                                                     AA   A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1)1+-MOOOOOOMMOAAMMOMMOOOOO
+X++++++X+++XX+=++++===+=++==++==== --=--==-=+++X+X++++++++++++++++++XXXXXXXXXXXXX+       +++=--  -    -  -----
+''''''''''''''                                ''''''''''''''''''''''''''''''''''''       '''
+..............                                ........  .........................        ..
+-======-== --=                                 -=-=     =========== HHHHHHHHHHHH-
+                                                                    CBBBCBBBBBBB
+                                                                      V     VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1))==AOOOOOMMMOOMMMMOOOOOOO
+X+++++XX+++++=-+=++==+==+=++++====-==+===++++++XXX++++++++++++++++XXXXXXXXXXXXXXX=       +++=-   --    -----==
+''''''''''''                                ' '''''''''''''''''''''''''''''''''''        ''
+............                                  ...................................        .
+-=====--===                                   =---=     ==========--HHHHHHHHHHHH-
+                                                                    BBBBBBBBBBBB
+                                                                     VVVVVVVVVV
+                                                                      AA  A AA
 OOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1)+--MOOOOOOOOOMMOOOMMMOOOO
++X+X+XXXX+++= -=====+===++==++===========++++++XXX++++++++XX+++X+XXXXXXXXXXXXXXX+-       +++------  ---   -=-=
+'''''''''''                                   '''''''''''''''''''''''''''''''''''        ''
+...........                                   ...................................        .
+=-=-=----=                                    =--H=       --===-=--HHHHHHHHHHHHH=
+                                                 C                 CBBBBBBBBBBBB
+                                                                     VVVVVVVVVV
+                                                                     AA  A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM111+- MOOOOOMMMMMOMOOOOOOOOO
+X++X+XXX+++===-=-==+++=++=++++====--+++=====+++XXX+++++++++++++++XXXXXXXXXXXXXXX+        +++=-     - ------===
+'''''''''''                                   '''''''''''''''''''''''''''''''''''        '''
+..........                                    ...................................        ..
+-==-=---=                                     =---== =    =======--HHHHHHHHHHHHH
+                                                                   CBBBBBBBBBBBB
+                                                                     VVVVVVVVVV
+                                                                      AA  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1))+--OOOOOMOMOOOOMMOOMOOOOO
+XXXX+XX+++++======+=+=+=++++++++=+==+++=+=+++++XXX++++++++XX++XX+XXXXXXXXXXXXXXX+       -+++= - -=--  -- ====-
+'''''''''''             '  '  '              ''''''''''''''''''''''''''''''''''''        '''
+...........                                   ...................................        ..
+----=--===                                    =---=  =   =--==--=--HHHHHHHHHHHHH         =
+                                                                   CBBBBBBBBBBBB
+                                                                    VVVVVVVVVVV
+                                                                     AAAA AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1))+ -OOOOOOOOOOOMMMMOMOOOOO
+XXXXXXXX+++===-+==+==+==+++=++++===-==+++++++++++XX+++++++XXXXX+XX+XXXXXXXXXXXXX+       -++++------    - =+==-
+'''''''''''                              '    ''''''''''''''''''''''''''''''''''         '''
+..........                                     .................................         ..
+--------=                                      ==--==    =-----=--=HHHHHHHHHHHHH
+                                                                   CBBBBBBBBBBBC
+                                                                     VVVVVVVVVV
+                                                                       AA AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+1)= -OOOOOOOOOMMOOOOOOOOOOO
++XXX+XX+++++====-=+++++=++=++++=+=+=====++==++++++++++++++XXXX+XXXXXXXXXXXXXXXXX=       -++++=---  ---=--+=-==
+'''''''''''         '        '                 '''''''''''''''''''''''''''''''''         '''
+..........                                       ...............................         ..
+=---=--==                                          ==    =----=-----HHHHHHHHHHHH
+                                                                    BBBBBBBBBBBC
+                                                                    VVVVVVVVVVV
+                                                                     AAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+1)+---OOOOOOOMOOOOOOOOOOOOOO
+++++X+++++===-----=----===+=++====-==++=-+++++++=+++++++++++XXX+++XXXXXXXXXXXXX+        -++++-- --------------
+''''''''''                                   '    ''''''''''''''''''''''''''''''         ''
+..........                                         ..... .......................         ..
+====-====                                           ===  ===---===--HHHHHHHHHHH
+                                                                    BBBBBBBBBBB
+                                                                     VVVVVVVVVV
+                                                                     AA AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA))++-  OOOOOOOMMMMMMOMMMMMOOO
+X++++++++++-===-===-==+++=+=+++++++++++=++==+++=++==+++++++++XXXXXXXXXXXXXXXXXX+        +++++--      -     ---
+''''''''''                   ' '                    ''''''''''''''''''''''''''''         ''
+..........                                           ...........................         ..
+-========                                              = ====-------HHHHHHHHHHH          =
+                                                                    BBBBBBBBBBB
+                                                                     VVVVVVVVVV
+                                                                     AAA AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)++=-  OOOOOOOMOMMMMMMMOMOOOO
+++++++++++===--==-==+++++++=+++++++++++=+++++++++++++=++++X+X+XXXXXXXXXXXXXXXXX+        ++++=-- -       - ----
+''''''''''                            ' '    '        ''''''''''''''''''''''''''         ''
+..........                                             .........................         ..
+=========                                               ==-=-=-----HHHHHHHHHHHH
+                                                                   CBBBBBBBBBBB
+                                                                     VVVVVVVVVV
+                                                                     AAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+)=-  -OOOOOOMMMMZOMMOOMMMOOO
+++XX++++++======+=++++=++++++++=++++++++++++++++=+==-=+=++++++X+XXXXXXXXXXXXXXX+        ++++=-     -  --   -==
+''''''''''         '     '    '   '  '  ''     '         '''''''''''''''''''''''         ''
+..........                                               ......................          .
+==--=====                                                =====-=----HHHHHHHHHHH
+                                                                    CBBBBBBBBBB
+                                                                     VVVVVVVVVV
+                                                                      A AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1+)=  =OOOOOOMOOMOMOMOMMOOOOO
+X+++X+X+++==++=+=++++++++++++++++++++++++++++++++=+=++++=++XXXXXXXXXXXXXXXXXXXX+        +++++- -- - - -  -==--
+''''''''''          ''   '''''''  ' '' ''' ''' ''         ''''''''''''''''''''''         '''
+..........                                                .....................          ..
+-===-=-=                                                   -------H-HHHHHHHHHHH
+                                                                  C BBBBBBBBBBC
+                                                                     VVVVVVVVV
+                                                                     AA AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)))=---OOOOOOOOOOAMMOMOOOOOOO
++++++++++========+++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXX+        +++++-----   - ----===
+'''''''''            '  ''         '' '' ''''''' '      ' '''''''''''''''''''''         ''''
+.........                             .        .          .....................          ..
+========                                                   =-------HHHHHHHHHHHH          =
+                                                                   CBBBBBBBBBBC
+                                                                     VVVVVVVVV
+                                                                     A  AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO11)+-- +OOOOOOOOOOMMOMOOMOOMOO
++++++++++=-=-=-===++===+=====++++++++++++++=+++++++=++++++++++XXXXXXXXXXXXXXXX+=        +++++=----  - -- -- =-
+'''''''''                          ''''     '  ''      ' ''''''''''''''''''''''         ''''
+.........                                                  ....................          ..
+===== ==                                                     =--HH--HHHHHHHHHH=          =
+                                                                CC  BBBBBBBBBB
+                                                                     VVVVVVVVV
+                                                                      AA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO111+-  +OOOOOOOMOOMMOOMMOOOOOO
+XX+++++++=------===+++++++++++++++++++++=+++++++++++++++++++++XXXXXXXXXXXXXXXX+=        ++++-=- --  --  ----==
+'''''''''                  ' '   '   '   ''' '' ' ''   '''   ''''''''''''''''''         ''''
+.........                                                    ..................          ..
+--======                                                     =----HHHHHHHHHHHH=
+                                                                  CCBBBBBBBBBB
+                                                                     VVVVVVVVV
+                                                                      AA    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1+=-  +OOOOOOMMOMMMOMMMOOOOOO
++++++++++=---=-=-==+++=++++++++=+++++++++++++++++++++++++++++=++XX+XXXXXXXXXXX+=        ++++=-  -   -   -=-===
+'''''''''                   '        ''' ' '''' '''   '    '  '''''''''''''''''         '''
+.........                                                      ................          .
+= ===                                                          =--=-HHHHHHHHHH=
+                                                                    CBBBBBBBBB
+                                                                     VVVVVVVV
+                                                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1)=-   =OOOOOOOOOMMMAOOOOOOOOO
+X+X++XX+++==+=++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXX+-        ++++==---    ------===
+'''''''''       '   ''''''  '' '''''''''  ''''  ''''' ''''''  '''''''''''''''''         ''''
+.........                        .     .    .     ..   .       ................          .
+-=-==--=                                                        ----HHHHHHHHHH
+                                                                    BBBBBBBBBB
+                                                                     VVVV VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1)+-   +OOOOOOOMMOMMAMMMOMMOOO
+++X+X+X+++==++=====++++=+++=++++++++++++++++++=+++++++++++=+++++++XXXXXXXXXXXX+-        +++=---  -      -  --=
+'''''''''                    '  ' '  '  ''''''    ''' ''        '''''''''''''''         '''
+........                                                        ...............          .
+==-=-=-=                                                         =--HHHHHHHHHH
+                                                                    CBBBBBBBBC
+                                                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1)+-   1OOOOOOOOOOOMMMOOMMOOOO
+++++++++++==++==+====++=====+++++=+++++=+++++++++++++++++++=====+++XXXXXXXXXXX+         +++==------   --  -===
+''''''''                        ' '' '    ''   '  '''  '         '''''''''''''          '''
+........                                                         .............           ..
+========                                                          =--HHHHHHHH-
+                                                                     CBBBBBBB
+                                                                           V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)))-   1OOOOOOOOOOOMMMMOOOMOOO
+++X+++++=-===--=+====++===++==+==++++++++++++++++=++++++++++++++++++XXXXXXXXX+          ++++---=---    --- ==-
+''''''''                               '  '    '  ' ''  '         ''''''''''''          ''''
+........                                                          ............          ...
+==-====                                                           ==--HHHHHHH=
+                                                                      BBCBBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1))+-   1OOOOOOMMOMOOOOMOMOOMOO
+++++++++====++===+===+++=++++++++++++++++++++++++++++++++++++=++++++XXXXXXXXX+-         +++=--  - ---- - -- -=
+''''''''                 ' '      ''      '    '  '   ' '         ''''''''''''          '''
+.......                                                            ...........          ..
+=======                                                            =-HHHHHHHH
+                                                                     CBBBBBBB
+                                                                      VV   VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)===    ZOOOOOMOOOOOMMMMMOOOMOO
+++++++++===-==+===+===+++=++==+=+=+++=+++==++=+=+++++==+++==++===--++XXXXXXXX+          +++=- -----     --= ==
+'''''''                                           '                '''''''''''          '''
+.......                                                             ..........          ..
+=== ===                                                             =HHHHHHHH=
+                                                                     CBBBBBBB
+                                                                       V VVV
 OOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)=+-    ZOOOOOOOMMMMOOMOOMMOOOO
+++++++++--- - ---==-+=++-===+==+=+==+==+++++=+++=+++=+++++=+========+XXXXXXXX+          ++++---    -- =-  ====
+'''''''                                                             ''''''''''          '''
+.......                                                             ..........           .
+=======                                                             =HHHHHHHH=
+                                                                     CBBBBBBB
+                                                                       VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)=+=    XOOOOOOMMMAMMMOOOMOOMOO
+++++X++-==---=-+-==--===+=+=-====++++++++++++===++++++==+==+=++=+++=+XXXXXXXX+          ++++=-       -=- -- =-
+'''''''                          '        ''                        ''''''''''          '''
+.......                                                              .........          ..
+====-==                                                              HHHHHHHH=          =
+                                                                     CBBBBBBB
+                                                                      VVVVVV
+                                                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)=)-   -AOOOOOOOMOMMMMOOOOOOOOO
++++X+++==-=-====+=++=++==+==+=====+==++++==++=+=++=+==++++==+===++=++XXXXXXXX+          ++++--- -    -----===+
+'''''''                                    '                        ''''''''''          '''
+......                                                               .........          ...
+===-==                                                               -HHHHHHH=           =
+                                                                      BBBBBBB
+                                                                       V V VV
 OOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA))+    -AOOOOMOMMOOMMOMOOOOOOOO
+++++++=-===- ===========+=+-=+==++=+=++===++++=+=+==+=++++==+=+=+++=++XXXXXXX+          +++= -  --  - ---=-==+
+''''''                                                          ''   '''''''''          '''
+......                                                               .........          .
+ = ==                                                                 HHHHHHH           =
+                                                                      BBBBBBB
+                                                                       VVVVVV
+                                                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO11=+-   -MOOOOOOMOMMMMMOOOOOOOOO
++X++++++=====+==+=++==++==+=+=+==+=+++++++++====+==++=++=+++++++++++++XXXXXXX+          +++=-- -     ----==+++
+''''''                                                      '  ''    '''''''''          '''
+......                                                                ........           .
+=-====                                                                HHHHHHH=
+                                                                      CBBBBBB
+                                                                       VVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)++=-   -MOOOOMOOOMOOMOMOMMOOOOO
+++X+X++=++===+-===++==++=++++++=++=+++++++++++++++++=+++++=+++++++++++XXXXXXX+          +++= --= -- - -  -===+
+'''''''                            ' ''''      '       '        ''''''''''''''          '''
+......                                                                ........          ..
+==-=-                                                                 -HHHHHH           =
+                                                                       BBBBBC
+                                                                       V VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1))=-    OOOOOMMOOMOOMMOOOOOOOOO
+X+X+++++==--====-==+===++++++++++++++==+++=======+==++=+=+=++++=+++==++XXXXXX+         -+++-  -- --  ----+-=++
+''''''                  '''''''''''''               '                 ''''''''          '''
+......                    ..........                                  .......           ..
+-=-==                       ======                                    =HHHHHH
+                                                                       BBBBBB
+                                                                       VVVV
 OOOOOOOOOOMMOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)))=     OOOOOOOOOOMOOOMMMOOOOOO
+++++++-=--  ----  --=+++++X+XX++XXXXX+++==+===+=++=++++=++=++++++++=+++XXXXXX+         -++++-=--- ---   ===+=+
+'''''                 ''''''''''''''''                      ' '' '    '''''''           ''
+.....                 ................                                .......           ..
+=====                 ====-=--==-HHH-                                 =HHHHHH
+                                 CBC                                   BBBBBC
+                                                                       VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1)=-   -OOOOOOOMOMOOOOOOOOOOOOO
+++++++===-=====-=-=++XXX+++++++++++XXXX+++++++++++++++++++=++++++++++=+XXXXXX+         =+++==- - ------====+++
+'''''               ''''''''''''''''''''    '''''  '''''    '' ''''   ''''''''          '''                  '
+.....               ....................                              .......           ..
+=====               =---=  = == = =HHHH=                              =HHHHHH
+                                   CBBC                                BBBBBB
+                                    V                                  VVVVV
+                                                                        A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)+-    -OOOOOOOOOOMOMOOOOOOOMOO
+X+XX+====---+==--+XXX++++++++++++++++XXX++++++++=++++++++++++++=++=++++XXXXXX+         =+++=----- - ------- ==
+'''''             ''''''''''''' ''''''''' '   '    '' ''' '' '  '   ' '''''''           '''
+.....             ............. .........                              ......           ..
+-=--=             -HH===    = =    ==HHH                               HHHHHH
+                   BC                BBB                               CBBBBC
+                                      V                                 VV V
+                                      A                                  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)+)-    =OOOOOOMOMOMOAMMOOOOOOOO
+X+XX+==+==-==+=++XX+++++++++++++++++++XXX++++++++++++++++++++++++++===+XXXXXX+         ++++-- - - -   -----=++
+'''''           ''''''''''''''''''''''''''''''    '''             '    ''''''           ''
+.....           ..........................                             ......           .
+-=--=            -H==            ==  =HHH                              -HHHHH
+                  C                   BBB                               BBBBB
+                                       V                                VVV
+                                                                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO11+-    -OOOOOOMOMOOMOOOOOOOOOOO
+X+XX+=====-----+X++++++++++++++++++++++XXX++++++==+++++++++++++++++++++XXXXXX+         =++==- - -- -------==++
+'''''          '''''''''''''''''''''''''''''             '    ''''''' '''''''           ''
+.....          ..... .. ...................                            ......           ..
+-=--           =H==          =  = =   =HH-                             -HHHHH
+                C                      CB                               BBBBC
+                                        V                               VVVV
+                                                                         AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO11+-    =OOOOOOMMOOOOOOOOOOOOOOO
++XXX+++=+-----+XX+++++++++++++++++++++++XX++++++++++++++++++++++++++++++XXXXX+         =+++=-  ------=-==-==++
+'''''         '''''''''''''''''''''''''''''''  ''  ''' '  '' '  '' '' '''''''           ''
+.....         .............................                            ......           ..
+=---=          H- ==  =   ==        =  =HH=                            =HHHHH
+               C                        BB                              BBBBB
+                                         V                              VVVVV
+                                                                         AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1)-     =OOOOOMAMOMMOOMMOOOOOOOO
+XXXX++=-==---=XX+++++++++++++++++++++++++XX+++=+=++++==++==+++==++++===+XXXXX-         =++=-   -  --  --=-===+
+'''''         '''' '''''''''''''''''''''''''        '                  ''''''           ''
+.....         ...  ........................                            ......            .
+H--H=         -H=   =      = ==     = ===HH                            =HHHHH
+C  C           C                         BC                             CBBBB
+                                                                         VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)=-     +OOOOOMAMMMMMMMMMOOOOOOO
+XXXX+++-==---+XX+++++++++++++++++++++++++XX++++++++++++++=++++++++++++++XXXX+-         +++=-           -=-===-
+''''''       '''''''''''''''''''''''''''''''' ''''  ''''     ''        ''''''           ''
+.....        ..... ........ ................                           ......           .
+HHH-=        =H-            =   =   ==   HH                             HHHH=
+CCC           B                          BB                             CBBB
+                                          V                               VV
 OOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)=-     +OOOOOOOMOOOMOOOMOOOOOOO
+XXXXXX+==-- =+X++++++++++++++++++++++++++XX+++++++++++++++++++++++++++++XXXXX          +++==-- --- --- ======+
+'''''''      ''''''''''''''''''''''''''''''''''''' '   '   ' '  ''' '' ''''''          '''
+.......      ................................                          ......           .
+HHHHH-=      =H=             =  ====  =  HH=                           =HHHH-           =
+BCCCC         B                          CB                             CBBB
+              V                                                          VVV
+                                                                          AA
 OOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1)-      )OOOOOMOMMMOMOOOOOOOOOOO
+XX+XXXX++-  =XX++++++++++++++++++++++++++XX+++++++=+++++++++++++++++++++XXXX+          =++=- -   - ----=======
+''''''''     ''''''''''''''''''''''''''''''''  ''  ''  ' '  ''' '''  ''''''''           '
+........     ... ............................                          ......           .
+--=----=     -H=    == ====   == === ====-H=                           =HHHH=
+              B                           C                             BBBB
+                                                                        VVVV
+                                                                         AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+=      )OOOOOMOMOOMOOOOOOOOOOOO
+XXXXXXXXX+--=XX++++++++++++++++++++++++++XX++++++++=+++++++++++++++++++XXXXX+          ++++- - -- -----=-=====
+''''''''''   ''' ''''''''''''''''''''''''''''  '     ''''   ' ' '   '''''''''          '''
+..........   ...   ..... ... ...............                    .      ......           ..
+-------H-    -H=    =                = = --=                           -HHHH
+       C      B                                                         BBBB
+                                                                        VVVV
+                                                                         AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1=-      )OOOOOMXMMMMOOOOOMOOOOOO
+X+++XXXXXX++++XX++++++++++++++++++++++++++X++++++++++==+++++=++=+=+====XXXXX           ++=--      ----- =-----
+'''''''''''' ''''''''''''''''''''''''''''''''   '                      '''''            '
+............ ...............................                           .....
+-===------=  =H-     == =  = =       =   =-                            -HHH-
+              B                                                         BBB
+                                                                          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM11=      1OOOOOOOOOOOMOOOOOOOOOOO
+XXXXXXXXXXXX++XX+++++++++++++++++++++++++XX++++++++++++++++++++++++++++XXXXX           +++++------ ----======+
+''''''''''''''''''''''''''''''''''''''''''''' ' '   ''' ''' ''' '' '''''''''           ''''
+.............................................                         ......           ...
+----H-----H- =HH=  ===    ===   ==      =--=                           HHHH-
+    C     C   BB                                                       CBBB
+              V                                                         VVV
+                                                                         AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)1=-     1OOOOOOOOOOOOOMOOOOOOOOO
+XX+XX+XXXXXXX+XXX+++++++++++++++++++++++XXX++++++++++++++++++++++++++++XXXX+           ++++==------- --==--+==
+''''''''''''''''''''''''''''''''''''''''''''' '''     '' '  '' ''' '  ''''''           ''''
+............................................                 .        .....            ....
+--=--=----HHH=-H-   =  =   =  ====     =-H-                            HHHH
+          CCC  B                         C                             BBBB
+               V                                                        VVV
+                                                                        AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1)+-     -ZOOOOOOMAMOOOOMOOOOOOOOO
+X+X++++X+XXXXXXXX+++++++=++++++++++++++XXXX+++++++=++++++++++===+++++++XXX+-           ++++==   ---= ----===-=
+'''''''''''''''''''''''   '''''''''''''''''''' '''   '                '''''            '''
+.......................     ........ .......    .                     .....            ...
+-=-====-=--HHHHHH= =             ==   =-HH-                           =HHH=             =
+           CCCCCC                       CC                             BBB
+                                                                        VV
+                                                                        A
 OOOOOOOOOOOOOOOOOOOOOOOOM1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)+)+=      ZOOOOOOMOOOMOMOOOOOOOOOO
++++++++++++++++++++++++=   -+++++++++++XXX++++++++=+++++=+==+=+++==+++XXXX+            ++++=- --- - --=+===++=
+'''''''''''''''''''''''      ''''''''''''''''    '  ' '         '   '''''''            '''
+...................            ..  ........                           ....             ..
+==== ==  = = == ==                   ==---                            -HHH
+                                                                       BBC
+                                                                       VV
+                                                                        A
 OOOOOOOOOOOOOOOOOOOOOOOOX)1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1++)=-     1OOOOOOMMMMMOOOOOOOOOOOO
+X++++++++++++XX++++++++=    +++++++++XXX++++++==++++++++++++++++++++=+XXX+             ++++=-     ---=====++++
+'''''''''''''''''''''''      '''''''''''''       '         '''  ''   '''''             '''                 ' '
+.......................      .. ..........                           .....              .
+-============--==   ==             ==-H-=                             HHH=
+                                      C                               BBB
+                                                                       VV
 OOOOOOOOOOOOOOOOOOOOOMAMXZAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1+))=-     XOOOOOMAMOOMOOOOOOOMOOOO
+++++++++++++++++++---       =+++++XXXXX+++=+++=====+====+++++++++++=++XXX=             ++++-   -- ---=-== +===
+''''''''''''''''''           ''''''''''''               ''   '' ''   ''''              '''
+.................            ............                            ....              .
+==== ==== ======                ==---H-=                             =HHH
+                                     C                                BBC
+                                                                       V
+                                                                       A
 OOOOOOOOOOOOOOOOOM)+++11MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM11+=+-- -   AOOOOOOOOOOOMMOOOOOOOOOO
++++++++++++++X+++        =++++++XXXX++++++++++++++++++++++++++++++==+XXX+              ++++-=-----  ----+=++++
+'''''''''''''''''         ''''''''''''    '' '''''   '       ''     '''''              '''                  '
+.................         ............                              .....              ..
+== ====== ===-=              ===-HHH=                               =HHH=
+                                 CCC                                 BBB
+                                                                      VV
+                                                                      AA
 OOOOOOOOOOOOOOOOOM+=--=1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1))))=-    -MOOOOOAMOMOOMMMMMMMOOOOO
+++++++++++++++XX+        -+++++XX+++++++++++++++++++++++++++++++++=+XXXX+=             ++++-  - --       ----+
+'''''''''''''''''         ''''''''''       ''   '''     '  ''   '  ''''''              '''
+.................          ........                                 .....              ...
+==============--            ===--=                                  -HHH=
+                                                                     BBB
+                                                                     VVV
+                                                                      AA
 OOOOOOOOOOOOOOOOOO+   -+1ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1))+-     -MOOOOOMMOMMOMOMAMOMOOOOM
+X++++++++++++X+X+-         =++XXX++++=++++++++=++++++++=++++++++++++XXXXX-             ++++-  -  - -   - ----
+'''''''''''''''''           ''''''''               '    '   '  ''  ''''''              '''
+.................           .......                                ......              ..
+-==== =======-=-=            =-H-=                                 =HHHH-
+                               C                                    BBBB
+                                                                     VVV
+                                                                     AAA
 OOOOOOOOOOOOOOOOOOX= --=-=+1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1+++-      MOOOOOOOOMOMOOMOMMOOOOOO
+XX++++++++++++++++           =+++X++++++=++++++++++++++=+++++++++++XXXXX+-             ++++=--- - -- -  ---==-
+''''''''''''''''''            '''''''      '    ''  ''' '   '''   '''''''              ''
+..................            .......                             .......              ..
+--======= = =====              ==-==                              =HHHHH=
+                                                                   CBBBB
+                                                                    VVVV
+                                                                     AAA
 OOOOOOOOOOOOOOOOOOOO)- - --=+ZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1++=-     -MOOOOOOOMOOMOOMOMOOOOOOO
+X++++++++++++++++++-           =++X+++++===++=++++++=+=++++==+++++XXXXXX+              ++++--- -- -- - -----==
+'''''''''''''''''''             '''''''                          ''''''''              '''
+...................             .......                          ........              ..
+-====== ===== = ==               =-====                           HHHHHH=
+                                                                  BBBBBB
+                                                                   VVVVV
+                                                                   AA AA
 OOOOOOOOOOOOOOOOOOOOO)-  - -==)ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1+++--     -OOOOOOOXMOMMMOMOMOOOMOOO
+X+++++++++++++++++++-            +++X++++===+++++++++++++++++++++XXXXXXX+             -+++=--  -   - - --- -==
+''''''''''''''''''''              '''''''     '' ' ''' '''' ''  '''''''''              '''
+....................              ......                        .........              ..
+-===   ====   = ===                =-===                        =HHHHHHH=
+                                                                 CBBBBBB
+                                                                  VVVVVV
+                                                                  AAAAA
 OOOOOOOOOOOOOOOOOOOOOM1-  --=-)1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1)-)--     -OOOOOOMMMMOMOOOMOOMOOOOO
+X++++++++++++++++++==            =+++XX+++++++++++++++++++++++++XXXXXXXX+             -+++==    - --- -- ---==
+''''''''''''''''''                '''''''''   ''   '     '     ''''''''''              '''
+.................                 ........                     ..........              ..
+-===== = ===    =                  ==--===                      HHHHHHHH                =
+                                                                CBBBBBBB
+                                                                 VVVVVVV
+                                                                 AAAAAA
 OOOOOOOOOOOOOOOOOMZAOOOA=   -=+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+==+=-     -OOOOOOMMOMMMOOOMOOOOOOOO
++++++++++++++++++   +++         -=+++XXX++++++++++++++++++++=++XXXXXXXXX=             =+++==  -   --- ----==-=
+''''''''''''''''     ''           ''''''''''     ''' '        ''''''''''               '''
+................     ..            ........                   ..........               ..
+  == ===== = =       =              =---==                     HHHHHHHHH
+                                                               BBBBBBBBB
+                                                                VVVVVVV
+                                                                AAAAAAA
 OOOOOOOOOOOOOOOOZ-+ZMOOOX-   =+XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1)++)       -OOOOOOOMMMMMMAMXMOOOOOMO
+++++++++++++++++     +X+         =++++++X+++++=+++=+++==+=--+XXXXXXXXXX+-             =+++=--          ----- -
+''''''''''''''''     '''           ''''''''''                '''''''''''               '''
+.......... .  .      ...           ..........                ...........               ..
+==   ==    =         =H=             ===-===                 -HHHHHHHHH=
+                      C                                       BBBBBBBBB
+                                                              VVVVVVVVV
+                                                               A   A
 OOOOOOOOOOOOOOOO-- =ZOOOOO)--=AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM11+)+-      =OOOOOOOOOMOMOOOOOOOOOOOO
+++++++++=++++++-     +XXX+      -=+++++++++++++++++++++===++XXXXXXXXXXX+              ++++==--- - ----------==
+'''' '''    '''       '''          ''''''''''''''          '''''''''''''               '''
+....         .        ...            ..........            .............               ..
+==                    -H-             = ====                HHHHHHHHHHH=
+                       B                                    BBBBBBBBBBB
+                       V                                     VVVVVVVVVV
+                                                             AAAAA
 OOOOOOOOOOOMOOO1-- -1MOOOOOX1ZMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)1+))-      =OOOOOOOOMMMOMMOOMOOOOOOO
+++++++++++= -+=       +XXX+    - -===+++++++X+++++++===+++XXXXXXXXXXXXX+              +++++=--   -  -- -=--===
+'''''''' '            ''''            ''''''''''''      ''''''''''''''''               '''
+.......               ....            ...........        ...............               ..
+ ===                   HH-             =====-==           HHHHHHHHHHHHH
+                       CB                                 CBBBBBBBBBBBB
+                        V                                  VVVVVV VVVV
+                                                           AAAAAA AAAA
 OOOOOOOOOOOZAMZ-    -AOOOOOOMXAMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)))=++=      =OOOOOOOOOMMMOOOOOOOOOOOO
+++++++++++-           =+++++     - ==++++++++++++++++++XXXXXXXXXXXXXXXX-              ++++==---   ---=--=---==
+'''''' ''              ''''           '''''''''''''' ''''''''''''''''''                ''
+.....  .               ....            ............   .................                ..
+   =                    ==              = ======      =-HHHHHHHHHHHHHH-
+                                                        BBBBBBBBBBBBBB
+                                                         VVVVVVVVVVVVV
+                                                          AA  AAAAAAAA
 OOOOOOOOOOMXZX+-     +AOOOOOOOMAMMXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1++=-+=-   -  +OOOOOOOMOMMMOMMOOMOOOOOO
+X++++++++=             -+++++=      --+++++++XX+++++++XXXXXXXXXXXXXXXX+               +++++== -   -  -- -----=
+'''''''                 '''''          ''''''''''''''''''''''''''''''''               ''''
+....                     ...            ...............................                ..
+-===                       =               ==--===  ==-HHHHHHHHHHHHHHH                 =
+                                                       BBBBBBBBBBBBBBB
+                                                       VVVVVVVVVVVVVV
+                                                        AAAAA   AAAAA
 OOOOOOOOOOMZ11+=    - +MOOOOOOOOMXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1++==))-      +OOOOOOOMMOMMMMMOOOOOMMOO
+X++++++++=              =+++++=-    ==+++++++XXX+++++++XXXXXXXXXXXXXX+-               ++++==-  -     ---=-  =+
+'''''''                  '''''         '''''''''''''''''''''''''''''''                ''''
+.......                    .            ..............................                 ...
+-===                                     ====---== =  =HHHHHHHHHHHHHH=
+                                                       BBBBBBBBBBBBBC
+                                                        VVVVVVVVVVVV
+                                                        AAA  A AAAA
 OOOOOOOOOOM+-=)+-   --=ZOOOOOOOOOMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1))+++1)       +OOOOOOMMOMOMMOOOOOOMMOOO
+XX++++++++              -=+++++=-  - --==++++++XX++++++XXXXXXXXXXXX+-                 ++++==  - -  ------  -==
+''''''''                   ''            '''''''''''''''''''''''''''                  ''''
+......                                    ..........................                   ..
+H-===                                       ===--======HHHHHHHHHHHH=
+C                                                      BBBBBBBBBBBB
+                                                        VVVVVVVVVV
+                                                        AA     AAA
 OOOOOOOOOO1-- )1=   ---1MOOOOOOOOMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ111)+)++)-     -1OOOOOOOOOMMMOMOOOOOOOOOO
+XX++++++=-               ++++-==+  -- ----++++++XXXX+++XXXXXXXXXX++                   +++++=---   - -------===
+'''''''                   '''             ''''''''''''''''''''''''                    ''''
+......                     .               .......................                    ...
+H-=                                          ===----===HHHHHHHHHH=
+C                                                      CBBBBBBBBB
+                                                        VVVVVVVVV
+                                                        AA   AAA
 OOOOOOOOOM)  -)1+- -  =ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1)111))=+))-      1OOOOOOOOOOOOOOOOMOOOOOOO
+XXX+++++=                ++++=-++++=-----=++++++++XX+++XXXXXXXXX+-                    ++++===-------=- -==-===
+'''''''                   '''   '         '''''''''''''''''''''''                     ''''
+......                    ..                 ....................                     ..
+HH-==                                         = ==--== HHHHHHHHH=                      =
+BB                                                     CBBBBBBBB
+                                                        VVVVVVVV
+                                                        AA   AA
 OOOOOOOOOM+---=1)- ---1AOOOOOOOOOOOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOMZZ1111))==)1-      1OOOOOOOMMAMOOMMOOOOMOOOO
+XXX++++++               -++++++==++==-   =++++++++++++++XXXXXXXX+                     ++++=-=    --  ---- --==
+''''''''                  ''''              ''''''''''''''''''''                      '''
+.......                   ...                 ..................                      ...
+HH-==                                           === ====HHHHHHH-
+BB                                                      BBBBBBB
+                                                         VVVVVV
+                                                            AAA
 OOOOOOOOOO=-   --=- -)AOOOOOOOOOOOOOOOMMMMOOOOOOOOOOOOOOOOOOOOOOZ1))11111++=1)--     ZOOOOOOOOMOOOOMOOOOOOOOOO
+XXXX+++++-             -+++++++++=+++=    ---=+++++++++++XXXXXX+                      ++++==-- ---- ------=+=-
+''''''''                 '''''''   ''          ''''''''''''''''                       ''''
+.......                   .....                ................                       ...
+HH-- =                                           = =   ==HHHHH-
+BB                                                       BBBBB
+                                                          VVVV
+                                                          A A
 OOOOOOOOOO+     =---)AOOOOOOOOOOOOOOOOOMMMMAMOOOOOOOOOOOOOOOOOOZ1))+++)+)++))+=-     ZOOOOOOOMMMOMOOMOOOOOOOOO
+XXXX+++++-            --+=+++++++++++++      -=+++++++++++XXX+-                       +++++=-   - -- =----==--
+''''''''                    ''''''''''         '''''''''''''''                        '''''
+........                       . .....         ...............                        ...
+HHH-=                                           ==  === ==HHH=
+BBC                                                       BBB
+                                                           VV
+                                                           AA
 OOOOOOOOOOZ-    -=+)1OAOOOMOOOOOOOOOOOOOOMMX1XMOOOOOOOOOOOOOOM))ZXMOOMX)+)+)))+      AOOOOOOOOOOOOOOOOOMOMOOOO
+XXXXX++++=           - --- =+++++++++++=-      -=++++++++++X+      =-                 ++++++=--=---=-+- - =-=-
+'''''''''                    ''''''''''          ''''''''''''                         ''''
+........                        .......          ............                          .
+HHHH-==                         = == =            == ==  ==H=
+BBBC                                                       C
+V
 OOOOOOOOOOO+     -)ZOMOOMMOOOOOOOOOOOOOOMMMAXAXXOOOOOOOOOOOOO11OOOOOOOOOMZ))11-      XOOOOOOOOOOOOOMOOOOOOOOOO
+XXXXXX++++-         - --  -===++++++++++        -++++++++++X+  -++++++++              +++++==--+=-- ===-=---==
+'''''''''                      ''''''''          ''''''''''''   '''''''               ''''
+.......                         .......           ...........    ......               ...
+HHHH--=                            ==                 = ===-      ==                   ==
+BBBB
 OOOOOOOOOOOZ-  - -=1MOOOMMOOOMOOOOOOOOOOOMAMOMAMOOOOOOOOOOOOOOOOOOOOOOOOOOZ1)1-     -AOOOOOOOOOOOOOMOOOOOOOOOO
+XXXXXX++++=          =--  --= ++++++++++=   -   -=+++++++++++++++++++++++-            +++++====---- ==--=---=-
+''''''''''                     '''''''''          '''''''''''' ''''''''''             '''''
+.........                        ......            ........... ..........             ....
+HHHHH-=                             ==              = =======   = = = ==               ==
+BBBBC
+V
 OOOOOOOOOOOO1     -1AOOOOOOOOOOOOOOOOOOOOOMAMMXMOOOOOOOOOOOOOOOOOOOOOOOOOOO1)Z+-  - -AOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX++++-         =+++---=-+++++++++++-      -+++++++++++++++++++++++++-           ++++++==------==-=======
+'''''''''''           ''        '''''''''         ''''''''''''''''''''''''            '''''
+..........            ..         .......           .......................            ....
+HHHHHH-=                           ==                = = ====== ===      =             =
+BBBBBB
+VVVV
+AA
 OOOOOOOOOOOO)      =ZMOOOOOOOOMOOOOOOOOOOOMMMMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOM11)     -MOOOOOOOOOOOMOOOOOOOOOOOO
+XXXXXXXX++++          ++++-=-- -=+++++++++     -=++++++++++++++++++++++++++           ++++==----- ---=------==
+'''''''''''           '''         '''''''        ''''''''''''''''''''''''''           ''''
+..........             ..          ....            ........................           ...
+HHHHHHH-=               =                              == =  ===      == =
+BBBBBBC
+V VV
+A
 OOOOOOOOOOOO- -   --1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ11-     AOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX++-         -++++++++==+++++++++++++=++++++++++++++++++++++++++++++          +++++===-----====---===+
+'''''''''''            ''''''     '' '''''     '''''''''''''''''''''''''''''          ''''
+...........            ....          .           ..........................           ...
+HHHHHHHH-               =                            = == =  ===  = === ===            =
+BBBBBBBC
+VVVVVV
+ A
 OOOOOOOOOOO=  - - -+ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1Z--   -MOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX++           +++++++++++=++++++++++++++++++++++++++++++++++++++++++          +++++==--------==--=====
+''''''''''            ''''''''''     '''''''''''''''''''''''''''''''''''''''          '''
+..........             ........          . .    .. .........................          ...
+HHHHHHHH-=                =                         =   = = ======  == = ===
+CCBBBBBC
 OOOOOOOOOOM-  -   -1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ+  -  OOOOOOOOOOMOOOOOOOOOOOOOO
+XXXXXXXXXX           -+++++++X+++==-++++++++++++++++++++++++++++X++++++++++++        -++++++--= ---=-=--=+=--=
+''''''''''             ''''''''''    ''''''''''''''''''''''''''''''''''''''''         '''
+..........             . . .....      .  . .................................          ..
+-H--HHHHH-                 ==-=                     ===     ====-== === = ==           =
+ C  CCBCC
 OOOOOOOOOOO-  ==)=ZAOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX-    -OOOOOOOOOOMOOMOOOOOOMOOOO
++XX+++XXXX-         =+++++++++XX++=- =+===+++++++++++++++++++++++++++++++++++=       -+++++---- -- -=---- ---=
+''''''''''           ''' '''''''''          '''''''''''''''''''''''''''''''''         '''
+.... .....            ..  ........          .................................         ...
+=HH  =-HHH                  ==--=            == = = =      == ==== =    === =         =
+ BB    CBC
 OOOOOOOOOOO=  -=1ZAMOOOOOOOOOOOOOOOOMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+-   -OOOOOOOOOOMOMMOOOOMOOOOOO
++XX+=-+++++         =++++++++++++++- -  -+++++++++++++++++++++++++++++++++++++       -+++==-=-- =  -=-- ==-=-=
+''''   '''           '    ' '''''''         ''''''''''''''''''''''''''''''''''        '''
+....   ...                   .....           .................................        ...
+ -H=   ===                     ===             ===  =   =    == ====  = =====
+  B
+  V
 OOOOOOOOOOO1   -ZMOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-   =OOOOOOOOOMOOMMOMOMOOOOOOO
+++X++=+++++       -++=-====+++++++++=-  -++++++++++++++++++++++++++++++++++++++      =++++==-- --  - - ---=-==
+''''   ' ''                ''''''''       ''''''''''''''''''''''''''''''''''''        ''''
+....     ..                 .......         ..................................        ...
+==H=                           ==           = = =   = =     ==  ====== = = ===        =
+  B
 OOOOOOOOOOOO-   +XOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX-   -OOOOOOOOOOOMOOOOOMOMOOOOO
+++X++=+++++-      =++=-=+==+++++++++=- ---++++++++++++++++++++++++++++++++++X++      =++++=-=--- ----- - =--==
+''''     ''                 ''''''''        '''''''''''''''''''''''''''''''''''       ''''
+....      .                   .....         ...................................       ...
+= -=                            ==           =====  ==  === ======== =======-=        =
 OOOOOOOOOOOO+   -+OOOOOMOOOOOOOOOOOOOMOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-   -OOOOOOMOOOOMOOOOOOOMOOOOO
++++++=-+=+++      -++++ ====++++++++= -   =++++++++++++++++++++++++++++++++++++      =++++= ---- ---==-- -====
+''''      ''       ''''      ' '''''        '''''''''''''''''''''''''''''''''''       '''
+....      ..        ..         .. .         ................... ...............       ..
+ ===      ==        ==                        ==      =           =    = === ==       =
 OOOOOOOOOOOOX  --1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM-   =OOOOOOOOMOOOOOOOOOOOMOOOO
++++++==+++XX      -+++++++++++++++++++==+++++++++++++++++++++++++++++++++++++++      =++++==- ------==--- --==
+'''''    '''       '''' '   ''  '''''     '''''''''''''''''''''''''''''''''''''       '''
+....      ..        ... .         .       .....................................       ...
+==        -H         =                     ==   ===   =  ==== ===== = = =  ====       =
+           B
 OOOOOOOOOOOOO-  =ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=-  =OOOOOOOOOOOOOMOMOOOOMMOOO
++++++=+==+XX=      =+++++++++---+====+=++++++++++++++++++++++++++++++++++++++++=     =+++==------- - ----  -==
+''''     '''          '''''            ''''''''''''''''''''''''''''''''''''''''       ''
+....      ..           ....               .....................................       ..
+          -H            =                        =    === =    =  =  = ==  ====
+           B
 OOOOOOOOOOOOO)-=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=   -OOOOOMOOOOOMOMOOOMOOOMOOO
++++++=+==+XX+    -==+++++++++--===--===++++++++++++++++++++++++++++++++++++++++=     +++++ ----- - --- --- --=
+''''     ''''          '''''            '''''''''''''''''''''''''''''''''''''''       '''
+....      ...          .....             ......................................       ..
+          -H=                                 =       = = ==        = =========
+           B
+           V
 OOOOOOOOOOOOOO1AMOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=   =OOOOOOOOMOMOOOOOOOOOOOOOO
++++++-==+++XX-   =+=====+++++=--- - --=++++++++++++++++++++++++++++++++++++++++=     +++++--- - ----------=-==
+'''''     '''             ''            '''''''''''''''''''''''''''''''''''''''       ''''
+....      ...             ..             ......................................       ..
+ =        =HH              =               == ===== =        =   =  ==== ======
+           BB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=   =OOOOOOOMOMOOOOOOOOOMMOOOO
+++++==--==+XXX=--====--=+=+++- -=- --==+++++++++++++++++++++++++++++++++++++++X=     ++++=-- - ---------  ----
+''''      ''''                          '''''''''''''''''''''''''''''''''''''''       ''
+...       ....                           ......................................       ..
+          =HH-                            =    =  = == =====      = == ===== =-
+           BB
+            V
+            A
 OOOOOOOOOOOOOOOOOMMMOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)   +OOOOOOOMOMOMOOMOOMOMOOOOO
+++++====--+XXX+==   --=+=+===---- -=++++++++++++++++++++++++++++++++++++++++++++     +++==-- - - -- -- - ----=
+''''      '''''                       ''''''''''''''''''''''''''''''''''''''''''      ''
+. .       .....                         .................... ..................       .
+           HHH=                             = =   = =   =       =  = == == ====
+           BBB
+            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=  -)OOOOOOOMMOMMOOOOMOMOMMOOO
++++++==+--+XXXX++=++---+++++=----=-+++++++++++++++++++++++++++++++++++++++++++++     +++==--  -  ---- - -  =-=
+'''''     ''''''                   '''''''''''''''''''''''''''''''''''''''''''''      ''
+  ..      .....                       .........................................       .
+           HHH-                         = == =     =    ==  ==  =  =  =  == ===
+           BBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-   1OOOOOOOOMMMOOOOOOOOOMOOOO
++++++==--++XXXX++=+++=+==+--  -  =+++++++++++++++++++++++++++++++++++++++++++++      +++++---   ---==--=- ---=
+'''''     '''''''   '               ''''''''''''''''''''''''''''''''''''''''''       ''''
+. ..      ......                     ........................... .............       .
+          =HHHH=                       =  =    = ==    = =    =    ==    ====
+           BBBB
+             VV
 OOOOOOOOMOOOOOOOOOOOOOOOOOMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZ=   -+OOOOOOOOOOOOOMOMOOOMOOOOO
++++++==- ++XXXXX+=+++++++=  -- ==+++++++++++++++++++++++++++++++++++++++++++         +++++------=- - +=- =-=--
+'''''     '''''''   '' '         '''''''''''''''''''''''''''''''''''''''''''         '''
+. ..      .......                  .........................................          ..
+          =HHHHH                        =   =     ==  =   =    == =  ======
+           BBBBC
+            VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1Z+--   )OOOOOOOMMOOOMOOOOOMOOOOMO
++++++===-++XXXXXX++==+++++====+=++++++++++++++++++++++++++++++++++++++++++-          ++++=--  --- ---=- --== -
+'''''     ''''''''    ' ''      ''''''''''''''''''''''''''''''''''''''''''           ''''
+.   .     ........               .........................................            .
+          =HHHHH-                           = = =        = =      = = ====            =
+           BBBBB
+            VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX11ZZ=     1OOOOOOOOOOMOOOOOOMMMOOOOO
+++++++=--+XXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++++++++++            ++++===--- -==---   -==-=
+''''''   '''''''''' ' ''' ' '    '  ''''''''''''''''''''''''''''''''''''             ''''
+. ..      .........                     .. ................. ...........             ..
+          -HHHHHH=                          = ==               ==   ====
+           BBBBBB
+           VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZ++1A1--    )OOOOOOOOOOOOOMOOMMMOOOOMO
+++++++==-+XXXXXXXX+++++++++++++++++++++++++++++++++++++++++++++++++++++              ++++==------- --   ---= -
+''' ''   ''''''''''      ''' '' '''''''' '''''''''''''''''''''''''''''               '''
+          .........                        .......... ... ............                .
+          -HHHHHHH=                                    =          ====
+           BBBBBBB
+             VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOMOOOOOOOOOOOOOXZ11)XZ+ --   ZOOOOOOMOOOOOOOOOOOOOOMOOO
+++++++=--+XXXXXXXXX+++++++++++++++++++++++++= =+++++++++ -+++++++++++-               ++++== -------------- ---
+'''''    ''''''''''''   ''' ''''''''''''''''   ''''''''   '''''''''''                ''''
+.        ...........      .        ..    ...   ........    .........                 ...
+          -HHHHHH--=                      ==         =      ==== =
+           CBCBBB
+               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)MOOOOOOOOOOMMOOOOOOOOMAZ1))11XX)-     ZOOOOOOOMOOMMOOMMMMOOOOOOO
++++++++--++XXXXXX++X++++=+++++++++++++++++XX   ++++++XX+-  =++++++=                  ++++==- --  --    ----=-=
+''''''   '''''''''''''    ' '' '''' ''' ''''   '''''''''    ''''''                   '''
+..       ............                   ....    .. .....      ...                    ..
+          =HHHHHH==-=                   ==H-        =-H=        =
+           CBBBBB                         B           C
+              V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+MOOOOOOOOOOMZOMOOOMAXZXZZ)1+Z1Z+-     XOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++--+XXXXXXX+++X+++++++++++++++++++XXX+   +++++++XX+  - --+                     ++++=---=----=---------==
+''''''   ''''''''''''''   '  '''''''' ''''''   '''''''''                             ''
+ ... .   ......... ...                ......   .........                              .
+          HHHHHHH= =H=                 =HHH=         =H-
+          CBBBBBB   C                   CBB           B
+              VV                         VV           V
+                                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=MOOOOOOOOOOMXMMMMOMA1XZZZZ1ZXZX=---  -XOOOOOOOOMMOOOOOOOOOOOOMOO
++++++++==+XXXXXXX+=++X++++++++++++++++XXXXXX   +++++++XX+      -                     ++++==--  ---==---=--- -=
+''''''   '''''''''  ''''   ''' ''''  '''''''   ''' ''''''                            ''''
+ .  ..   .........  ...              .......   ..    ...                             ..
+          HHHHHHH   =-=              =-HHHH-         =H-
+          CCCBBBB                      BBBB           B
+                                         VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=MOOOOOOOOOOMMMMMAOXXZZZ1Z111ZX)--    -AOOOOOMMOOOMMMOOMMMMOMOOOO
++++++++--+XXXXXXX+-=+++++++=+=++++++XXXXXXXX-  +++++++X++      -                     ++++-  ---   --    - ---=
+''''''   '''''''''   ''''         ''''''''''   '''''''''                             '''
+ .       .........   ....          .........    .    ...                             ..
+          HHHHHHH    ===           =-HHHHHHH         =H=
+          BBBBBBB                    BBBBBBB          C
+                                      VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1OOOOOOOOOOOOOMMMMMMZXXZZX11ZA1- -     MOOOOOOMMMOMOOMOMMMMMMMOOO
++++++=+--+XXXXXXX+++++++++++=+++++XXXXXXXXXX+ -++++++XX++=-                          +++=--   - -- -       ---
+         '''''''''   ''''''' ' ''''''''''''''  ''''''''''                            '''
+         .........    .....    ..............  ..........                            ..
+          HHHHHHH      ===       =HHHHHHHHHH        =-H==
+          CBCBBBB                 CBBBBBBBBB          C
+               V                    VVV VVVV
+                                     A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOMMAAMAZ11ZZZ)1ZZ=     -  MOOOOMMOOMOMMMOOMMMMOMOMOO
+++=++++-=+XXXXXXX++=+++++XXX+XXXXXXXXXXXXXXX+ -+++++++X+++-                          +++=  -- -   --    - - =-
+ '  ''   '''''''''     ''''''''''''''''''''''  ''' ''''''                            '''
+         .........      .....................       .....                            ..
+         =-HHHHHH=      =HH-=--HHHHHHHHHHHHH         =H=
+           CCBBBB        BB    CBBBBBBBBCBBB          C
+               V                  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXMXMXXXZ1Z1X+-        MOOOOOMMOOOOOMMMMMOOOOMOOO
++=+++++=++XXXXXXX++==+=++XXXXXXXXXXXXXXXXXXX+-=++++++XXX++=-                         ++++-  -----     ---- =--
+   '     ''''''''''  ' ''''''''''''''''''''''  ''''''''''                            '''
+         .........      .....................  . .. .....                            ..
+         =HHHHHHH=      =HHHHHHHHHHHHHHHHHHH=        -HH=
+          CBBBBBB        BBBBBBBBBBBBBBBBBBB          BB
+               V          VVVVVVVV    VVVVVV          V
+                          A    AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXAAAAZAZ111ZX)-       -MOOOOOOMOOOOMOMOMOOMMMMOOO
++++++++++XXXXXXXX++++==++XXXXXXXXXXXXXXXXXXX+++++++++XXX++=--                        ++++-- ---- - - --    ---
+''''' '''''''''''''    ''''''''''''''''''''''  ''''''''''                            ''
+.       ..........     ......................  ..........                            ..
+         -HHHHHHH       =HHHHHHHHHHHHHHHHHHH=        -HH=
+          BBBBBBB        BBBBBBBBBBBBBBBBBBB          BB
+             VVVV        VVVVV V  V VV VVVVV
+                          AAA              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMMAAXZZZ1))ZZ= -  --  -OOOOOOOOOOMMMMOMOMMOOOOOOO
++++++++++XXXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXX++++++++XXX+= -                        -+++====--    - -  ----=-=
+' '''''  ''''''''''    ''''''''''''''''''''''''''''''''''                            '''
+    .    .........     .........................  . .....                            ..
+         -HHHHHHH       -HHHHHHHHHHHHHHHHHHHH       =-H-
+          BBBBBBB        BBBBBBBBBBBBBBBBBBBC         C
+           V  VV         VV V VVV VV V V VVV
+                                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMAMAAM1XZZ1+ZA1-        =OOOOOOOOOOOOMOMOOOOOOOOOOO
+++++++=+=+XXXXXXX+++++=++XXXXXXXXXXXXXXXXXXXX++++++++XX+=-                          =++++==----- - --------===
+ ' '''   ''''''''' '   '''''''''''''''''''''''''''''''''                             '''
+    .    .........      ......................... ......                             ..
+         =HHHHHHH       =HHHHHHHHHHHHHHHHHHHH=       -H                              =
+          BBBBBBB        BBBBBBBBBBBBBBBBBBBB         C
+             V            VVVVVVV       VVVVV
+                          AA             A
 OOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXXXAZZXXAZ111++ZZ=         -OOOOOOOMOMOOMOOOOMOOOOOOMO
+--=+=+-  +XXXXXXX++=++=+XXXXXXXXXXXXXXXXXXXXX++++++++X+-                            =++++=- - -- ---- ----== +
+         '''''''''  '  ''''''''''''''''''''''''''''''''                              '' '
+         .........     ........................ .  ....                              ..
+         =HHH-HH-       -HHHHHHHHHHHHHHHHHHHH=       -
+          CCC CB         BCBBBBBBBBBBBBBBBBBB
+                           VV       V  VVVVV
+                                           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXZZXXXAXAZZ1Z)1AM=    --   -OOOOOOOOMOMMMOOOOOOOOOOOOO
+++++++++=+XXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXXX++++++++-                             -+++===- -   ---------==-+
+ '''' '  '''''''''  '' '''''''''''''''''''''''' '''''                                '''
+          .......      ........................  ...                                 ..
+          HHHHHHH       HHHHHHHHHHHHHHHHHHHHH-=
+          CBBBBBC       CBBBBBBBBBBBBBBBBBBBB
+              VV         VVVV VVVVVVVVVVVVVVV
+               A           A    A A    AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXZZZ11XXAMZMZZXXXMOOZ- -  -   -OOOOOOOOOOOMMOOOOOOOOOOOOO
++++++++==+XXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXXX++--=-                   ++           =+++=------  ---------===+
+  '''     '''''''' ' ' ''''''''''''''''''''''''                         '            '''
+          .......      ........................                         .            ..
+          HHHHHH-       HHHHHHHHHHHHHHHHH--H-H=
+          CBBBBB        CBBBBBBBBBBBBBBCC  C C
+           VVVVV          VVVVVVVVVV
+                           A A    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=    -   =OOOOOOOOOMMMOOMMMOOOOOOOOO
++++++++++=XXXXXXX+++++++XXXXXXXXXXXX++++++++++++++++---=-----==-+-+++++++           +++++=---   --   ----=+=++
+'''''   ' '''''''  '''''''''''''''''''''''''''''                     ''''            '''
+    .     .......      .........................                     ....            ..
+          -HHHHH-      =HHHHHHHHHHH-=      =  =                      = ==
+           BBBBB        BBBBBBBBBBC
+           VVVVV         VVVVVVVV
+           A                A  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX--       =OOOOOOOMMOOMOOOOOOOMOOOOOO
++++++++++++XXXXX+++++++XXXXXXXXX+++++++++++++++++++++++++++++++++++++++++           ++++===  -- ------- -=-=++
+''''''''' '''''''  '' ''''''''''''''''' '''''''''''''''''''''''''''''''''            '''
+.  ..   . .......      ............      ................................            ..
+          =HHHHH=      -HHHHHHHH==          =   =      =   == ===========
+           BBBBB        BBBBBBBC
+            VV V        VVVVVVV
+                         AA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX-  -     =OOOOOOOOOOOMOMOMOOOOOOOMOO
++++++++++++XXXXX++=+++++XXXXXX+++++++++++++++++++++++++++++++++++++++++++           ++++==----- - - ------- -+
+'''' ''''''''''''     '''''''''' ''''''''''''''''''''''''''''''''''''''''            '''
+   .  ... .......      .........   .. . ........ ........................            ..
+           HHHHH=      =HHHHH-=              ==          ==   =    === ==
+           CBBBB        BBBBB
+            V V          VVVV
+                         A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-        +OOOOOOOMOMMOMOOOMOOOOOOOOO
++++++++++++XXXXX++++++++XXXXX++++++++++++++++++++++++++++++++++++++++++++           ++++==- -  - --- --------=
+''''''''''''''''' '''''''''''''  '''''''''''''''''''''''''''''''''''''''             '''
+  ..  .... ......      ........     ..  ........... ....................             ..
+           HHHHH=      =HHHH-                     =          = ==   = ==
+           CBBBB        BBBC
+            VVV         VVV
+                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-        =OOOOOOMOMAMMAOMMMMMMOMMOOO
++++++++++++XXXXX++++++++XXX+++++++++++++++++++++++++++++++++++++++++++++            =+++== -     -      -  ---
+''''''''''''''''''''  '''''' ''''' ''''''''''''''''''''''''''''''''''''              ''
+.......... ......     ......        . ................... .............              .
+           -HHHH       =HH-                                ==   =   = =
+            BBBB        BB
+             VVV         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ-       -+OOOOOOMOMMMMOMMOMMOOOOOOOO
+++++++++++++XXXX++++++++X+++=++++++++++++++++++++++++++++++++++++++++++=            ++++=+ -    -  -  -----=-=
+'''''''''' ''''''   ' '''''  '''' '' ''''''''''''''''''''''''''''''''''              '''
+...... ..  ......     .....     .  . ...  .........   .................              .
+ =  =      =HHHH       =H=                                     =  = =
+            CBBB        B
+              V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAA+   - -  1OOOOOOOOOOOMOOOOOOOOOOOOOO
+++++++++++++XXXX+++++++X+++++++++++++++++++++++++++++++++++++++++++++++-            +++++=----- ------=-==+==+
+'''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''             '''
+.......... ......     ...     ... ... .................................              ..
+=           HHHH      =-       =           =      ===    =  == ===== =                =
+            BBBB
+             VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZ=  - -- -)OOOOOOOOMOOOMOMMOOMOOOOOOO
+++++++++++++XXXX++++++++++++++++++++++++++++++++++++++++++++++++++++++=             +++++=-- --- -  -- -==+==+
+'''''''''''''''''    ''''  '''''''''''''''''''''''''''''''''''''''''''              '''
+.................     ...   .. . .. .. ...............................               ..
+   = =      -HHH=      =          =    =       =  = =  = = =  ===  ===
+             BBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA1=        )OOOOOOOOMOOOMOOMOOMOMOOOOO
+++++++++++++XXXX++++++++++++++++++++++++++++++++++++++++++++++++++++++-             ++++===- =-- -- -- - ==-=-
+''''''''''''''''' '' ''' '  ''''''''''''''''''''''''''''''''''''''''''              '''
+........... .....              .. . . ............ . . ..............                .
+ =   = =    -HH-                            =            = ==    ==
+             BC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAM1--       1OOOOOOOOMOMXMMMOOOMOOMOOOO
+++++++++++++XXX++++++++++++++++++++++++++++++++++++++++++++++++++++++-              +++++==- -     --- -= ====
+''''''''''''''''''' ' ''' ' '''''''''''''''''''''''''''''''''''''''''                ''
+........... ..... .    .       . . .  ........... ...................                .
+  = ==    = -HH=                           === =    =    =  =  == =
+             BB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMM)-   -  - 1OOOOOOOOMMMMMMOOOOOOOOOOOO
+++++++++++++XXXX+++++++++++++++++++++++++++++++++++++++++++++++++++++               ++++=---      --------====
+''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''                '''
+........... .....     ......      ................ .................                 .
+ = =  =     -HH-        =                  =         =        = = ==
+             CB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXOZ=   --   -ZOOOOOOOOMMMMMOOMMMMOOOOOOO
++++++++++++++XX++++++++XXX++++++++++++++++++++++++++++++++++++++++++-  -            ++++=---     --    ---=--=
+''''''''''''''''  ' ' '''''''' '''''' ''''''''''''''''''''''''''''''                '''
+........... ....      .......      .  .. .........  ...............                 ...
+ =    =   = =HH=       ---=                =  =        =       ====
+             CB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZXA+-         XOOOOOOOOOMMOAMMMOOMOOOOOOO
++++++++++++++XX++++++=+XXXXXX+-++++++++++++++++++++++++++++++++++++-                +++++=---  -    -- ==-==++
+''''''''''''''''' ' ' ''''''''  '''''''''''''''''''''''''''''''''''                 ''''
+................      .......      .   ............................                 ...
+=  =  == =   HH=      =------            === =        =  =    ==
+             CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZOM)-     -    1OOOOOOOOOOOOMMOOOOOOOOOOOO
++++++++++++++XX++++++++XXX+XX++++++++++++++++++++++++++++++++++++++  -              ++++-==-----  ---------+=+
+''''''''''''''''' '' ''''''''''''''''''''''''''''''''''''''''''''''                 '''
+................      ...........  ... ...........................                   ..
+     = = =   -H       =---=HH             = = ==   ==      = =  ==
+              C            CB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXAM)----       -AOOOOOOOOOOOOOMMOOOOOOOOOOO
++++++++++++++XX++++++++XX+XXXXXX++++++++++++++++++++++++++++++++++-                 ++++==-------  ----=--==++
+''''''''''''''''   '  ''''''''''''''''''''''''''''''''''''''''''''                  ''''                     '
+...........  ...      ............      .........................                   ...
+ = === = =   --=      =--=-HHHHH             === = =   =     = =
+                           CBBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAAAA+-       -  -MOOOOOOOMOOOMOMOOOOOOOMOOOO
+++++++++++++++X+++++=+++XXXXXXXXX++++++++++++++++++++++++++++++++                   +++++-- --- - -----=- ==++
+''''''''''''''''      ''''''''''''''  '''''''''''''''''''''''''''                   '''
+............ ...      .............      ....... ................                   ...
+  =          =-        =-HHHHHHHH=         ==          ==                           ===
+                         CCCCCBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1ZAX)-     - --  -MOOOOOOOOMMOMOMOOOOOOOOOOOO
+++++++++++++++X++++++++XXXXXXXXXXXX+++++++++++++++++++++++++++++-                   ++++=-=-  - - ----=-===+++
+'''''''''''''''''' ' '''''''''''''''''''''''''''''''''''''''''''                    ''''
+................ .    ............... .  .............. .......                     ...
+    =        =H=       -HHHHHHHHHHH             = =  == = ===
+              C         BBCCCCBBBBC
+                                VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXXM1- - ----   - =OOOOOOOOOOOMOOOMMOOOOOOOOOO
+++++++++++++++X++++++=+XXXXXXXXXXXXX+++++++++++++++++++++++++++-                   -++++++=-=- ---  -=-=-++=++
+ ''''''''''''''' '''  '''''''''''''''''''''''''''''''''''''''''                     ''''                    '
+   . ...........      .........................................                     ....
+       = === =H=       HHHHH-HHHHHHH= =   ==    =       =   =
+              B        CCCCC CBCBBBC
+                                  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXMA)---       -  =OOOOOOOOOOOOOOOMOOOOOOOOOOO
+++++++++++++++X++++++++XXXXXXXXXXXXXX+++++++++++++++++++++++++-                    -+++++==---==-- -=--==-=+==
+'''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''                       ''''
+.. ......... ...      ................ ......................                       ....
+       = = = =H=       -HHHHHHHHHHHH-       =  ==  =                                 ==
+              C         CBBCCCCCCBBB
+                                  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXZZX)-     ---  -  -OOOOOOOOOOOMOOOOOOOOOOOOOOO
+++++++++++++++X+++++++++XXXXXXXXXXXXX+--++++++++++++++++++++=-                     -++++==---- -----=-------==
+''''''''''''''''''''  ''''''''''''''''   '''''''''''''''''''                        '''
+ ..  ........... .    ................    ..................                        ...
+        = =   H=      ==HHHHHHHHHHHHH      =        =
+              B         CBCBBBCCCCBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAOOOOOOOOOOOOOOOOOOOMOXXXZA)-     --- -   -OOOOOOOOOMMOOOOOOOOOOOOOOOO
+++++++++++++++X++++++++XXXXXXXXXXXXXX+=  -+++++++++++++++++- -                     -++++===-  -----=-===----=+
+''''''''''''''''''''' ''''''''''''''''     ''''''''''''''''                         ''''
+... ............ .... ................     ...............                          ...
+         =    H=      =-HHHHHHHH-HHHH=     =        ==  =
+              C         BBBBBBBC CBBB
+                        V V VV     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZMOOOOOOOOOOOOOOMMMMOOOOO1- -  --1-     =OOOOOOOOOOMMMMOOOOMMOOOOOOO
+++++++++++++++X++++++++XXXXXXXXXXXXXXX+-    -++++++++++++=    -==--                =+++++=-=-    ----  -----=-
+'''''''''''''''''''''''''''''''''''''''      '''''''''''                            '''
+................ . . .................        .........                             ...
+  ==      =   H=      =HHHHHHHHHHHHHHH           == ==
+              C        CBBBBBBBBBBBBBC
+                        V  VVVV   V V
+                            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAZZ1MMOOOOOOOOMOOMOMMOOOOOA=----+1Z=- - -+OOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++X++++++++XXXXXXXXXXXXXXX+-       -=====-- -- -  =+=--                =+++++==-==--=====-===+--+=
+'''''''''''''''''''''''''''''''''''''''                        '                    ''''
+................ .   ..................                                             ....
+     = = = == H=       HHHHHHHHHHHHHHH=                                             ==
+              B        CBBBBBBBCCBBBBB
+                        VVVVVV    VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX111OOOOOOOOMMMMOMMMMOOOMOM=------+-    -+OOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++XX+++++++XXXXXXXXXXXXXXXX+-    -=++--==    -    --- =                =+++++==-==--=---====++==++
+''''''''''''''''' ' ''''''''''''''''''''                                            ''''
+............. ..      ..................                                            ...
+=   =   = =   H-      =-HHHHHH--HHHHHHH                                             =
+              C         BBBBBB  CBBBBBC
+                        VVVVV      VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)1))MOOOOOOOOMMAMOAMOOOOOOA---))----    -+OOOOOOOOOOOOOOMOOOOOOOOOOOO
+++++++++++++++X++++++++XXXXXXX+XXXXXXXXX+     +++++++=    -  ==++-=                =+++++-=+=---- --======+==+
+''''''''''''''''' ''''''''''''''''''''''      '''''''          '                    ''''
+................. . . ..................       ......                               ...
+          ==  H=      =HHHHHHH=-HHHHHHH-                                            = =
+              B        CBBBBBB  CBBBBBB
+                        VVV V    V VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1)+ZOOOOOOOOMAXOXZZOOOOMM1- -ZX--       =OOOOOOOOOAAAAAOMMOOMMOOOOOO
+++++++++++++++X++++++++XXXXXXXX++XXXXXXX+     +++++++=   -   =++=                  =++++=---     -  =-  -=---=
+'''''''''''''''''''''''''''''''''''''''''     '''''''         ''                    '''
+........ .... ...........................      ......                               ..
+    =         H= ======-HHHHHHH =-HHHHHH          = =
+              C         CCBBBBC   BBBBBB
+                           VV      V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZ11OOOOOOOOMAAMXXXMOOOAO1- -- --- --   +OOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++XXXX+++++++++XXXXXXXXXXXXX+     +++++++=        ++- -                ++++++=---------=--=====+++
+'''''''''''''''''''''''''''''''''''''''''      ''''''          '                    '''''                    '
+............. ...........................      ......                               ....
+      =  =    -H--=       =--HHH--HHHHHH=         =                                 =
+               C             BBB  CBBBBB
+                                   VVVVV
+                                    AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO))1ZOOOOOOOOOAAMAXZOOOOOO1-   -- - -   -+OOOOOOOOOMOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++++XXXXXXXXXXX-    +++++++=-      -+++--                ++++++=== ---==--=---+==+=+
+''''''''''''' '''''''''''''''''''''''''''      ''''''          '                    ''''
+............. ..........  ...............      ......                               ....
+=     ==      ====         ===HHHHHHHHHHH       =                                    =
+                              CBBBCCBBBBC
+                               VV   VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+)ZOOOOOOOOMMAMAXAOOOOOO+-  --   -   - +OOOOOOOOOMOOOOOOOOOOOOMOOOO
++++++++++++++++++++++++++++++++XXXXXXXXXX+    ++++++++       ---++-                ++++++==- -----+=-=-== -++=
+''''''''''''''''''''''''''''''''''''''''''     ''''''                               ''''
+............. .   ...... .. ..............     ......                               ....
+     = == =                  ==-HHHHHHHHH        = ==                                =
+                                BBBBBBBBB
+                                 VVV
+                                 A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO))ZOOOOOOOOOMMAAXZXMAMOZ=  =X1+    -   1OOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++++++XXXXXXXXXX=   -+++++++-          -                 ++++++===----====---=---===
+'''''''''''''''''''''''''''' '''''''''''''     ''''''                              '''''
+.................... .......  ............     ......                               ...
+ = =   = == = =                 HHHH-HHHHH     = =  =                                 =
+                                CBBB CBBBC
+                                  VV   VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)1OOOOOOOOOOMXMXXOOOMZ+- -1MZ=- -- - -1OOOOOOOOOOOMOMOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++XXXXXXXXX+   ++++++++--     -==                   ++++++==--- - --==-=--=-+++
+'''''''''''''''''''''''''''''''''''''''''''    '''''''                             '''' '                   '
+................. .........................    ......                               ...
+ ==  = == ===         = =       =-H-HHHHHH       = =
+                                  B CBBBBB
+                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1ZOOOOOOOOOMXZXZAOOOOA=  -1M+- --- - -ZOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++++XXXXXXX+-  ++++++++-      -+++                  ++++++===----==--=---=+++++
+'''''''''''''''''''''''''''''''''''''''''''    '''''''         '                   ''''''
+................ ......... ................    ......          .                    ..
+============        =        = = ==HHHHHHH=       = =                               =
+                                   BCBCCBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAOOOOOOOOOMXZZXMOOOM1- --XM)-  - -  -ZOOOOOOOOOOMMMOOOMOOOOOOOOOO
+++++++++++++++++++++++++++++++++++XXXXXXXXX+  ++++++++-      ++-                   +++++====-   --- -==-++++++
+'''''''''''''''''''''''''''''''''''''''''''    ''''''         '                    '''''                     '
+...........................................    ......                              .....
+====== =====       ==  =       ===-HHHHHHHH      = ==                               ==
+                                   CBCCCBBC
+                                         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOMMAMAMOOO)-- - -OO)=---  - -XOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++++XXXXXXXX+- +++++++=      =+-       -=           ++++++====-===++===+=++++++
+''''''''''''''''''''''''''''''''''''''''''''   ''''''                              ''''''                ' '''
+...........................................    ......                              .....
+========= == =  =        =  =  =  =-HHHHHHH     =   =                                =
+                                    CBBBBBB
+                                       VVV
+                                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXZZMMOM+  - - )MMA=-      -AOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++++XXXXXXXX+--+++++++=      =                      ++++++++===--===-=+==++=+++
+''''''''''''''''''''''''''''''''''''''''''''   ''''''                              ''''''                   ''
+............................................   ......                              ....
+===============     = =     ==  =  -HHHHHHH    === =                                =
+                                    CBBBBBC
+                                       VVV
+                                        AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXXZMMZZZ)-  - -+1+=---  -  -XOOOOOOOOOOOOMOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++++++++++XXXXXXX+--+++++++=                             +++++++====- ----=--=++=+++
+''''''''''''''''''''''''''''''''''''''''''''  '''''''                              '''''''                   '
+............................................   ......                              .....
+==== = == =           =   = =====   -HHHHHH    ===                                  ==
+                                     BBBBBB
+                                      VVVV
+                                       AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXXAMA+)Z)----   --       -- AOOOOOOOOOOOOMOOOOOOOOOOOOOO
++++XX++++++++++++++++++++++++++++++++XXXXXX+==+++++++=                             +++++++====- -===+=+++=++++
+''''''''''''''''''''''''''''''''''''''''''''  '''''''                              '''''''
+............................................  .......                              .....
+===-- = =  ==      =   ====  == === =-HHHHH     = ===                              ==
+                                      BBBBB
+                                      VVVV
+                                      AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOZMMM) -)=  - -  ---- --     MOOOOOOOOOMOOOOOOOOOOMMOOOOO
+++++++++++++++++++++++++++++++++++++++XXXX++- +++++++=                             ++++++=-- --=-++===-  =-=++
+''''''''''''''''''''''''''''''''''''''''''''  '''''''                              ''''
+............... ...........................   .......                              ...
+ ======== ===          =   = =      ==HHHH=     ==                                  =
+                                      CBBB
+                                       VVV
+                                        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOM1- -1=- -- --1Z)--      -OOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++++++++++++XXXXX+-=++++++++ -                          -+++++++=-====++==+---++==++
+''''''''''''''''''''''''''''''''''''''''''''  '''''''                              ''''''               '
+...........................................   .......                              ... .
+========= ===  =  =  = =     =   =  ==HHHH-    == ==                               ===
+                                      CBBB
+                                        VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)=--=1+-- ----1OZ=-    ---OOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++++++++XXX++-=++++++++=                -          -+++++++=++=-====----=++++++
+''''''''''''''''''''''''''''''''''''''''''''  ''''''''                             '''' '                    '
+...........................................   .......                              ....
+ ============    ==  == ==    === ==  =-H-=     =====                              ==
+                                        C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1--  +Z=---   -1A+-- -  ---OOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++++++++++++++XX++-=++++++++-                           -++++++++++---=-=---=-+++==+
+''''''''''''''''''''''''''''''''''''''''''''  ''''''''                             ''''''               ' '  '
+...........................................   ........                             ....
+========= === ==  = = ==    ==   =   == -H=    ======                              = =
+                                         C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1--   ++   - - -==  -  ----=OOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++++++++++XX+-=++++++++                            -+++++++=-----=---====+=++=+
+''''''''''''''''''''''''''''''''''''''''''''  ''''''''                             '''''
+............................................  ........                             ...
+=== ==========   = = ===        = ==  ===--    == ====                             ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=---=XZ)=--   --- ----  --=OOOOOOOOOOOOOOOMOOOOOOOOOOOO
+++++++++++++++++++++++++++++++++++++++++++++=+++++++++                            -++++++=-=----- -=+====++==+
+''''''''''''''''''''''''''''''''''''''''''''  ''''''''                             '''''
+.............................   ............  .......                              ....
+=  =======  =         ==  =       = = == ==    === ==                               =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)- -1MMOOMM+-   ++----------OOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++++++++++XX+-=+++++++-       ==                   -+++++==+==----==-===+====++
+''''''''''''''''''''''''''''''''''''''''''''  '''''''                              '''''
+.................... .......................  .......                              ....
+ ========== = == =   =     = == = ==   = --    =   ==                               =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)  --=+XA1)- - =AA+------ -=OOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X++++++X+++++XX++++++++++++++++++++++++XXX+=++++++++=                            =+++++==++=--==-=+==++++++++
+''''''''''''''''''''''''''''''''''''''''''''  '''''''                              ''''                    '''
+............................................  .......                              ....
+=-======-== = -H===  == = = = = ====  = -H-   ===== =                              ==
+               C                         C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=  -   Z1=---  =ZZ------  -+OOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++XXX++++++++++++++++++++++XXX+-=++++++++=                            =+++++++=+===+=--=====++=+++
+'''''''''''''''''''''''''''''''''''''''''''   '''''''                              '''''                   ''
+................................... .......   .......                              ....
+============= HHH===    =  ===        =HH-     ======                              ==
+              CBC                      CB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+--  -+X)=---- -AA+-----   =OOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++XX++++++++++++++++++++XXXXX+---++++++++=                            ++++++++++==-===-==+=++=++++
+''''''''''''''''''''''''''''''''''''''''''    '''''''                              '''''                    '
+..........................................    .......                              ...
+============= HH========  =      ===-HHHH                                           =
+              CC                     CBBB
+                                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZOOOOOOOOM=- - --Z)=-   -=XA)- --  --+OOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++XX+++++++XXXX++XXXXXXXXXXXX+   ++++++++                             ++++++++++=--+===--==+=====+
+'''''''''''''''''''''''''''''''''''''''''     '''''''                             '''''''
+.........................................     .......                              ....
+ = ========   -H=   = =--H-==--HHHHHHHHH-      ======
+               C         C     CBBBBBBBB
+                                  VVVVVV
+                                   AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1+MOOOOOOOM+---- =1+  -  - +A=-- - ---+OOOOOOOOOOMOOOOOOOOOOOOOOOOO
+++++++++++++++XX++++++++XXXXXXXXXXXXXXXX+-    +++++++                             ++++++++=- =-=-=-==-==++==++
+'''''''''''''''''''''''''''''''''''''''''     '''''''                             '''''''
+............ ..... ......................     .......                              ....
+== == ======  HH==     =HHHHHHHHHHHHHHHH=       === =                               =
+              BB        BBBBBBBBBBBBBBBB
+                         VVVVVVVVVVVVVV
+                          AAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+-OOOOOOOOO1--  -+A+-- - =)XO1 -=---=-)OOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++X+++++++++XXXX+++++++XXXXXXXXXXXXXXXX+-   -++++++++                 =          ++++++++=++==-==-====+=+==++
+''''''''''''''''''''''''''''''''''''''''      ''''''''                            '''''''   '
+........................................      .......                              ....
+= =-====== = -HH-      =-HHHHHHHHHHHHHHH        =====                               ==
+              BB         BBBBBBBBBBBBBBC
+                         VVVVVVVVVVVVVV
+                          AAAAAAA A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ--OOOOOOOOOM-   -+A1--==--1MO1----=-=-1OOOOOOOOOOOOOOMOOOOOOOOOOOOO
+++++X++++++++XXXX+++++++XXXXXXXXXXXXXXXX+-   =++++++X+                 -          +++++++++++==- ---=+=+++++++
+''''''''''''''''''''''''''''''''''''''''      ''''''''                            ''''''''                   '
+........................................      ........                             .....
+====-========HHH-===   =-HHHHHHHHHHHHHH-       =  ==-                              =
+             CBB         BBBBBBBBBBBBBB
+              VV          VVVVVVVVVVVVV
+                            AA       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-=OOOOOOOOOO1 -  1A+------==X1=--=----1OOOOOOOOOOOOOOOMOOOOOOOOOOOO
++++++++++++++XXX++++++++XXXXXXXXXXXXXXX++    =+++++++++                           +++++++++++=--- --======+=++
+''''''''''''''''''''''''''''''''''''''''      '''''''''                           ''''''''''              '  '
+........................................      .........                           ......
+===========  HHH=  =    -HHHHHHHHHHHHHH=       ==== ==                             ====
+             BBB         BBBBBBBBBBBBBB
+              VV         VVV  V  VV VVV
+                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM= -OOOOOOOOOOO+  --1)))=----)X)--------1OOOOOOOOOOOOOOOMOOOOOOOOOOOO
++++++++X+++++XXXX+++++++XXXXXXXXXXXXXXX++    =+++++++XX+                          +++++++++++=--- =-==-=++=+++
+'''''''''''''''''''''''''''''''''''''''''     ''''''''''                          '''''''''                  '
+........................................      ..........                           ....
+=======-==  =HHH-===== =-HHHHHHHHHHHHHH            ==--                            ==
+             BBB         BBBBBBBBBBBBBB
+             VVV          VV VV  V VVVV
+                                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1- -OOOOOOOOOOOA-  =ZAOO= - +AZ=- -----=XOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++X++++X+++XXXXX+++++++XXXXXXXXXXXXXXX+=    +++++++++++       ==                 +++++++++==+-------===++=+=+
+''''''''''''''''''''''''''''''''''''''''      ''''''''''                          ''''''''              '
+........................................      ..........                           ...
+===-====-== -HHH-= =  ==-HHHHHHHHHHHHHH           = ====                            =
+             BBB         BBBBBBBBBBBBBB
+              V           V    VVV VVV
+                                     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)- +OOOOOOOOOOOX   -))1Z-----ZMXZ+= --=-AOOOOOOOOOOOOOMOOOOOOOOOOOOOO
++++X++++++++XXXXX+++++++XXXXXXXXXXXXXXX+-    +++++++++++                          +X+++++++++== -=-===++=+++=+
+''''''''''''''''''''''''''''''''''''''''     ''''''''  '                          '''''''
+........................................     ........  .                          ..... .
+===-====== =HHHH-=  = ==-HHHHHHHHHHHHHH=       = = =                               -= =
+            BBBB         BBBCCBBBBBBBBB
+             VVV          V      VVVVV
+              A                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ- 1OOOOOOOOOOO)- -=1===-  -=1MXA)=- --=MOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++X++++XXXXX++++++++XXXXXXXXXXXXXXX=    +++++++++=-                          +++++++++===--=--====+++=+=+
+''''''''''''''''''''''''''''''''''''''''     '''''''''                            '''''''
+........................................     .........                            .......
+ = === -====HHHH-=      =HHHHHHHHHHHHHH-       == ==                              ===
+            BBBB         CBBBBBBBBBBBBB
+             VV              V    VVVVV
+                                    A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+-ZOOOOOOOOOM1= --+)-=- -- -Z1------===MOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++X+++XXXXXX++++++++XXXXXXXXXXXXXXX+    +++++++++                            +++++++++====+=-============
+'''''''''''''''''''''''''''''''''''''''''    '''''''''                            '''''''
+.........................................    ........                             ......
+=======-=  HHHHH-==    ==HHHHHHHHHHHHHH-      =======                              ==
+           CBBBB         CBBBBBBBBBBBBB
+            VVV             VVV V VVVVV
+                                    AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+MOOOOOOOOO=-- -=1O+=  -- +OM)- ---=-=OOOOOOOOOOOOOOMOOMOOOOOOOOOOO
++++++++++++XXXXXX++++++++XXXXXXXXXXXXXX++-   ++++++++-       -        -          -+++++++++=-=- -- ======++===
+'''''''''''''''''''''''''''''''''''''''''    ''''''''                             ''''''
+.........................................    ........                             ......
+= =======  HHHHH-       =HHHHHHHHHHHHHH==     =  ====                             ====
+           BBBBB         BBBBBBBBBBBBBB
+            VVV           VV  VVVVVVVVV
+                               A    AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=--)++=+-- - --ZMOOX)---=--MOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++XXXXXX++++++++XXXXXXXXXXXXXXX++=-+++++++++=                 =-         ++++++++===+=------=====+=-=
+''''''''''''''''''''''''''''''''''''''''''  '''''''''                             ''''''''
+.........................................   .........                             ....
+=  ====== =HHHHH-=  == ==HHHHHHHHHHHHHHH      =======
+           BBBBB         CBBBBBBBBBBBBBB
+              V           VVVVVV   VVVV
+                            A        AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)------ ---- -==++)+)-----=MOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++XXXXXXX++++++++XXXXXXXXXXXXXXX++++++++++++++                            +++++++++==-==---=====+++==+
+'''''''''''''''''''''''''''''''''''''''''' ''''''''''                             '''''''
+.........................................   .........                             .....
+ = ====== HHHHHHH=  == ==HHHHHHHHHHHHHHH=    ==== ===                              =
+          CBBBBBC        CBBBBBBBBBBBBBB
+            VVV           VVVV V  VVVVVV
+                          AA        AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+  - --------   - - ------=OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++XXXXXXX++++++++XXXXXXXXXXXXXXXX++++++++++++                            -+++++++=+=+==+=====++=+=++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''                             '''''''                    '
+.....................................................                             ..... .
+= = = == =HHHHHH-    =  =HHHHHHHHHHHHHHHH=   ========                             ==
+          BBBBBB         BBBBBBBBBBBBBBBB
+              V           VVVVVVVVVVVVVV
+                           A      AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO====--+))---- -=-------=---OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++XXXXXXXX++++++++XXXXXXXXXXXXXXXXXX++++++++++-                           -+++++++++++++=-=+=-=-=++==++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''                             ''''''     '           '  '
+.....................................................                             .....
+=========HHHHHHHH   = = =HHHHHHHHHHHHHHHHHH==========                              ==
+         CBBBBBBC        BBBBBBBBBBBBBBBBBC
+          VV VVV          V VVVVVVVVVVVVVV
+          A                   A   A   AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+- ---XM1=-=--=1Z==---=---+OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++X+++XXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXX++++++++-                           =+++++++++++=++=+++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''                             ''''''' '             '   ''
+.....................................................                             .......
+=====-== HHHHHHHH= ==== =HHHHHHHHHHHHHHHHHHH-========                             ===
+         BBBBBBBC        BBBBBBBBBBBBBBBBBBB
+           VVVVV          VVVVVVVVVVVVVVVVV
+              A            A   AAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+-----ZZ)--=--=ZM1------- -OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++XXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXX++++++++=                           -++++++++++=++====++=+=++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''                             '''''''                 ' ''
+.....................................................                             .....
+======= =-HHHHHH-==  =  =HHHHHHHHHHHHHHHHHHH-========                             == =
+          BBBBBB         CBBBBBBBBBBBBBBBBBB
+          V V VV          VVVV VVVVVVVVVVVVV
+                                A AA  A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-=--1Z)-=- --ZA)-=--=---)MOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++XXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXX++++++X++-                           ++++++++++=++-===++++++=++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''                            '''''''                 ''''
+......................................................                            .....                      .
+======= =HHHHHHHH= =   ==HHHHHHHHHHHHHHHHHHHH======-==                            = ==
+         CBBBBBBC        CBBBBBBBBBBBBBBBBBBC
+          VVVVVV          VVV V VVVVVVVVVVVV
+                          A      A A A  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1--=)Z1=----=AA=--------)OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++XXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXX+++++X++X++                         =++++++++++++=====++++=-+++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''                           ''''''    '        '       '
+.......................................................                           .....
+==== == =HHHHHHHH==  =  =HHHHHHHHHHHHHHHHHHH-=====-==-=                           ===
+         CBBBBBBC        CBBBBBBBBBBBBBBBBBB
+          VVVVVV           V    VVV V VVVVVV
+            A                          AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)--=ZZ)=---=)XZ=--==--- +OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++XXXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXX+++++XXXXX+                         ++++++++++++++=+=++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''                          ''''''''          '   ''   '
+........................................................                          .......
+== === ==-HHHHHH-=======-HHHHHHHHHHHHHHHHHHHH=====---HH                           ====
+          BBBBBB         CBBBBBBBBBBBBBBBBBBC        CC
+          VVVVVV          VVVVVVVVVVVVVVVVVV
+                           A      AAA    AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)--))+=+=--=)X1=-=-=----)OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++XXXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXX++++++XXX+-                         ++++++++++++++++=++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''                           '''''''         ''  ''   ''
+.......................................................                           ......
+======  =-HHHHHH-    == -HHHHHHHHHHHHHHHHHHHH======---                            ==
+          BBBBBB         BBBBBBBBBBBBBBBBBBBC
+          VVVVVV          VVVVVVVVVVVVVVVVVV
+           A               AAA      AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX-----=1+--=))---------=)OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++XXXXXXX++++++++XXXXXXXXXXXXXXXXXXXX+++++++XXX+                         ++++++++++++==+++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''                          ''''''''       '  '    '' '
+.......................................................                           ......
+== ===   =HHHHHH-    = ==HHHHHHHHHHHHHHHHHHH-=======-H-                           ===
+          BBBBBB         BBBBBBBBBBBBBBBBBBB         C
+           V VVV          VVVVVVVVVVVVVVVVVV
+                          A  A    AAA  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO) ---1A)---------------)OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++XXXXXXX++++++++XXXXXXXXXXXXXXXXXXXX++++++++XX+=                        +++++++++++==++++++=++++++++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''                          ''''''         '    '' '''
+........................................................                          ......
+ == ==  = HHHHHHH===== ==HHHHHHHHHHHHHHHHHHHH========HH=                            =
+          CBBBBBC        BBBBBBBBBBBBBBBBBBBC        CB
+           VV VV          VVVVVVVVVVVVVVVVV           V
+                           A   AA      AA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX--+)XM)---===-------=-ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++XXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXX++++++++XXX+                        +++++++++++++++=+++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''                        '''''''  ' ' '  '  ' '' '' ''
+.........................................................                         ......                     .
+===== =  =HHHHHHH==  = =-HHHHHHHHHHHHHHHHHHHH========HHH                          ====
+          BBBBBBC        CBBBBBBBBBBBBBBBBBBC        BBB
+           V VVV          VVVVVVVVVVVVVVVVVV          V
+             A             A        A A AAA           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1ZZ1Z+=-=)Z)+======--1OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+X+++++++XXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXX+++++++XXXXX+                       +++++++++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       '''''''''''    ' ' ''  ''''''
+.........................................................                         .......                   ..
+-=-= =   =HHHHHH-=== ===-HHHHHHHHHHHHHHHHHHHH=======-HHHH                         ====
+          BBBBBB         BBBBBBBBBBBBBBBBBBBC        CBBC
+           VVVVV          VVVVV VVVVVVVVVVV           VV
+            A  A            A     AAAA  AAA           AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOMZ1=+1MOX+--===--1OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++++XXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXX+++++++XXXXXX+ - -       -          +++++++++++++=+++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      ''''''''' ''  '  ''     '' ''
+...........................................................                       .......
+-=    =  =-HHHHH-=  === -HHHHHHHHHHHHHHHHHHHH= =====-HHHHH=                       ===  =
+           BBBBB         BBBBBBBBBBBBBBBBBBBC        CBBBC
+            V V           VVVVVV VVVVVVVVVVV          VVV
+                           AA      AA   A A           AAA









