1
 =+1)+++=)+)+=-=-==+=====+====-------=-++++=+==)+))))1)Z)11Z1ZZ1)Z111X1Z1Z1Z1Z1XXXZXZZXXAMAAXAAMMOMOOOMMMMAMMOOOMOOOOOOOO
+                                                                                                - ---       --- =-=-===-
 --++)+==+++=+-+====---- ----  - - ----=-==+-=---+-++)+1))+)+)))+)+1)1)Z)))1ZXZXZAXXXXXAXMAMAOMOOOOOMOOOMMMMOOOOOOOOOOOOO
+                                                                                            - ----- ---    -=-=-=-======
  -----------=---=---- ------- -- ---------=--------==-+==-==+++=+=++))1+++1ZZ1ZZZ1XAXZXXAXMAMOOMMMOMMMOMOOOOOOOOOOOOOOOO
+                                                                                             --   -   - ----=-----=====-
   -- -- ---  -- ----------=-=-----=-=-=--=+==-===-=-+=+=+-=++++=)+++)+1)1+)=))1)1)Z1Z1Z1Z1Z1XZXZZZAZXXAMMMMAMMMAMMMMOOOM
+                                                                                                                    =--
  ---- -  --   --------=-=+++++++1)++)))11)))++)+==+=+=))+--+++)++=+=+==1)++1111)Z1Z1Z1ZZAZZ1XXOMMXMAMAMAMXMMMMMAMAMXMXXX
+                                                                                              -
  --=----- ----- --- =-==)+)+11))Z11)Z1)11)1)1)1++)+=)=+)+=+==)++)+)))))11)1)))Z11111Z111Z1ZZAZAZAAAZAXZZXZZ1XZ1111ZZZ111
 --)++==--==-=-=====-==+=++)))11)1)11Z11))))))+)++++===+==---=-==+=)+)+1)1)111)1)1)))1)1)11)+)111Z))))))))++=)=+-+=+-+==-
  -1+1++==+++)+)++++=1++++=+=)))+)=))++==+=+=====-------=----====-=+))+))1+1)1+))++)++======-+=++=-=-==- - ----------==--
 --==--=-+=)ZZ))))+1+))+++++++==++=+-=-=-=-=-=--= ----===+=+=)+)++)))++++))Z1+=+===-=--- -----  -------- - --------=-----
 ----------++)=1))))))))=)++++===--===-=---=---=-+=+11+)+1))11ZZ1Z1111)++)))+)+===------- ------   ----   -------------=-
  ---      --==-==-+-+=+=+=+====-==--==+=+==++-+=+=))1)))1)111)1+)+)))======-=------ ---  ------ --  -  --   ----=-- =-=-
 -==--- -  --- ----------= -==-==)++==+)+)+))1))+1++=+=)+)+)+)++=====--=---- ---  ----- -- ---- --- - - -----=-=-===-+==-
 --=---- --- -      -- --------==)+))1)1)11)))=+))=------====- -----------          -- -  ---------- ----- --=-+==+===-=-
 --==----- --    --- --- --= --==1+)+1)1++)1+=====-- ------- --- ----- --- -        -   ----------------== --+=)+=-=-====
  ------ - =---=-----=---====--=-============----   ---- - - ----- ---------   - - -    -----=-=-----=-=-====)+)++====-=-
  -=----------=======+=--=---=-------=-=- --=- - - ---- -   ---  --=------------ -- -  ----===-++======--===-=-+===)+)+))
 --=- ---- ---==-=-+-+-=====------ - ----- = = ------ -- - - --- ------------ ---  - -------=-=======--=-=-=--=+++=))XX1)
 --- -- -  - -    -------  ---- --  ---- ---------=--=-=-=---------------=-=---=-=-=-=-=-===-=====-=-=-=-=-=-=-==+=1+ZZZZ
 --==--- - -   -  - -----------  -   - --=-+-=--====-+=)+++++===-==+=+=+=+++====-===--====--====-=-=-=-=---=--=====)+Z))1
 --===-- ----- -    -- -- -- -     --------====++)+111111Z111111)1)Z1Z)11111+1=)+)+===---=====----========-===---=-==+===
 =+1=+=---- -------------- ------  ------------=+)))+Z1Z)Z111Z1Z1XXAXXXXZXZZ11)1)1)1)+-+1)+)=+======-=-----=-=---=====-==
 =+)+)=+===----=---------- --- - --------=-=-=-==)=++)+Z111Z1AZX1XZAZAZZZXXZZXZXZ11)+1)1)1)Z))=)++=======----=-=------ --
 =+11)))+)+)=)===+-=-=---- ---- -  --- ----------===-+=++)+)))+)))111ZZZ1ZZZ)X111)))+1+)+)++++++===+-=-=-==-=--=-- - ----
 +)Z))))=++)++===-==--- ---------- - - ------------=-=---=-========+=+=)))+)))++=+===-====---------=---- --- ----- ------
 ++1)1=)=-===+-=-=------ ------ -----------  - -  - -------- - -------==-=-= =-------------- ---- ----  -----=-=-=-----=-
 ++1)++=-------- --- ------=-----------------  --  - ---   -  -   ---=---------------- -    ---- ---- -------)=+=+-+====-
 -=+=+=----- - - --  ----- ----- ------------- ------ -----        ----------- ----- -    -  ---   - ----=-==+-====+==-==
 --=-=--------- ---==----=-=======-=-----=---=-- -- -- -       - --------------------  --- -- -  ------------===---==+=++
 --=====------==-+-)+++++))11Z)1)11)++==-=------===---=--  -   ----=-= -------------   - --- --- -----------====---=-==+=
 --+=+=+-)1))))+=++1)1+++11Z1ZZZ111Z)1)+==-==--===-=--=------- - --=------ --  - - - ---- ------ -  --  -----------  ----
 =+1)))1+1))))))+)))++))+1)1)Z1ZZZ1ZZ1+1+)=----=--==---==--------=-----=-=-- -- -  -----  --------- -- --------=---------
 )1XZZ1X1))1+1++))+)++=+))1))1)1)11111+)=)=-=--=-----=-==+-===-==+==--===-- --- ---- --- ----=-------------- ------------
 +1ZZ1)1++=+====---=-- --===)++)-=-+-=-- --- ----=-- -----==------- ------- -- --  - - --  ------- --- ---  ----- -------
 1ZAXZ1+++=+==------ ----- --=-=-----= --------------+==-=-------------------=- ------ -- -------=------- -----=-----=---
 ++X11++=====----- ---- ---  --------  --   --  -- ------=-- --=------ ----- -  --------- ---===-===---------=--=-==---==
 -=)+1+==+=----- -------- ------ --- - ------  - --- --------------- - ------= - ------------=---------=-=-====++)=+=)++-
 --+)++=-------- - --=----------- ----- -     - - - - -----   ----------- ------ ----------=---=-------=-----==))Z)Z11=)+
 --+=+=+=--==+-===------ --=-- - --- -----    ------=-------- -----=====---  - - ----- ---==-====--=--===-=++11MAAAAXAZZ)
 --++++==+==-+=+-+-----=- -=---- -  --- ----- - ---=-=---- =---------------------- ----=--=====+===--=-==+=11XAAAOMOMOAX1
+                                                                                                                - - -
  -)))=+=+==+)+++)==========---- ----- --=----  -----=---- --- ------=---------- ------=-++)))))))++=--=-==+1ZXMAMMOMMAMX
+                                                                                                                  -
 --)++===--==+=+=+===+-+++==-=---=-=----=+=--------------=----------- -- --=---=------==)))1)Z11))=+-=-----==11Z1XAXXXZMZ
 --===-===-====----==-----====-------==+=+==-===-------- ==--------=-- ----=---=-====))11ZZZZZ1X1)++==-  ----=-=-+++)111)
 --)+++==+-===-=-=---------=-=====--=======+==-------=---=---==--=-===-=-----=-=--=))11XZXXXZXXAZ11)+)== -----------==-=-
 --=+)==--===-==---=-- ----------=-=====-=-=-===----=--=-------=-=-==---------=--==)11)1Z11XZZ1))Z)+++++==-=-=-=-----=-=-
 ---++-------===-=-==+=+-==----=---==-------- ---- -----------  ---- ---     -   --==)++===)+-=+=+=-=)=++++-==---=-------
 -==++==-----=-=---==+=====--==---====-=---- -------=--=--===--  =----------  -------=-=-=-===-=---===-==+==-)=+=+=)=+-==
  =-=+=--------=---------=-==+-===-=-==+==-----=-------=--------- - --- -- ----------- ----- - ----------====+-====1)1)++
  -+=-=----=-=---===-------===---=--==-=-=-- --=----====------  --------- -- --=-- ------- ---------- -- -=-==-=-+-+))+))
  -+==-----=---===---====-=---===--==++++=-----====----  - ------------- - ---------- -------- --       -----=-=---+===)+
 -=1)+-----==-=--=-++===-=-=-=-------+-+-==--=----=---  -- - - - --------- -------------   -- ---    -  -------=-=-====+=
 =+1==-------=-- --====-------=----=======---=------    -   -   ---- -- ------ ----- --  - --  -  ---- ---==---=---- --=-
 =11Z1+)==-=-+==-==+++-+-=--==-==--=-----=-=---==-- -- ------ ---=------ ----------=---------------- ---=+==---=---===-=-
 =+Z11+))+===+-+=+===+=----------=-----------=----------------- ---- -- ----  -- ------=---===-==+)++++Z))Z1+---  -------
 --+=+==---=-==+++==-+------------ ------ - ---==----==-==-- ------- - - ------- ------- ==+==+)111ZZXZAXZ11++==-=--=+==-
   -=+==- ---=---=------------ -------   - ------=-=-----------  -- ---- -----  -------- -==-=-==))1Z11ZZ1)1++=====+-=-==
  --==--=------=----- -- - --=-- --- ----- ----+-=-----==----- - --- --=---- --------==--=-=-=-==+=)+))1))+)=+++=========
  --+=-----= ------- -=------------=-=----------==---- --------- ------+==-=------ ----=-=-=------ =---=-=-==+===+==-=-==
 --=-= --------=---=-=-=-=---==---=)--=++++)+++))+=)++=+== ---- - ---=-===-=-=-- - ----------= ----- ----=-+++++=+=+==-==
 --+---- - ----=-------=---=-======+=)=++)1Z11ZZ1ZZZZZ)1))==-----------=-==--------- --- --- ----------=-+=++)))))++=+-==
  ----    -- --------=-=-=-===---========+=)+111ZXZ11ZZ11)+=-----    - ------- ----- ------- --- -  -----)==)111111111+++
 - ------- -  --- ---==--------==+=--=----=--=)1))1))1)1))+===-=-------- =-- --- ---- ---- --     ------=====Z1)))1Z1Z11)
 --==- ----------====+))+1))))1))1))=+==-=--=--+=)))+)+ZZ1)))++)++=----=-=---  --  --- ----  --  ------ -- -++++=)+)+))))
 ))XZ111+))1+))111ZZZAAOAMMOMMMMAMMMAAXXZ11))1)1)ZZ1ZXZAXXXAZZ1XZ1ZZ)1))==--------- - ----- ----------------=-+=-+=)+====
+                      -   -
 ZMOOOAMAAAMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAAAMMOMMMOOOMOOOOOOOOOMAAAZZ111)++====-----------=-- =-=-------=-=-=---=-=---
+  ---         ---===++++++++++++++++=-----      -   --= ---------
+                    ''' ''''''''' '
+                        . .     .
 XMOOMMOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOOOOOOOOOOOOOOOMOMOMMMAMMXAXZ11+=-- ----- ---==---- --------------- =-
+  --  - - --=-==+++++++++++++++++++++++++==-==-   ----===-+=++=-= = -
+                ' ' ''''''''''''''''''''
+                    ...........     . .
 11AXXAAXXZAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOMMOMMOMMAMXAZ1)+==---------=------ ---=---  -------
+            ----====+=+=+=+++=++++++++++=-===---- - --==--++++=-+-=-=  -  -
+                      '   ''      ''' '
+                                    .
 -=)11)))1)1ZMMMAMAMMMAOAMAOOMMOOOOOOOOOOOMOOOOOMMMMAMOMOMMOOOOMOOOOMOOOOMMOMOOOMMMMAAXZ11)+++=++++)++===+-=====---- ----
+                      -   --  ----=---=-- -----      - -  ---- ---- =---  - ---
 --=++===1)))ZZAZZZZZXZXZZZXZAAMMOMMMMAMMAXAAAMMAAXAAAXMAAAAMMMOOMMMOOMOMMOOMMMOMMAMMMAAXXZX1ZZ1111Z1111)11)=+===--------
+                                -                             --   -- -  --   -
  --=----= =)+++11)+)))++))))Z1AXX11111111)1)))))1)1)1++)))1)Z1Z1XZAXAXXZXXAZXXXZAZZ1XXXXMXMMMAOAMAMAAXMXAXAX1ZZ)1+)=----
+                                                                                              -
 --==)====--====++==--==-==+)1))))+=++++==-----=-------=-==++++))111)+))+111ZXZZ11)1)Z111AXAXMXAAAXAXAAMMMAAAMAMXX1Z))+==
 -=)++=-=====++)+)))))++=+=)+)+)1+++=)+++)=--=---=-+-==)++=))))1ZXZZ11+)+)++=+++=+=+++==+111)ZZXXXZZZXXAXMAMAMAMXMAAZXZZ1
 =+1)++==+))+++1)Z1ZZZ11)1)))11ZZZ11)Z1X1Z1Z1Z11)Z1Z11ZAXXZAAMMMMOMOMOXXXXZ1))==-===-=---===-+=)++=++))))1Z11ZZAAAZXZZZZ1
+                                                                - - -
 -=))+==-=-====))1)Z1Z))+))1+Z1ZZX1Z)ZZXXAXAAMMMMMAMXMMOMOOOOOOOOOOOOOOOMMMMZX))++-==----=-------- --=---==+)+)++++)=))))
+                                                      - --==++++++++++=
+                                                            '   ' '''
+                                                                  .
  =++==---===+=+)111)1)1+1111ZZXZXXMXMAMMMMOMOOMOOAOAOMOOOOOOOOOOOOOOOOOOOOOOMMMXA1Z)1=+=====+==-+-===---=-=-=-=---+++==-
+                                          - -- -- - - --=-+++++++++++++===+-
+                                                            ''''''' '
+                                                            .   ...
 --)++---===-=-====+++++=++++))11Z1Z)Z1ZZZZXXAAAAMXAAAAMMOMMOOOOOOOOOOOOMOMOOOMMAXZX1Z1Z1ZZZ1111)1)1+)++===)++===+=))11))
+                                                        -  -=-=-+==---= = =--
 - =+----------------=---====)+====+=)))11)1111Z1111)1)XZXZMAMAMAMAMMMAMXMAOOMZXZZ1ZZZ1XZXZXZXXAZZ11ZX1Z1Z1XZZ11)1ZXXMMAA
+                                                                          --
  ---=-- -   - - - - - - ----=---=--=++)===+)+==---=---=-+)))++))1)ZX1ZZZZ)ZXZ)11Z1ZZXXXXMMAAMMMAAXMAOMXXAAMAMMMXAAMOOOOO
+                                                                                                    -              -=---
 ---==-- -  -- --- ----    -  - ---++)))))+1))=+==---=--===+=====)+))+))111ZMMZZ1XZXZXXAXAAMMOOOOMOOOOMMMMMMMOMOOOOOOOOOO
+                                                                                            ---- ----       - ----==+=+=
  --==-----=== --------- --- -   --=+11Z11ZXZXZ111))))))+)=+==-)+)+Z1))11ZMOOMZXZXZXZXZZXAAAAOMMMMMOMOMMMOMMMOOOOOOOOOOOO
+                                                                          --                -     - -   -   ----==+=+++=
 ==Z11)1)11111))))+)+====++)=+===+)ZZAAAAXAAXMMMXMAMXMMMXZ11)Z1AXMAOMMAAAMMMOMXXXXZXXXZXZXZAXAXMAAAMMOMMMOAMOMMOOOOOOOOOO
+                                                                  -        -                        -   -  -  --=-+=+=+=
 1XXAOAMMMMOMMMMXMMAAXXMAMMOMAAMAOOOOOOOOMXAXMMOMOOOOOOOMMXXXOOOOOOOOOOOOOMOOOMMMMAXZXZX1ZXAXXZX1XXXXXZXXXXAMMMMMOMOOOMOM
+    -     -               -     --+-=-=-      - --+=++=     --====+==---- ===                                   - --- -
 ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAAOOOOOOOOOOOMMOOMOOOOOOOOOOOOOMOOOOOOOOOOMOMMMAMMMAXZAXXZAAZZZ)ZZMMMAAMMAAXMM
+  --=--=+=+=+====++=+-+++++++++++++++++=-   -=+=+=++++=  -- +++++=++++==- =++-=-=--- -
+                       '''' '' ''''   '           ''         ''   ' ''
+                       .  . .     .   .                       .     .
 ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOAMAXXMAAXMXZ1Z)11XAMAMAAZX1ZZ
+  --+==++++++++++++++++++++++++++++++++++---+==++=++++=-- --+=+++=+++++---+++++-+-+==--   -
+        ''''''' '''''''''''''''''''''''''                     '   ' '       '
+            .     .....................
+                  =   ====  =    = =
 1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMAOMOMMOOOMAMZ)+)XMMMMOMAXMZ
+  -=+++++++++++++++++++++++++++++++++++++++++++++=++++==+-+=++++++++++++++++++++++++++++= -   - -  -=-            -
+    ' '''''''''''''''''''''''''''''''''''''  ''   ' '       ' '''  '''''''''''''''' '''
+        .................................                       .   ... .....       ..
+             == = = =      = =        =                             =     =
 )ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMOOOOOOOOMX+-=ZOOOOOOOMOM
+   -+=+++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++-=--     --+-===-      --===-- -
+       '''''''''''''''''''''''''''''''''''''''''' '''''''    ''''''''''''''''''''''''''
+          ..................................  . .  .. .      ..   . ......... .   ...
+          ===  ====  ==   ===      =      =                       =    = ==
 XXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOMOOOOOOOOOX)-+)OOOOOOOOOO
+  --+==---++++++++++++++++++++++++++++++++++++++++++++++===-+++++=+=+++++++++++=+=++++=-=-=   - ----=-=--     --+=+==---
+          ' '''''''''''''''''''''''''''''''''''''''''''                ''''''''    '''
+            ....... ......... ...............   ...                     ....        .
+               =        =                   =
 MOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOMMMOMOOOOOOOOOOOOOOOOOOOOMOMMOMOMOOOOMZZ1AMOOOOOOOMMM
+ -==+=- - --==+=++===++++++++++++++++++++++++++++++++++==- ---=---=   - ++++=---=-+++++=+--- -  - - ----      =====-=
+                      ''''''' ''''''''''''''''''''''' '                 '''         '
+                        . ... ... ..... . . .   ... .                    ..
+                          =        ==       =
 MOOOOOOOMMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMOOMMMMMMOOOOOMOOOOOOOOOOOOOMOOOMOMOMMMOOOAMMOOOOOOOOOMMX
+ -+=+=--  --- --=-+-==+=++++++++++++++++++++++++++++++=+---- -- --      =+++- --=-=-=-+++== --- - -   =--   ==++==+--
+    '                   ' ''' ' ''''''''' '''  ''''''                    ''           '                       '
+                           ..   ........  .                              ..
+                                   ==
 MOOOOOOMMMAXXXOMOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOOOOOOOOOMMAMMOOOMMAMAMOOMMMOOOOOOOOOOOOOMMMOOOOOOOOOOOOOOOOOO
+ -+++++       - --- - ==++=++=+++++++++++=+++====-+== --= ----===--     ===      --   =++----==----   --====+++++===+=--
+  ' '                         '''''''''                                                                     '
+                                ..... .
 AAOOOOOOOMAZXXZZOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOMOOOOOOAMMAXXAMMMOOOOOOOOOOOOOOOMMAOOOOOOOOOOOOOOOO
+  ==+=+-=       --- --===++=+=++++++++++++=-===---------= =++++++++-= --=---          ----=---+-=----   --==+===+==+++++
+    '                       '   '''''''                     ' ' '                                                   '
+                                  .                             .
 ZZMOOOOOOOOAX1)=1ZAAMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMAAXXXAXAMOOOOOOOOOOOOMMX1XAOOOOOMOOOOOOOO
+   --=+=---           ----=-+++-+++++++++===++===----==+++++++++++++====++= --          ----+++=+===      --==- --=+++++
+                                  ' '                       '''''''                                                 ''''
+                                                              ...                                                   .
 ))AXMMOMMOOOOZ+=+)ZZAZMXMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMXAXXZXAAMOOOOOOOOOOOMZ+)ZMMOOOOOMOOOOOO
+      -  -+--              -===---+++++++=+++++=+++=+++++++++++++++=+=+-=-=--             ---=+-+====       ----- =+++++
+                                  ' ''      ''  '     '''  '' ''''                                                 '''''
+                                            .                                                                         .
 -+ZZMAMXMOOOOOMXXXXZAMMAAXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOOOOOOOMMAAZXMMMMOOMOOOOOO)=+XMMZAOOOOOOOOOO
+         -+++-              =-+++++++++++++++++++++++++++++++==+++++====-   --+++=-          -= --==--        ==++++++++
+          ''                  '   ''''''''' ''''''' ''''        '                                                 ''''''
+                                  . . ... . . .....                                                               ....
   )ZMXAMMOOOOOOOOMMOOOOMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOMOMMMOOMOOOOOOOOOOOOMAXAMOMMMOMOOOOOMZ+)XZ=-=MOOOOOOOOO
+         -+++++--  ----   - --+++++++++++++++++++++++++++ --=-=-- -   -- -=-=++++++--     -   - -----          =++++++++
+            '                   ''''''''' ''''' ' '   '                         '                               '''''''
+                                   .. .    .  .                                                                 ... .
   +1AXMAMMOOOOOOOOOOOOOMOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOOOOOOOOOOOOOOOMAMAAZAAMAMMOMOOMXZ1=   =MOOOOOOOO
+          --=++=+=+++=- -   -=+++++++++=+++++=++++++=++=+---===-=---   ---=---+=+-===-            - =-          +++++=++
+              '                 '''''         ' ' '                                                               '   '
+                                .
 -=1ZXXMAXZMAOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMAMAMXMOOMOOOOA1=    ZOOOOOOOO
+            --=-+++++++-=-- --+++++++==-==+===+++++++++++++++=+=+==-------=-=-==+=+=+=-  -       -- =+=-        =+==+++=
+                '  ' '          ' '             '''    ''
 )1XZX1ZZ1+ZZZ1XAMOOOOOOOOOMAMAOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOMOOOOOOOMOOOOOOOOOOOOOMMXZXAAOMOOOOOA=    )OOOOOOOO
+                 -=-+=+++-    --+++++==---==+==-=== =-==+==-=-+++++== ===---= =-==+=+---=--       - ==+=-       -=--==+=
+                      '          '                            ' ' '
 1ZMXXZ1)11)++=)+1ZAMOOOOOMMAXXMOOOOOOOOOMOOOOOOOMMMAMAMMOMOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOMMAMAOOOMOOOOOM1=--1AOOOOOOOO
+                    -----      -=+===-=- -+=+---        - --=-+++++++++++++=- -=+=+++===+-=     --- -----       ===---==
+                                                              '''''''''
+                                                                ....
+                                                                =
 11MAA)==+))=---==+1ZAXMAMAMXZ1MOOMOOOMOOOOOOOOOMMAOMOAZZAAOMOOOOOOOOOOOOOOOOOMOOOOOOOOOMOMOMA1Z1MAMMMOMAMAMZXAOMOOMMOOOO
+                               -- --- ----=----   - -     - --++++++++++++==- --++++=-- = -          -        - ==  ----
+                                                               ''''''''           '
+                                                                  ...
 )1AXX+- +++=--===-))ZZZ1)+ZZ)+11ZZZ1Z1AMMAAXAAAZZZMAMXZ1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX)1ZAAMAMAZZAXMAOMOMOOOOOOOO
+                                                         -=-=-+++++++++==------=+++==---=-=                 - - -+=---+-
+                                                               '' '''            '
 +==--   --- - - -   -=+-----   --     --====11Z1XZMMOMOMOOOOOOOOOOOOOMOMMAMAMMOMOOOOOOOMMOMMX++))++=+---))XXMMOOOOOOOOOO
+                                                    - - =+++++++++=-- -       - ====---  -                    ----=-=-=-
+                                                         ' '' ''''
+                                                            .  .
 +-        -            -                -   -=1ZZZMOOOOOOOOOOOOOOOMMXZZ1Z1Z1ZZZXMMOOMMMAMMOMA1Z)1==--   -+)ZAAOMMMOMOOOO
+                                                   -+=+=+++++++++-                --      -                   -   - --++
+                                                         ' ''''                                                        '
 =--         --        -               -  -  --))XZMMOOOOOOOOOOOOOMX))=----===-+1XAMOOOOMOOMOMOOMZ=----   ---=+MMOOMOOOOO
+                                                    --+++++++++=-                  ---- -- - --                 -- ---++
+                                                       '  '''                                                          '
+                                                          ..
 --      --=---=====--------          -=+)+--  =+XXAMOOOOOOOOOOMMMX+---- -       -=XAOOOOOOOOOOOM)=-           -)MOOMOOOO
+                                                    --======+-                      -----------                  -- -=++
+                                                                                                                      ''
+                                                                                                                       .
+                                                                                                                       =
   -    -))1)1)X1Z11)+=+=))==----      --)))==---+)1ZMOOOMMMMOMMAA1-  -            +)ZAOMOMMMOMA1)--             ZXMXMOOO
+                                                     ---    =                         - -   -                        =++
+                                                                                                                      ''
+                                                                                                                      ..
 --)=---=111+))11ZZZ1111111Z))- --       -++)+--- -- -)MAMMMAMXAZZ)-=- -  ----     -=)1XXMXMAX1)+=-              --==MOOO
+                                                                                                                     +++
+                                                                                                                      ''
+                                                                                                                      ..
   ZZ1))+)+)++=))1)1)ZZZ1)+1Z1-  --        -==--       =+1)1+--==1)+=)+)=+==---- --++)1ZZZ1Z)===-==                 -MOOO
+                                                                                                                     =++
+                                                                                                                      ''
+                                                                                                                      ..
  -ZXAZ1)+++++===+===)Z1+--=== --=-        - -   -                -1)1)+==-------+)11Z1ZZX11+==---=+--  -           -OOOO
+                                                                                                                    -+++
+                                                                                                                     '''
+                                                                                                                      ..
+                                                                                                                      ==
 -)MMMXX1)=+++++=+- --=--       -+=- -=+=- -                       -=)++=---- -- --+111ZZZX1))++==-+++=--=          +OOOO
+                                                                                                                    =++X
+                                                                                                                     '''
+                                                                                                                     ...
+                                                                                                                      =-
 )ZOMMZZ1XZZZZ)=               --+====)Z)=                                 ---     -+111111AZ1ZA1+===++)+=-        -ZOOOO
+  -                                                                                                                 ++XX
+                                                                                                                     '''
+                                                                                                                     ...
+                                                                                                                     =--
 11MZ+-)1ZZZ))=-                -)))+11XZ+- -                              --      +)ZXXZXZXZXXZZ)==-))1)+=-       ZOOOOO
+                                                                                                                   -++XX
+                                                                                                                    ''''
+                                                                                                                    ....
+                                                                                                                     =--
 +=)=- -=))=  -                -=11Z11ZXZ1-                                     --=11)11+11ZZXZZ))=--+++)+==--    =MOOOOO
+                                                                                                                   =++X+
+                                                                                                                    ''''
+                                                                                                                    ....
+                                                                                                                    ==-=
    - - --                     --+1Z+))X))-                                      --+=---===)+111+- - --=-=+1)+   +XOOOOOO
+                                                                                                                  =+X+XX
+                                                                                                                   '''''
+                                                                                                                   .....
+                                                                                                                    -=-H
+                                                                                                                       C
   -----       -                   ---=1)+                                     -   - -   --+=)=)==- -    =)ZZX1)1OMOOOOOO
+                                                                                                                - ++XXXX
+                                                                                                                  ''''''
+                                                                                                                   .....
+                                                                                                                   =--HH
+                                                                                                                      CB
   ----- -     --                  --- ==--                                  ------==-   --+=+=++1+-     -+11AAOMOOOOOOOO
+                                                                                                              - --+++XXX
+                                                                                                                  ''''''
+                                                                                                                  ......
+                                                                                                                   ==-HH
+                                                                                                                      BB
+                                                                                                                       V
   --- --=-   ----                --   --+=-                                  ====)X11----=+11+1ZXZ1=- --=+Z1MMOOOOOOOOOO
+                                                                                                              =--++++XXX
+                                                                                                                  ''''''
+                                                                                                                  ......
+                                                                                                                   ==HHH
+                                                                                                                     CBB
+                                                                                                                      VV
       -=+=    - --               -----=+Z+-                                   -=--ZXM1+-)=++++ZXMAM1+=++ZZ11MOOMOOOOOOOO
+                                                                                                             -- =+++XXXX
+                                                                                                                 '''''''
+                                                                                                                 .......
+                                                                                                                  ==-HHH
+                                                                                                                     CBB
+                                                                                                                      VV
 - =-===----   -----       - -    ---=-+)1=--                                  -+=-1ZAAAZ1=--+)1ZAAOXZ)11111ZOOAMOOOOOOOO
+                                                                                                  -         --  ++++XXXX
+                                                                                                                 '''''''
+                                                                                                                 .......
+                                                                                                                  ==HHHH
+                                                                                                                    CCBB
+                                                                                                                      VV
+                                                                                                                      A
 )+1)1)=-    ------=+-   -+Z1-     --=-===-+==-                                 -=--)XXAZ)-=-)1AZAAMXXZZZ)=1XOAZOOOOOOOOO
+                                                                                                            -  -++++XXXX
+                                                                                                                ''''''''
+                                                                                                                ........
+                                                                                                                 ===HHHH
+                                                                                                                    CBBB
+                                                                                                                      VV
+                                                                                                                      A
 1ZX1)=-   --- --=+11Z+=+11MZ=     --=---=-))+)1)+-                                 -)Z1+--=+1ZMXAAAZAZX11+AAMAMOOOOOOOOO
+                                                                                                               =+++XXXXX
+                                                                                                                ''''''''
+                                                                                                                ........
+                                                                                                                 ==HHHHH
+                                                                                                                   CBBBB
+                                                                                                                      VV
+                                                                                                                      AA
 Z11=--------=-===-)=)111XZXZ-     --=-===+)11)ZX1+-                   -             ===-  -=+)+-+1XZ)+==1)OMMAOOOOOOOOOO
+                                                                                                          -   =+++XXXXXX
+                                                                                                               '''''''''
+                                                                                                                ........
+                                                                                                                  -HHHHH
+                                                                                                                   CBBBB
+                                                                                                                     VVV
+                                                                                                                      A
 11)=-   --++))1)=-==11AZXZA1-      -++)+1)1+- ==++-             --    --            +)=-  - =-=-+1AZ+-  =+MMAAOOOOOOOOOO
+                                                                                                              ++++XXXXXX
+                                                                                                               '''''''''
+                                                                                                                ........
+                                                                                                                 =-HHHHH
+                                                                                                                   CBBBB
+                                                                                                                      VV
+                                                                                                                      AA
 1))==  --=))1)1+=-=)ZZAXAZ)--     --)1Z1ZZZ+   --=-    --             --           -111+    - --)ZMMZ+- -=MMXOOOOOOOOOOO
+                                                                                                             -++++XXXXXX
+                                                                                                              ''''''''''
+                                                                                                              ..........
+                                                                                                                ==-HHHHH
+                                                                                                                   CBBBB
+                                                                                                                      VV
 ))1)==--+)ZZ1))++=+1XXAXA1- --    -=Z)1))+1)------    +))=-         ---           -+))Z1-     --+1AAZ)= =ZOMAOOOOOOOOOOO
+                                                                                                          -  =++XXXXXXXX
+                                                                                                              ''''''''''
+                                                                                                              ..........
+                                                                                                               =--HHHHHH
+                                                                                                                  BBBBBB
+                                                                                                                      V
 +=+==--+++)=)-)+)))ZMAX1ZZ+-=-   -=))=--+-=-   -=-  --)111)+--                    -+1++=-       -+Z1A)=-ZOMMOOOOOOOOOOOO
+                                                                                                         -  =+++XXXXXXXX
+                                                                                                             '''''''''''
+                                                                                                             ...........
+                                                                                                              ==-HHHHHHH
+                                                                                                                 CBBBBBC
+                                                                                                                  VV
 =-=--  -=  - -==++1ZXAZ1+--=+-- -=+-=--=--- - --+---)ZAAAAXZZ)-                   -)ZZ)=-       -)11)++1OOOMOOOOOOOOOOOO
+                                                                                                        =-- ++++XXXXXXXX
+                                                                                                            ''''''''''''
+                                                                                                             ...........
+                                                                                                              ==HHHHHHHH
+                                                                                                                CBBBBBBB
+                                                                                                                  VVV
+                                                                                                                  A
 - --- ----    --+)ZXAXZ+-  ----=+=-----   --++=+Z1))ZZMXAXXZXZ=  -   ---           111+---      =)1)+=)AOMOOOOOOOOOOOOOO
+                                                                                                        = =+++XXXXXXXXXX
+                                                                                                            ''''''''''''
+                                                                                                            ............
+                                                                                                              --HHHHHHH-
+                                                                                                                BBBBBBC
+                                                                                                                 VV
  ---------------+1AXAZZ=-------=)=        -=1+=-))))XXMAMAMAAZ-   ---+1)-          +1+   --     )1Z1))MOOMOOOOOOOOOOOOOO
+                                                                                                       -= ++++XXXXXXXXXX
+                                                                                                           '''''''''''''
+                                                                                                           .............
+                                                                                                           ===-HHHHHHHH-
+                                                                                                               CBBBBBBC
+                                                                                                                  VVVV
  -----=-- -==---+)ZZZ1+---++)--==-          =-      =ZMMMMXXAZ-   - =)AZ+-         -)--       --1Z)--1OOOOOOOOOOOOOOOOOO
+                                                                                                      ----=+++XXXXXXXXXX
+                                                                                                           '''''''''''''
+                                                                                                           .............
+                                                                                                            ==HHHHHHHHH-
+                                                                                                              CBBBBBBBC
+                                                                                                                V VVV
+                                                                                                                  A
   ----  - ==))--=111Z)=--=++1+--         ---+--      -XAAZZZZZ=-  --=1ZZ+---        ))=-       -+=   )MMAMOOOOOOOOOOOOOO
+                                                                                                          ++XXXXXXXXXXXX
+                                                                                                          ''''''''''''''
+                                                                                                           .............
+                                                                                                            --HHHHHHHH--
+                                                                                                              BBBBBBBC
+                                                                                                                VVVVV
+                                                                                                                A
   =++=----)1XZ)+1ZXZZ+==+)Z111=--         --=-----    )ZAZZ1ZZ)=--- +11)=--         )1)---    --=--  +XAMOOOOOOOOOOOOOOO
+                                                                                                         =++XXXXXXXXXXXX
+                                                                                                          ''''''''''''''
+                                                                                                          ..............
+                                                                                                          = -HHHHHHHHHH-
+                                                                                                             CBBBBBBBCC
+                                                                                                               VVVVVV
+                                                                                                               A A
 --+==--==+1ZXZ1)ZZ1)+-=+))111)+---- ---- ---==--++=---=1ZZAXA11=)=+-===-            ==+=-     -=--- - =1OOOOOOOOOOOOOOOO
+                                                                                                        =++XXXXXXXXXXXXX
+                                                                                                         '''''''''''''''
+                                                                                                         ...............
+                                                                                                          =-HHHHHHHHH---
+                                                                                                            CBBBBBBBC
+                                                                                                              VVVVVV
+                                                                                                               A A
 --++=  -=+))11111)+===+1Z)111=--- -- ---- --)1)1)+==---+1AAAX1ZZ1+=--- --            -=       -))-++  -ZOOOOOOOOOOOOOOOO
+                                                                                                        ++XXXXXXXXXXXXXX
+                                                                                                        ''''''''''''''''
+                                                                                                         ...............
+                                                                                                          -HHHHHHHHH--H-
+                                                                                                           CBBBBBBBC  C
+                                                                                                             VVVVV
+                                                                                                              A A
 --+-=- -=+)+1)Z1)+=++)ZZZZZ1+--     - -==-=-+1X1)-------++ZXX1)=-  -                  ----  -=ZZMX)-- ZOOOOOOOOOOOOOOOOO
+                                                                                                       =++XXXXXXXXXXX+XX
+                                                                                                        ''''''''''''''''
+                                                                                                        ................
+                                                                                                        ==-HHHHHHHH-H=H-
+                                                                                                           BBBBBBBC C C
+                                                                                                            V V V
 - ==- ==)+)+1)Z))-++1ZXXAX1=---   - --++))1)Z11)-- ------=)11+--  ---                   =   =1AAA1+=)XOOOOOOOOOOOOOOOOOO
+                                                                                                      ++XXXXXXXXXXXXXXXX
+                                                                                                      ''''''''''''''''''
+                                                                                                       .................
+                                                                                                        -HHHHHHHH-------
+                                                                                                         CBBBBBBB
+                                                                                                            V VV
+                                                                                                              A
 --=---=))+1111111+++11XZA1=-=-    --)1ZZXXMZ11Z)-  -+++=--++)+-   - -                  ----=1ZZ1X11ZOOOOOOOOOOOOOOOOOOOO
+                                                                                                    -+++XXXXXXXXXXX+X+X+
+                                                                                                      ''''''''''''''''''
+                                                                                                      ..................
+                                                                                                      ==HHHHHHHHH--=H=-=
+                                                                                                        BBBBBBBBC   C
+                                                                                                          VVVVV
+                                                                                                          A AAA
 - ----==+=1)Z1Z11+))11AXX)--=-      )1XZXZXXXZA1+   -=++--  ==---               -        --+Z111ZZAAOOOOOOOOOOOOOOOOOOOO
+                                                                                                    +++XXXXXXXXXXXXXX+XX
+                                                                                                    ''''''''''''''''''''
+                                                                                                     ...................
+                                                                                                     ==HHHHHHHHHH----=--
+                                                                                                       CBBBBBBBBC
+                                                                                                         VV VVV
+                                                                                                            A
 ---    ---)1Z1Z)Z)11XZXXZ)+==       -=1+11XXXAZ1)----=)+-  ---- -             -  -       -ZAMXAXMMOOOOOOOOOOOOOOOOOOOOOO
+                                                                                                  ++XXXXXXXXXXXXX+X+X+XX
+                                                                                                  ''''''''''''''''''''''
+                                                                                                   .....................
+                                                                                                    -HHHHHHHHHHHH=-=-=--
+                                                                                                     CBBBBBBBBBCC
+                                                                                                        VVVVV
+                                                                                                        AAA
  ---  --==1)Z1Z))111ZZAZZ11+-        -11XXXZZ1Z)111)1ZAZ)---+--               ++-   --=-=+AMOXAMOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                            -   =++XXXXXXXXXXXX+XXXX+XXX
+                                                                                                 '''''''''''''''''''''''
+                                                                                                  ......................
+                                                                                                  =-HHHHHHHHHH-=----=-H-
+                                                                                                    CBBBBBBBBC        C
+                                                                                                      VVVVVV
+                                                                                                        AAA
 -     -++)11Z11)11ZZAZXXZ1)=       -  )1ZZZ)ZZXXAZAXZ1XZ1))+=---              =+=   --)++)AMAXOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                              =+++XXXXXXXXXXX+X+X+X++XX+
+                                                                                                ''''''''''''''''''''''''
+                                                                                                ........................
+                                                                                                ==HHHHHHHHHH-=-=-=-==--=
+                                                                                                  CCCBBBBBBC
+                                                                                                      VVV
+                                                                                                        A
  --  --+)++)1+)+1)Z))+11Z1=--      - -+)XZAZXXMXZXX1)=+))=--  --               --     ))1ZMXAOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                             -+++XXXXXXXXXXXXXX+XXX+XXXX
+                                                                                              ''''''''''''''''''''''''''
+                                                                                               .........................
+                                                                                               ==-HHHHHHHHH----=---=--H-
+                                                                                                  CBBBBBBCC           C
+                                                                                                    VVV
       --+-+++--=))1+)+)1Z)+=--        ))11XZAXAXXXZ)1+1)=--   --                -    -)ZXZOMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                          - -=++XXXXXXXXXXXXX++++XX+XXXX
+                                                                                              ''''''''''''''''''''''''''
+                                                                                              ..........................
+                                                                                               =-HHHHHH-HHH--====--=--H-
+                                                                                                 CBBBBC BCB           C
+                                                                                                  VVV
       ----- - -=111+=---+=+=--       -++=)Z1AXAZZ111))Z1---     --             --     +1XZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                           -=+++XXXXXXXXXX++X++XX+X+X+XX
+                                                                                              ''''''''''''''''''''''''''
+                                                                                              ..........................
+                                                                                              ==HHHHH-HHH-==-==--=-=-=--
+                                                                                                CCBCC CCB
       ---      -+==-- ------         ==---)1ZZZ)))Z1++)+-----   --      -        -    -)11MOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                           -++++X+++++XX++++++++++X+XXXX
+                                                                                              ''''''''''''''''''''''''''
+                                                                                              ..........................
+                                                                                               =-== ==--==== =====-=----
   ----=-  - - ==+----- ---=-----  -=11)+--+)Z1)+++))))--- ---   --- -   -+      =++-- +)ZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                          ++++++X+X+X+X+X+X+++X+X+X+XXXX
+                                                                                           '''''''''''''''''''''''''''''
+                                                                                           .............................
+                                                                                            ====-=-=-=-=-=-===-=-=-=--HH
+                                                                                                                      BC
   ---==-  --- -+=--- --- ----     -=11Z+=-==++)++----     ---   - ----==+)1     +11= -=+ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                          ++++XX+XX+X+XX++++XX++++X+X+XX
+                                                                                           '''''''''''''''''''''''''''''
+                                                                                            ............................
+                                                                                             =--=-H=-=--====--====-=-=--
+                                                                                                  C
    -=---    -=)=---       -        =))1+=---=-==-      -  -=- ---- -- =-++1+    =))- -=+AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                         -++++++++X+X+++++++++++++X+X+XX
+                                                                                            ''''''''''''''''''''''''''''
+                                                                                            ............................
+                                                                                              ====-=-==== ========-=-=H-
+                                                                                                                      C
   ---- -    --+=--- -     -        - ===----- -           -)Z)= - ----==--=+=   -))=+=1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                        -=++++++++++++++++++++X+XXXXXXXX
+                                                                                          ''''''''''''''''''''''''''''''
+                                                                                            ............................
+                                                                                              === = ==========-=------HH
+                                                                                                                      CC
   ===--     - ---- -      - -      ---=-- ==--      -- -- --))1)Z))+=---+--=)+=-++ZZ11ZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                        ++++++++++++X++++++++++XXXXXXXXX
+                                                                                          ''''''''''''''''''''''''''''''
+                                                                                          ..............................
+                                                                                           ======== -==========-H-H-H-H-
+                                                                                                                C C C C
   ------                  --  --  --  --- - -        --- ---++Z1Z1XZ1)+-==+-==-=))ZXAXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                        ++++X+X+++++++++++++++XXXXXXXXXX
+                                                                                         '''''''''''''''''''''''''''''''
+                                                                                         ...............................
+                                                                                          ==-=-==== ==  ====  --H-----H-
+                                                                                                                C     C
   ---=- -     --         ---- -  ---- --- -          --=--  ==)1ZZXZZ1)-=)1)==-=11AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                    --+++++XX+X+++++X+++++++++XXXXXXXXXX
+                                                                                       '''''''''''''''''''''''''''''''''
+                                                                                       .................................
+                                                                                        ===--=-=====-=========H-HHHHHHH-
+                                                                                                              C CCCCBCB
   ------  - - -           ---  -- --   --           -----   =---))ZZXZ)-+)XZ)===1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                  ==+++++++X++XXX+++X+++X+++XXXXXXXXXXXX
+                                                                                     '''''''''''''''''''''''''''''''''''
+                                                                                     ...................................
+                                                                                      = ===-==---===-===-===--HHH-HHHHHH
+                                                                                                              CCC CBCCBC
   --=-=---  - -         -  -----=--   - -           --  - ---   -=))Z11)+)Z)))1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                =+++++++++++X+++X+X++X++XXXXXXXXXXXXXXXX
+                                                                                  ''''''''''''''''''''''''''''''''''''''
+                                                                                  ......................................
+                                                                                      = ====-===-=-==-==----HHHHH-H-HHHH
+                                                                                                            BCCCC C BBBC
   +)+=-  -----        -    -- ---     -             -     --    --=+1++=+=11AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                              ++++++++++XXXXXX+XX+XXX+X+XXXXXXXXXXXXXXXX
+                                                                               '''''''''''''''''''''''''''''''''''''''''
+                                                                                ........................................
+                                                                                  ======--H---=--=H--=H=H-H-HHH-H-H-HHH-
+                                                                                          C       C   C C C BCB C C CCC
   )Z)=--  - --              - --  -    -            -     ----  ---=1+++)1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                          -=++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+                                                                            ''''''''''''''''''''''''''''''''''''''''''''
+                                                                            ............................................
+                                                                              ====HHHHHHHHHHHHHHHHH-HHHHHHH-H-H-H-H--HH=
+                                                                                  CCBCCCCCBCCBBBCCC CCBBCCB B C C C  CC
  -1Z+- - - ---  -           - --- -                   -         --=+1)ZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                        +++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                                          ''''''''''''''''''''''''''''''''''''''''''''''
+                                                                          ..............................................
+                                                                           ==-----HHHHH-H-HHHHHHHHHHHHHHHHH-H-H-H-------
+                                                                                  BCBCC C CCBCBCBCBBBCBBBCB B C C
 -=1)=-- )-=---=--             -                   ----  - - -   -- =ZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                      =+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+
+                                                                       '''''''''''''''''''''''''''''''''''''''''''''''''
+                                                                        ................................................
+                                                                        = ==--H-HHHHHHH-HHHHHHHHHHHHHHHHHHHHH-H-----==-=
+                                                                              C BCBBCCC CCBCBBCBBCBBBBBBBCCCC C
+                                                                                            V
 --1+=-+++)=----- -                              -  -  -      -   -=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                    -+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++X+
+                                                                      ''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                                      ..................................................
+                                                                      ======--H---HHH---H-HHH-HHHHHHHHHHHH-----=H=H===-=
+                                                                              C   BCC   C BCB CCCCBBCCCCCC      C C
 --=+)+))1)+----=-- --   -                      ------   -        =MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                   ++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++
+                                                                    ''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                                    ....................................................
+                                                                     ==---H-----HHHHH---H-H-HHHHHHHHHHHHH--------=-=-===
+                                                                          C     CCCCC   C C CCBCCCCCCCBCC
 ---)Z1)=+)=-- --- -   ---  - -   --- -         - --   -         XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                 ++++XXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX
+                                                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                                  ......................................................
+                                                                    =---H-HHH=HHHHHHHHHHHHH-HHHHHHHHHHHHHHHH--H----=----
+                                                                        C CCC CCBCCCCBCCCCC CCBCBCBBBCBCBCCC  B
   -)Z+=-=+--       -  --- -        --        -- -       -     -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                ++++XXXXXXXXXXX+X+XXXXX+X+++X+XXXXXXXXXXXXXXXXXX++++++++
+                                                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                                ........................................................
+                                                                ====--H--------=-=H-H--=-===H=----H-HHH-H-------========
+                                                                      C           C C       C     C CBC C
  -=))-  -----------   - -=---   -   -  ---  --   -   -       -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                              -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++
+                                                               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                               .........................................................
+                                                                --HHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--=-===
+                                                                  BCBCCBBCBCBCC BCCBBBCCBCBBBCBCBCBCBBBBBBCCCCC C
+                                                                                                    V V
   =+==- - --------      -- -  -   -  - ---  - --- --  -     +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                             -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+
+                                                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                              ..........................................................
+                                                              =-H-HHHHHHH-----HHHHHHHHHHHHH-H---H---H-HHHHHHHHH----=---=
+                                                                C CCBCCCC     CCCCBBCCCCBCC C   C   C BCCCBCBCB
   -==-- ----=--=---     -=- -   --  - - ------=----     -  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                            =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                             ...........................................................
+                                                             ==-H-H-H-HHHHHHH-H-H-HHHHHHHHH-HHH-H---H-HHHHHHHHHH--H-----
+                                                                C C C BCBCBCC B C BBBCBCCCB CCC C   C CCBCBCBBBC  C
+                                                                                                          V
   ==------=-+))++--     ----  - ----  --  -  -------  -  --XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                            +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXX
+                                                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                            ............................................................
+                                                             ==-HHH-H-HHHHHHHHHHHHHHHHHHH-H-H-------H=HHHHHHH-HHH-H-H---
+                                                                CCC C BCCCBCCCCCCCBCBCBCC C C       C CCCCBCC CCC C C
  -+-----==))1))+=-  --------- - --------- -  -- -----     MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                           +++X+XXXXXXXXXXXXXXXXXXXXX+X+XXXXX+XXXXXXX+XXXXXXXXXXXXXXXXXX
+                                                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                            ............................................................
+                                                            ==-=H-HHH-HHH-H---HH-----=-=----H=-H--H--=H-H---HHHHHHH-----
+                                                                C CCC CCC C   CC            C  C  C   C C   CCBCBCC
 --+====---+=)+)==-----  ------- -------- -    -----       OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                          ++++XXXXXXXXXXXXXXXXXXXXX+XX++XXXXXXXXXXXX++X+X+++XXXXXXXXX+X+
+                                                           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                           .............................................................
+                                                           ===H-----H-H-H-H-H---H--=--==----H-----H-==-=-===--HHH-H--=-=
+                                                              C     C C C C C   C           C     C           CCC C
 -=+=+=+-=-==++)=+=+=------ ---- ----=---      - - --    -AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                          ++++XXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX
+                                                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                          ..............................................................
+                                                          = ==H-H-HHH-HHHH------H-H-H=H-HHH-H-H-H-HHHHHHH----=HHH-HHH-H-
+                                                              C C CCC CCCC      C C C B CCC C C C CCCCCCC     CCC CCB C
 -=+++==---+==+++=====-   -  --- --=---      - -- -      MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                         +++X++XXXXX+XX+X+XXX+XXX+X+X+XXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXX
+                                                         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                         ...............................................................
+                                                          ==-==-----=-H=-=---=---=H=-=H-HHH-H-H-H-H--------===--HHH-H---
+                                                                      C           C   C BCC C C C C             CCC B
  -)++==---==+++=+++)+=-- --- --------==-- -  -  - -    1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                        ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+X++++++XXXX+XX
+                                                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                        ................................................................
+                                                         =----------H-HHH---H-HHH-HH--HHH---H----=-------=-======----=H-
+                                                                    C CCC   C CCC BC  CCC   C                         C
 -=)==---- -=+===)=)++==-- - ----- -----=----- -       =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                       -++XXX+XXX+XXX+XXX+XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+X+XXXX+XXXXX
+                                                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                        ................................................................
+                                                        ==---=---=--H=H--=H------HHH--HHHHHHHHH----=-------=-=----=-H-HH
+                                                                    C C   C      CCC  BBBCCCCCC                     C CC
 -=++=---- --)++=++)+=-=-------==------=-=-- -- -- -   ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                       +XXXXX+XX+XX+X+XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+X+XXXX
+                                                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                        ................................................................
+                                                        -----=--=--=-=----==-----HH-----HHH---H---H-HH-----=-----=-=----
+                                                                                 CC     CCC   C   C CC
 -=)+)+=-==)+1))))))---=--==-+=)==-==--=------ -       OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                      =+XXXXXX+X++XX+XX+X+XX+XXXXXXXXXXXXXXXX+XXXXXXX+X+XX+XXX++X+++X+XX
+                                                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                       .................................................................
+                                                        --H---=-==--=--=H=--=-----HH--HHH----=---H---=-=--=---==-===-=--
+                                                          C             C         CC  CCC        C
 --+++=--=-+)1))=++=-----==+==-=++==---- --- -- -     =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                      ++XXXXX+XXX+++X+XX+XXXXXXXXXXXXXXXXXXXX+X+XXXXXXX+XXX+++++X+X++XXX
+                                                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                      ..................................................................
+                                                      ==-----=---===-=--=---H---------HHH----=-=-------=---=====-=-==---
+                                                                            C         CCC
 --=+)====-==++)-===-----=-=---=-==- -- -----  -      AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                      ++XXX+XXX+X+++++X+XXXX++XXX++XXXXXXXX++++XX+++++++++++++++++++++++
+                                                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                      ..................................................................
+                                                      ==---=---=-==== -=----==---==-H------====--============ ==========
+                                                                                    C
 --=)+==-===-----=------=-------=--  -- -  ------    )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                     ++XXXXX++X+++++++++X+X+++XXXXXXX+X+X+XX+XXX++++++++X+++++++++++X+++
+                                                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                      ..................................................................
+                                                      =-----==-=========-=-===-------=-=-=--=---======= -  =  ======-===
  -)+)+)+=-)=+=+-++===----====-+-+-----------=-- -   MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                     +XXXXXXX+++X+++XXXXXX+XXXXXXX+XXXX+XXX+X++X++X+X++X++X+X+X+XX+++X++
+                                                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                     ...................................................................
+                                                      --H-H--===-===----H-=-------=----=---=-==-==-=-==-= -=-=-=--===-==
+                                                        C C             C
 --1)))+==-=-====+=+-++++=-==)++--=- - - ------     -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                    =+++++X++++++++++++++++++++++++++XX+++++++++++++++++++++++++++++++++
+                                                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                     ...................................................................
+                                                      ====-====================== ===--====== =  ====== =   == ==== = =
  =+))++=======--=+)=====+========------ - ---- -   +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                    ++X+XX++X+++++++++++++++++++++++++++++++X+++++++++++++++++++X++++XXX
+                                                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                    ....................................................................
+                                                     =-=--==- =========== ==================-==== = ===== = ====-====---
 -=)+1++=-=+=+=+=++)+)+)++++++=+=+==-=-=---=-----  -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                    ++XXXXX+++++++X+XX++X+X+++++XXXXX+XXXXXXXXXX+X++++++++++++++X++XX+X+
+                                                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                    ....................................................................
+                                                     =-----=======-=--==-=-=====-----=--H-------=-===== ===== ==-==-H=-=
+                                                                                        C                           C
 -=1)+=+-=======-==+=======+++++-+=)+)+====)==--   ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                   ++XXXXXX+X++++++X++X++++XX+XXXXXXX+XXXXX+++++++++++++++++++X+X+XXX+XX
+                                                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                    ....................................................................
+                                                    =------=-======-==-== =--=--H---H=H-H--==========  == ====-=-=---=-H
+                                                                                C   C C C                              C
  -))+==--==-+++=-===)=--++)+)=)=+=++)+)+)++=+=- --MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                   +XXXXXX++++X+X+++XXX+X+X+X++XXXXX++++XX++++XX++++++++++++++X+XX++XXX+
+                                                   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                   .....................................................................
+                                                    ----H-====-=-===---=-=-=-==---H-====--====--===== == =====-=--==---=
+                                                        C                         C
 -=))))+-=-=+)+==========++++)+)+++))))1++=+====- =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                  ++XXXXXXX+XXXXX+++XXXXXXX+XX+XXXXXX+X+XXXXXXX++++++++++++++++XXXXXXX+X
+                                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                   .....................................................................
+                                                    ---HH--=-----===--H-H-H=--=------=-=-------====== = =======-------=-
+                                                       CC             C C C
 -=1))====----=--=++==-+===+=+))+++)++=+-=-==--- -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                  ++XXXXXXXX++X+++X+XXXXX+X+XXXXXXX+XXX+X+XX++X+++X+++++++++++XXX+X+++X+
+                                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                  ......................................................................
+                                                  ==--------==-===-=-----=-=----HH-=---=-=--==-===-====== ====---=-===-=
+                                                                                CC
 ==Z1)++=-=+=+=--)++-++)+++)+11)+=)1=+++-==+---- -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                  +XXXXXXXXXXXX+++++X+XXX+X+XXXXXXXXXXXXXXXXX+++X+X+++++++++++++XXX+++XX
+                                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                  ......................................................................
+                                                  =------------= ===-=---=-=--------H-H------===-=-== ==========---===--
+                                                                                    C C
 --1Z1)1)+++++---+))))1)++=)+)))++++==-=-==)+=-- )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                 =++XXXXX+++++X+X+X+X+XXXX+XXXXXXXX+X+X+X+X+++X+++++++++++++++++X+++X+XX
+                                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                  ......................................................................
+                                                  ==H-HH-=====-=-=-=-=----=--------=-=-=-=-===-====== === = ====-===-=--
+                                                    C CC
 -=111))++=+==-==+=++)++==-+=+=++=-=----=+=)==-- XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                 ++XXXXX++X+++++++X+X+X+X++X++++++X+++++++++++++++++++++++++++++++++++++
+                                                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                  ......................................................................
+                                                  =-----==-=== ===-=-=-=-==-======-================ = = =  == === === ==
 -+11Z))))+)====-==+=++==------=-+++==---- ---  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                =++XXXX+XXXX++++++++X+XX++X++++XX+XXX+X+X+X+++++++++++++++++++++++++++++
+                                                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                 .......................................................................
+                                                  =----=----========-=--==-====--=---=-=-=-=====  === = = ===== ====  ==
 ++X11))++-)++-===-==+=+=--==+++=+===+----- ----=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                +++XXXXXX+X+X+++X+++++++XXXXXXXXX+X+X+XX++++++++X+++++++++++++++++++++++
+                                                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                 .......................................................................
+                                                  =------=-=-===-=======---------=-=-=--===== = -==== = ===  == ========
 +)Z1Z)1+)+)+===++-==+)+++-==+=+=+=+==---- ---- =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                ++XXXXXXX+X++++++++XX+X+++++X+X+X+X+++XXX+++++++++++++++++++++++++++++++
+                                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                ........................................................................
+                                                 =------H=-========--=-=====-=-=-=- ==---====== = = =   = ==== === == ==
+                                                        C
 =)XZZ)1+))))1=++)+))1)))+))++==-)))))-=----   -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                ++X+XXX+X+++++++X+X+X+X+X+X+XXX+++X+X+XXX+X+++X+X+++++++++++++++++++++++
+                                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                ........................................................................
+                                                 =-=---=-=======-=-=-=-=-=-=---===-=-=---=-===-=-== ========= ==========
 +)Z1Z1))))1)1+++))1))+1)1))==--=+)1)Z+====- - -AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                ++XXXXXXXX+XX+XXXXXXXXXXX+X+XXX+XX+XXXXXXXX+++X+++++++++++++++++X+++++X+
+                                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                ........................................................................
+                                                ==--------=--=-----------=-=---=--=-----H--===-======== ========-==== -=
+                                                                                        C
 =+Z1)))=++++==+++=++++)))=---=+)1)))11)++-=   -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                +XXXXXXXXX+XX+++++X+X+X++XX+XX+XXX+XXX+++XX+X+++X+X+X+++++++X+X+++++XXX+
+                                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                ........................................................................
+                                                 -H-HHHHH-=--=====-=-=-==--=--=---=-H-===--=-===-=-=-==== ==-=-=====---=
+                                                  C CCBCC                           C
 )+ZZ1)+)+=====)))+)+)+11+==-==)))+))11)=--- - +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                               +XXXXXXXXXXXX++XXX+++X+X+++XX++X+XXX+XXX+XXXXXXX+++X+X+++X++X++++++X+++X+
+                                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                ........................................................................
+                                                ------HHH---==---===-=-===--==-=---=---=H---H--===-=-===-==-======-===-=
+                                                      CCC                               C   C
 1)11Z))+)++=++))1=+=))Z1==+-=-+=)+++)+)===----1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                               +XXXXXXXXXXX+XXXXX++++XX+X+XXXXX+XXXXX+XXXXXXXXXXXXXXX++X++X+++++++X+X+++
+                                               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                                ........................................................................
+                                                --H-HHHHH--=----H====--=-=-----=H----=---------------==-==-=======-=-===
+                                                  C CCCCC       C               C
 1)Z))))+1+)))+)+)=+))11))+)---==))+=))==+-=-==OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                              -+XXXXXXXXXXX+XXXXXXXXX++XX+XXXXXXXXXXX++X+XX+XXX+X+++++++++++X+++++++++X+
+                                               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                               .........................................................................
+                                               =-HHHH-HHHH-=---------==--=--H-H------==-=--=---=-===========-=========-=
+                                                 CCCB BCCC                  C C
 )1X)1+)++))+1)))=-==11111+)---+++))=--====- --MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                               +XXXXXXXXXXX+X+XX++XXXXXXX+XXX+XXXXXXXX+XXXXXXXXXX+X+++++++++++++++++X+X+
+                                               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                               .........................................................................
+                                                -HHHHHH---H=-=--==-------=---=----H-H-=-H-H-H----=-========== = ====-=-=
+                                                 CBCCCC   C                       C C   C C C
 ))1)++)+)+11+++++=++)Z1))=)+====+=+----=+==  -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                               +XXXXXXXXXXXXXXX+X+++XXX+X+XXXXX+XXXXXXXXXXXXXXX+X+++++++++++++++++++++++
+                                               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                               .........................................................................
+                                               =--H---H---H----=H===---=-=H----=---------HH----=-=  =  === ====  =======
+                                                  C   C   C     C         C              CC
 )+1)+=++)++)++++))+)ZZ1))+1+===-===---==+--- -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                              -+XXXXXXXXXXXXXXXXXXXX+XXXXX+XX+++XXXXXXXXXXXXXXX+++++++++++++++++++++++++
+                                               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                               .........................................................................
+                                                H-H-HHHHHH--H-H-----=---H-=--===H-HH--H-HHHHH--==== == = =  ==== =======
+                                                C C CCCCBC  C C         C       C CC  C CCBCB
 ))Z11))+++++++))1)))ZZZ)+)1++=+=+=--=-+++=-  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                              ++XXXXX+XXXXX+XXXXXX++X+XXXXX+XXXXXXXXXXXXXXXXXXXXXX++++++++++++++++XX++X+
+                                               '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                               .........................................................................
+                                               =-HH-H=--H--=--H-H-==-=-----=-----HHHHHHHHHHHH-----=======  =======--==-=
+                                                 CC C   C     C C                CCCCCCCBBBBB
 +)11Z)1)1+)+)=1)11)1Z111Z)Z)+)1)+=)=-=++)--- =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                              ++XXXXXXXXXXXX+XX+X+XXX+X+XXXXX+X+XXXXXXXXXXXXX+X+X+X+X+X+++++++++++++++++
+                                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                               .........................................................................
+                                               =H-H-HH--H-H-=--=-=---=-=-----=-=--HHHHHHHHHHH=-=-=-=-=-=== ====== ======
+                                                C C CC  C C                       CCCCBCBBCCC
+                                                                                      V V
 1)Z1Z11)1))+))Z11)))1Z1ZXZZZ1)1)))+-+-=-=----+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                              ++XXXXXXXXXXXXXXXXXXX++XX+X++XX+X+XXXXXXXXXXXXXXX+X+XXX++X++++++++++++++X+
+                                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                              ..........................................................................
+                                               =H-HHH-HHH----H--H--==-H=-==--=-=--HHHHHHHHHHHH-=-=---==-==  == =======-=
+                                                C CCC CCC    C  C     C           CCBBBBBBBCBC
+                                                                                        VVV
 +)Z1)+))Z))=++))1))111ZZXZZ1111))))++----- -=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                              ++XXXXXXXXX+X+XX++XXX+X+XXXXXXXXX+XXXXXXXXXXXXXXXXXXX+++++++++++++++++++++
+                                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                              ..........................................................................
+                                              ==--H-H----=-=H-==---=-=---------=--H-HHHHHHHHH------====== = = = ========
+                                                  C C       C                     C CBBBBBBCC
+                                                                                      V V
 +11Z)=))11Z1)111Z11)11ZZXMAZ111+1)1+)-=---+=+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                              +XXXXXXXXXXXXXXXXXXXXXX+X+X+X+XXXXXXXXXXXXXXXXXXX+XX++X+++++++++++++X+X+++
+                                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                              ..........................................................................
+                                              =---H-H------HHH------H=-=-=-=------HHHHHHHHH-H-H=--==-========= == -=-===
+                                                  B C      CCC      C             CCBBBBBBC C C
+                                                                                     VVVV
+                                                                                        A
 ++ZZ1)ZZAXAXXZZ1Z111XZXZAAMX111)))11111))))+1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                              +XX+XXXXXXXXXXXX+XXXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXX+X+X+++++++++++++++++
+                                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                              ..........................................................................
+                                              =-H=H-H-HHH-----=---H-----H=-=-----HHHHHHHHHHHH-H----=-=-=====  ===== = ==
+                                                C C C CCB         C     C        CBBBBBBBCBCB C
+                                                                                    VVVVV
+                                                                                      A
 +)XXAAMMMMMXXXZZZ1ZZZ1Z1ZZXZZ111Z1ZZZ1Z)1)1)ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                             =++XXXXXXXXX+X+XXXXX+XXX+++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++
+                                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                              ..........................................................................
+                                              ==--HHH-HHH=-=-----=---===-=-=----H-HHHHHHHHHHHHH-------========= ========
+                                                  CCC BCC                       C BBBBBBBBBBCCC
+                                                                                    VVVV
+                                                                                    AAAA
 )+ZZAXMAMAAXZ111Z1Z1ZZXZ11X1Z1Z)))1111111)1+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                             =++XXXXX+XXX+X+++XXXX+XX+++++X+++XXXXXXXXXXXXXXXXXXXXX+X++++++++++++++++++X
+                                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                              ..........................................................................
+                                               =--H-H=H--=-===----=--=====-===---HHHHHHHHHHHH-H-H--=-======== =========-
+                                                  C C C                          CBBBBBBBCCCC C C
+                                                                                   VVVVVV
+                                                                                    A A
 ))XZXAX1Z1Z)1)111Z1)Z1111)ZZZ)1))+))Z1Z111Z)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                             ++XXXXXXXX+X++XXXXXXXXXX++X++++XXX+XXXXXXXXXXXXXXXXXXX+XXX+++++++++++++++++
+                                              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                              ..........................................................................
+                                              =---H-H-H=-==---H------==-====---=-HHHHHHHHHHHHHH----=---=======  ========
+                                                  C C C       C                  CBBBBBBBBBBBCC
+                                                                                  VVVVVVV
+                                                                                    AAA
 +1XAAZ+=))ZZZZZXX1Z1Z11))+))Z1Z)=-))1)1+))++MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                             +XXX+X+X+++++++++++X+X+++++++++++++XXXXXXXXXXXXX+XXXXX+X+X+X+++++++++++++++
+                                             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                             ...........................................................................
+                                              ---=-=-======== ==- -=============H-HHHHHHHHHHH=-----=-=-=-  =====  = = ==
+                                                                                C BBBBBBCCBCC
+                                                                                    V VV
+                                                                                    A
 11AXX1=-=+11ZZZ1XZX1Z1))))11Z1)++)1)Z11)1)1)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            =+X+XXXXXXX+++X+++X+++XX++++++X+++++XXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++++
+                                             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                             ...........................................................................
+                                              -=--H-H--===-===-===--======-=====HHHHHHHHHHHHHHHHHHH--=-====== ===== ===
+                                                  C C                           CCBBBBBBBBBBBBBCBCC
+                                                                                  VVVVVV VV
+                                                                                  AAAAAA
 )ZAAX+- -+ZZXZ1ZXZXZZ)11))11111++)Z1ZZZ11)11OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            =+XXXXX+XXX+X+++X+XX++X+X+++++++++++XXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++++
+                                             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                             ...........................................................................
+                                             =-----=---=-===-=--==-=- ==========HHHHHHHHHHHHHHH-H----=-====== == == = ==
+                                                                                CBBBBBBBBBBBBCB C
+                                                                                  VVVVVVV
+                                                                                  AAAAA
 )1AAA+--+)11Z1XZZZXZZ1Z))+)+))Z)))Z1Z1Z))+))OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            -+++++++X+++X+++++++X+++++++++X+X+XXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++
+                                             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                             ...........................................................................
+                                             ==== ==-===-==== ==-=========-=-=--HHHHHHHHHHHHHHHH-======== = =   = = = ==
+                                                                                BBBBBBBBBBBBBCCC
+                                                                                  VVVVVVVVV
+                                                                                  AAAAAA
 +1MAZ))+Z11)Z1Z)11X1)+1))++=))1)Z11)1))))++-OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            ++XX++XXXXXXX+++++++++++++++++++++X+XXXXXXXXXXXX++++++++++++++++++++++++++++
+                                             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ' ''''
+                                             ..........................................................               ..
+                                              --==H-H----====== ==========  = -=HHHHHHHHHH--= ==  =
+                                                  C C                           CCBBBBBBBC
+                                                                                  VV  V
+                                                                                  A
 ))XZZZ111))))====+11ZZZ1)1111))111))1)+=)+-=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            ++XXX+X+X+++++++++X+++XX++X+++++++XXXXXXXXXXXXXXXXX+++++++++++++++++++++++++
+                                             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                             ...........................................................................
+                                             =---=-=-=========-===--==-= =====--HHHHHHHHHHHH---======  ==    == === = =
+                                                                                BBBBBBBBBBBC
+                                                                                  VVVVVV
+                                                                                    A
 ))AZZ1Z11)11Z)))1ZZZZZZ1Z1ZZZ111111)Z))==  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            ++XXXX+XX+X+X++++XX+XX++++++X+++++XXXXXXXXXXXXXXXXX+++++++++++++++++++++++++
+                                             '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                             ...........................................................................
+                                             =----=--=-=-====--=--======-=====--HHHHHHHHHHHHH--== == = =  === ==  = ====
+                                                                                BBBBBBBBBBBCC
+                                                                                VVVVVVVVV
+                                                                                  AAA
 1ZAXX1Z111111)11Z1Z1Z1Z11XZ1111)1))11))+----OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            ++XXXXX+++XXX+X+X+X++++++++++++++++XXXXXXXXXXXXXX+X+++++++++++++++++++++++++
+                                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                             ...........................................................................
+                                             =-----===---=-=-=-================-HHHHHHHHHHH--=- = = ==         =   ==
+                                                                                BBBBBBBBBBC
+                                                                                 VVVV VVV
+                                                                                  A
 ZAMMMAZ1Z11111)+Z1ZZZ1ZZX1111)11))))Z11+= -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            ++X+XXX+XXXXXXXXXXX+++++++++++++++XXXXXXXXXXXXXXXXX+++++++++++++++++++++++++
+                                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                            ............................................................................
+                                            ==-=H--=----------- ============= --HHHHHHHHHHH-H--=======         ==== ====
+                                                C                               BBBBBBBCBCB C
+                                                                                 VVVVVV
+                                                                                    A
 ZXOOOAAXXXAZAZXZAXXZXXXXAZX11)ZZZZZ1XZZ)+=-1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  ---                                       ++XXXXX+XXX+X+XXX++XX+X+++++++++++XXXXXXXXXXXXXXXXX+++++++++++++++++++++++++
+                                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                            ............................................................................
+                                             =-H---=H--=-=---==--=-===========HHHHHHHHHHHHHH---==== = =  =     == = ===
+                                               C    C                         CBBBBBBBBBBCCC
+                                                                                VVVVVVV
+                                                                                A AAA
 ZXMMMAAXAAAXAXMAAZXXXXAAXZX1ZZZZX1XZZ1Z1)+=XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                            ++XXXXXXX+XXX+X+X+++X+++++++++++XXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++
+                                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                            ............................................................................
+                                            ==H------=---=-=-===-========== --HHHHHHHHHHHH---===== =  ===   = =  == ====
+                                              C                               CBBBBBBBBBBC
+                                                                                VVVVVVVV
+                                                                                A AAA
 ZXMMMAMZAXAXAXAXAZXZXMAAMXXZZ11XZZX1Z11)+=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                           -++XXXXX+++++XX++X+++++++++++++XX+XXXXXXXXXXXXXX+++++++++++++++++++++++++++++
+                                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                            ............................................................. ... ..........
+                                             =-----=====--==-============ --=-HHHHHHHHHHHH-=== == =       = =       ===
+                                                                              BBBBBBBBBBBC
+                                                                                VVVVVVVV
+                                                                                AAAAAAA
 1XMAMZXXMMAAAXXXXZAZMXAMXZZ1X1Z1X)))Z1Z)1)1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                           -++X+X+XX++++XX++XXX+X+++++X+++X++XXXXXXXXXXXXXX+X+++++++++++++++++++++++++++
+                                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                            ............................................................................
+                                             =-=H=--====--==---=-=====-== -==-HHHHHHHHHHHHH=-===  ==  = = == =  =====
+                                                C                             BBBBBBBBBBBCC
+                                                                               VVVVVVVVV
+                                                                                A AAA
 1XMMMAAAMAMAAXMXXXAXOAAAXZXZXZXXXZZ1Z1111+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    -                      +++XXXXX+X+XXX+XX+XXXX+XX++X+XXXXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++
+                                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                            ............................................................................
+                                            ==--H-H=-=--H=--=----=--==-=----HHHHHHHHHHHHHHH--=====     ==  ==      = ===
+                                                C C     C                   CCBBBBBBBBBBBCC
+                                                                              VVVVVVVVV
+                                                                               AAAA A
 ZZMMMAAMOAAZAXAXXXXXMMMXAXAZXZAAXXXZX1Z1Z)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        -                                  ++XXXX+XX+X++XXXXX++X++X+++XX++XXXXXXXXXXXXXXXXX+X+++++++++++++++++++++++++++
+                                           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                           .............................................................................
+                                            =----=--=-==-----==-==-===--==H-HHHHHHHHHHHHH--=- ==  ==      ==      ===  =
+                                                                          C BCBBBBBBBBBCC
+                                                                              VVVVVVVVV
+                                                                              AAA AAA
 1XMMMAMOOAMZAAAXMAAAMXAAAXMXXZXXAXMXXZXZ11OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       --                                 -+X+X+XXX+++X+++X+XXXXX+X+X+X+XXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++
+                                           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                           .........................................................  ... . .  .........
+                                            -=H=---===-===-=-----=-=-=-=--H-HHHHHHHHHHHHH==== ==                 =    =
+                                              C                           C BBBBBBBBBBBCC
+                                                                              VVVVVVV
+                                                                              AAAAAA
 1XMMMXMAAXXAAZXZAAMAAZXZAZXZXZXXX1Z)1)1)))OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                          -+X+XX+X++++++++++X+X+X+++X+++X++XXXXXXXXXXXX+++++++++++++++++++++++++++++++++
+                                           '''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ''''''''' ' ''''''
+                                           .......................................................  . .     . . . ......
+                                           =-=--=-======= ==-=-=-===-===-==-HHHHHHHHHHH==== = =             =          =
+                                                                            CBBBBBBBBBB
+                                                                              V VVVVV
 11MAAAMMOMAAXZXXOMMAAXMAAXAXXXXAAAXZXZX1ZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        -       -                         ++X+XXXXXX++XXXXX+X+++++++++XXX++XXXXXXXXXXXXXX+++++++++++++++++++++++++++++++
+                                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                           ............................................................ ......... ......
+                                           =-=HHH---==-----=-=========---==-HHHHHHHHHHH--====== =                 = =
+                                              CCC                           BBBBBBBBBBB
+                                                                              VVVVVVV
+                                                                               AA A
 ZZMMMAOAMAMAXZAAOMMAXZAXAAMXAXAAMMAXXZXXZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      -         -                         ++X+X+XXX+X+XXX+++X+++X+X+X+++++XXXXXXXXXXXXX+++++++++++++++++++++++++++++++++
+                                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ''''''''''''''
+                                          ...........................................................   . ...   . . ....
+                                           =-=-=---=-=---===-===-=-=-=====--HHHHHHHHHHH======                        ==
+                                                                            CBBBBBBBBCC
+                                                                             VVVVV
 ZZMMMAOXXXXXAZAXMAMXXZAXMMAXAXXZMXXXXZXZZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      -                                   ++++X+XX++X+X+++X+X+XXX+XXX+X+++XXXXXXXXXXXXX++++++++++++++++=+=+=+-+++++=++++
+                                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''   '           '''
+                                          .......................................................   .
+                                          ====-=--==-=-===-=-=---=---=- ==--HHHHHHHHH--=== =    =
+                                                                            BBBBBBBBC
+                                                                            VVVVV
+                                                                              A
 1ZMXXX11Z1ZXXZAZAZAXXXXZXZAZX1ZXXZZ1X11)1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                          ++++++++++++++++++++++++++X+++++XXXXXXXXXXXXX+X+++++++++++++++++++++++++++++++
+                                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ''    '''   ' ''
+                                          ....................................................... .                   ..
+                                          =========== ====  = = ====-=====-HHHHHHHHHHH-=-===  =
+                                                                           CBBBBBBBBCC
+                                                                            V VVV
 1ZOAAZ1)Z1ZZ11XZXAMXAZZ1ZZZZXZXZZZXXZZZ1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -                                      -++X+XXX++++++X++++++X+++X+X++++XXXXXXXXXXXXXX+X+++++++++++++++++++++++++++++++
+                                          '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ' '''  ''''
+                                          ......................................................... .                 .
+                                           =-=---======-======-===-=-====-HHHHHHHHHHH--=- =====
+                                                                          CBBBBBBBBBC
+                                                                              VVV
 +)Z111))11Z11)11ZXXZ1)1)))111Z1)11Z11)11XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                         -+++++++++++++++++++++++++++++++++XXXXXXXXXXXX++++++++++++++=+===+=+=+=+++=+++=
+                                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
+                                          ..................................................... .
+                                            === ======= ========= ==   ====-HHHHHHHH---===  =
+                                                                            BCCCCBBC
 1ZAXXZZZAXXZZ1ZZAXAXZ1Z)11ZZZZ1)Z1AXXZXZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                         +++X+XXXXXX++XXX+++X+X+X+++++++X+XXXXXXXXXXXXXXX+++++++++++++++++++++++++++++++
+                                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''' '  '''''''''''
+                                          .........................................................             ... ....
+                                          ==-=------==---===-=-=-== ====-=HHHHHHHHHHHH---== = =                        =
+                                                                          CBBBBBBBBBBC
+                                                                            VVVVVVV
+                                                                            AA  A
 )1XXXZXXZZ11Z1Z1ZZZ1Z)1))+)+Z11+1ZZZZ1XZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                        -=++++++++++++++++++++++++++++X+XXXXXXXXXXXXXXX+X+X++++++++++++++=++++++++++++++
+                                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ' ' '   ''''''''''
+                                          ....................................................... . .         . . ......
+                                          = == == == ==== = =====   ==-=--HHHHHHHHHHHHH=-=-=== =
+                                                                          CBBBBBBBBBBCC
+                                                                            VVVVVVVV
+                                                                            AAA A
 MOOOOOOMOMAAAXAXXZXXMAMAAAAXAXXZAAAXXXMXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -=---- -                               =+XXXXXXX+++X+X+XX++XXX+++++++++XXXXXXXXXXXXXXX+X+X++++++++++++=++++++++++++++++
+                                         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '   ' ''''''''''''
+                                         ......................................................... .        . ..........
+                                         =--H--H-===-=-=--==---=========--HHHHHHHHHHHHH=-=-====               =   =   =
+                                            C  C                          BBBBBBBBBBBBC
+                                                                           VVVV VVVVV
+                                                                            A A AAA
 MOOOOOOOOMMXAZXZXZXXMMMMMMAZAXAAMAXZXXXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ =+++=---                               +++XXXX+XXX+X+++X+++X+++++++++++XXXXXXXXXXXXXXX+X+++++++++++++++++++++++++++++++
+                                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''
+                                        ...............................................................     ............
+                                          =-H--=---=-===-===-======== ==--HHHHHHHHHHHHH=-==== ===               =====  =
+                                            C                             BBBBBBBBBBBBC
+                                                                           VVVVVVVVVV
+                                                                            AAA AA
 OOOOOOOOOMMZXZZZXZXZAZAXAAAZXXAXAXXZXZXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-=+++=---                               ++XXX+X+XXXX+XX+X+++X+X+X+++++++XXXXXXXXXXXXXXXXX+X+X+++++++++++++++++++X+++++++
+                                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                         .............................................................      ............
+                                          ---=-=----=--=-===-=-=-==== ==--HHHHHHHHHHHHHH-=-=-=  =             = -======
+                                                                          BBBBBBBBBBBBCC
+                                                                          VVVVVVVVVVV
+                                                                            A A AAA A
 OOOOOOOMMXZ1Z1ZZXZZZX1ZXMXZXZZAMMAAZZ1ZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-++++--                                 ++X+X++XXX+XX+++++++++++++++++X+XXXXXXXXXXXXXXXXXX++++++++++++++++++++++X+XXXXX+
+  ''                                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''
+  .                                     ........................................................... . ..  ..............
+                                         =-=-==---=--====== = === ====-=HHHHHHHHHHHHHHH---======              ==-=--H--=
+                                                                        CCBBBBBBBBBBBBB                             C
+                                                                           VVVVVVVV V
+                                                                              A     A
 OOOOOOOOMXAXMAAMMMOAAXAMOMAAMMAMMMMMMXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=++++---          -     -              -++XXXXXXX++XX+++++++++XX++XX++XXXXXXXXXXXXXXXXXXXXX++X++++++++++++++++XXXXXXXXXX
+ '''                                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  .                                     ................................................................................
+                                         =--H-HH-==--=========--==--==--HHHHHHHHHHHHHHHH---==-=== ====  =   ==--HHHHHHH-
+                                            C BC                        CCBBBBBBBBBBBBBB                        BBBBBCC
+                                                                           VVVVVVVVVVVV                           VV
+                                                                            AAA A   A                             A
 OOOOOOOAXZXZAXMMOMOMMXAAAXAXAMMAAMMAXZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-+++=--         - -                    -++XXXXXXXXX+X+++++++++X+XXX++XXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++XXXXXXXXXX
+                                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                        ................................................................................
+                                        ==----H----=-=========-=---==---HHHHHHHHHHHHHHHHHH----=  = =      = ==-HHHHHHHH-
+                                              C                         CCBBBBBBBBBBBBBBBC                     CBBBBBBC
+                                                                          VVVVVVVVVVVVVV                        VVVVV
+                                                                            A A A A                               A
 OOOOOMOAMAZXMOOOOOOOOAMXXXMMMMMAOAMAXZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-===- -      -+---=--           -      =++XXX+X+XXX+++++++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++++XXXXXXXXXX
+                                        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                        ................................................................................
+                                        ==---=H=---====== ==========-=---HHHHHHHHHHHHHHHHHH--=====  = = ==  ==HHHHHHHHH-
+                                              C                          CBBBBBBBBBBBBBBBBC                   CCBBBBBBB
+                                                                          VVVVVVVVVVVVVVV                       V VV
+                                                                           AA A   AAA A A
 MOOOMMMMMXMXMOOOOOOOOOOXAXXXOAAXAXMZXZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -=-         =+++++==--     -          ++XX+XXX+XXX+++++++++++X+++++++XXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++XXXXXXXXXX
+              '''''                     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''
+              . .                       ................................................................. ..............
+                                        =--=HH-=---====== ====-=======--HHHHHHHHHHHHHHHHHHH----=====      == =HHHHHHHHHH
+                                            CC                          CCBBBBBBBBBBBBBBBBB                   CBBBBBBBBB
+                                                                          VVVVVVVVVVV VVVV                      VVV V V
+                                                                          A   A A AAA  AA
 XAMMMXAXXAMXOOOOOOOOOMAZXZXZXXAXAXAXXZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            --+++++=-                  ++XXXXXXX++X+X+++++X+++++X+++++++XXXXXXXXXXXXXXXXXXXXXXX+++++++++++++++XXXXXXXXXX
+              '''''                     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+               ..                       ................................................................................
+                                        =-------==-=-=====-=====-=======HHHHHHHHHHHHHHHHHHHHH--======  =     =-HHHHHHHHH
+                                                                        CBBBBBBBBBBBBBBBBBBBB                  CBBBBBCBC
+                                                                          VVVVVVVVVVVVVVVVV                     V
+                                                                           AA A AAAAA A AAA
 ZZMAAAXZXXXXOOOOOOOOMMAXZAAAAXAXAXXZX1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            -=+++++-                   +++XXXXX+X+++++++++X+++XXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++XXXXXXXXXX
+              ' '                      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                        ................................................................................
+                                        ==--H-H=-====== ==-===---=-=--H-HHHHHHHHHHHHHHHHHHHHHHH--===  ==    = -HHHHHHHHH
+                                            C C                       C BBBBBBBBBBBBBBBBBBBBBBC                CBBBBBBBC
+                                                                         VVVVVVVVVVVVVVVVVVVV                   VV VVVV
+                                                                          A A A AAA A   A A
 1ZAMMAMAMXXMOOOOOOOOMAMAAXMAMXAXXXAZXZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            -===++=-                  -++XXXXXX+X+X+++X+X+XXXXX++X++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXXXXXXX
+                                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                       .................................................................................
+                                        =-H----=-=-===-=-=-----==-==-=--HHHHHHHHHHHHHHHHHHHHHHH----== = = =   =HHHHHHHH-
+                                          C                             BBBBBBBBBBBBBBBBBBBBBBB                CBBBBBBB
+                                                                        VVVVVVVVVVVVVVVVVVVVVV                  V VVVV
+                                                                         AA AAA A AAA A A A                       A A
 1ZMMOAMAMZMOOOOOOOOOOAMAAXXXAXXXXXXZZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -      -=-=------                 =+++XXXXXXX+XXX+++++X+++X+X+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++XXXXXXX+
+                                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                       .................................................................................
+                                        ==--H-H--=---=====-===-=-=-=-=--HHHHHHHHHHHHHHHHHHHHHHHHHHH=-===== =  ==-HHHHHH=
+                                            C C                         BBBBBBBBBBBBBBBBBBBBBBBBBCB              CBBBCC
+                                                                         VVVVVVVVVVVVVVVVVV VVV                   V V
+                                                                          AAAAAAAAA AA      A
 ZZMAMXXZZ)XMOMMMOMOMOMMAAZXXAXZ1Z11ZAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+            -   - - -                 =++XXX+XX+X+++++X+X+++X+++XX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++X+XXXX
+                                       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                       .................................................................................
+                                       ==---=--=-=====-=-===-===--===---HHHHHHHHHHHHHHHHHHHHHHHHHHHHH--====== = ==-=----
+                                                                        BBBBBBBBBBBBBBBBBBBBBBBBBBBBC
+                                                                         VV VVVVV VVVVVVVVVVV VV
+                                                                          A        A    A   A A
 ZXAAMAAZXZMOOOMMOMMOOMOAAZAZXXXZZ1Z1XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+           ---  -  -- -               ++XXX+X++X+X++++X+X+++X+++X+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++++X+
+                                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                      ..................................................................................
+                                       =--H=H==-=-====-=-===-===-===-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHH----====== ======-=
+                                          C C                           BBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                          VVVVVVVVVVV V     V V VVV
 ZZAAAAMXMMOOOMOMOMOMOOOMMMMXXXXXZZZ1ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+          --- - - - =--               ++++XXXXXXXX++X++++X++X+X++XX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+XXXXXX
+                                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                      ..................................................................................
+                                       ===H-HH----==-====-==-=-==--===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=-=-=H-HHH-
+                                          C BC                          BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC       C CCC
+                                                                        VVVVVVVVVVVVVVVV    VVV V VVV
+                                                                          AA  A   A A
 XXAMOMMMMOOOOMMOOOOMOMOOOMMMMAMXX1ZZZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    -    -=--  ---- - ---             ++X+XXXXXXX+XX++X++X+X+++X++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                      ..................................................................................
+                                       =-=--H-H--=--==-==-=-===-==---=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH--H-H-
+                                            C C                       CCBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBCCCB CC  C B
+                                                                        VVVVVVVVVVVVV V     V   V   V V VV
+                                                                          AAAAAAA
 XAMMMMMOOOOMMOOOOOMMMOOOOMOMOMOAMAX1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       ---=  -----   -=-= - - -      -++XXXXXXXXXXX+XXX+++X+++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                      ..................................................................................
+                                      ==----H------=---===-===-=-=----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                            C                         CBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBCBBBBBBBBBBBCBBBBBB
+                                                                        VVVVVVVVVVVVVVVVV     V     V V V    V
+                                                                          AAAAA A AA
 ZAMMOOOOOOOOOMOMMMMMMMOOOMOOOOOMOAMXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    --=-==+-- -       =-= --=== -    =++XXXXXXXXX++++X++++++X+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                      ..................................................................................
+                                      ==-HH-H----====-======-=========-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                         CC C                          CBBBBBBBBBBBBBBBBBBBBBBBCBCBBBCBCBCBBBCCBBBBBBBBB
+                                                                         VVVVVVVVVV V   V                   V    VV V V
+                                                                          AAAAA A A
 1ZMOOOOOOOOOOMOMMMOAAAOOOOOOOOOOOMMXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -=+=-=++-= -   -   ------+++=-   -+++XXXXXXX+X+++++++X+++++++++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                      ..................................................................................
+                                      ==----H--=-== ====-=========-=-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                            C                         CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBCCCCCBCBBBB
+                                                                        VVVVVVVVVVVVV V V
+                                                                        AAAA  AAAAA
 ZXOOOMOOOOOOMOOMOAMXXXMMOMOOOOOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -== --+=+- -- -       - =++++=--   +XXXXXXXXXXX+X++XX+XX++++X+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                             ''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                     ...................................................................................
+                                      ----H------=- =--=--====-=-=-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                          C                           BBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBCBBBBBBBBBBBBBCBBBB
+                                                                       VVVVVVVVVVVVVVVVVVV  V               V V       VV
+                                                                        AAAA  A AAAAA   A
 ZAOOOOOOOOOOOOOOMAXZXAMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  =++===+==---=-         =+=++++===-++XXXXXXXXX+++X++XXXX+X+++++X+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+    '                       ' '     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                     ...................................................................................
+                                     =--HHHHH--===-==----=-=====-===-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHH
+                                        CCCCC                         BBBBBBBBBBBBBBBBBBBBBCBBCCBCBCBBBBCCBCBCBCCCC BCBB
+                                                                       VVVVVVVVVVVVVVVV
+                                                                        AAA   A AAA A
 XMOOOOOOOOOOOOOOOMXZZ1XXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  ++=-==+=-------       --+=+=++++++++XXXXXXX+XX++++++X+XXX+X++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+   '                        '   '   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                    ....................................................................................
+                                    ==----H-H=H-======-=---=-======---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--HHH
+                                          C C C                       BBBBBBBBBBBBBBBBBBBBBBBCCBBBBBBCBCCCCCCCCCC C  CCC
+                                                                        VVVVVVVVVVV V VV
+                                                                          A AAA A
 XOOOOOOOOOOOOOOOOMMXZ)1ZAOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -+++--=------===        -==+ =+++++++XXXXXXXXXXX+X++X++X+X++XX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  ''                            '  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                    ....................................................................................
+                                     =--H-H------=-==-==-=-==--===--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHH
+                                        C C                         C BBBBBBBBBBBBBBBBBBBBBCBCBBBCBBBBBBBBBBCCB CCCCBCCB
+                                                                       VVVVVVVVVVVVVVVV V
+                                                                        AAA A A   A A
 AMOOOOOMMMMMOOOOOMMZ1+=+ZXMMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  +++=-     -=+=-           --- =++=++X+X+XXX+++X+++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+    '                               ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                    ....................................................................................
+                                     =-=-=---===-== ========  === = ==HHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHH-HHHHHH
+                                                                      BBBBBBBBBBBBBBBCBCCCCCC CCCBBCBCCCCCCCBBBCC BCCCBB
+                                                                            VVVVV V V
 OOOOOOOMOOOOOOOOOOOOA1))XAMMMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--++==- =++++++++==-           --==+++XXXXXXXXX+X+++++XXX+X+++X+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+             '''                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+             ..                     ....................................................................................
+                                    ==---HH-H--=-=====---=-===-=====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                         CC C                         BBBBBBBBBBBBBBBBBBBBBBBCBBBCBBCBBCBCCBBBBCBCBCCBBC
+                                                                        VV  VVVVVVVVVVVVVV
+                                                                            A   A A
 OOOOOOOOOOOOOOOOOOOOMZZZXAMAAXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--+++==++++++++++++-          ---=++++XXXXXX+XX+X+++++++X+X+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+       '''''''''''                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         .. .....                  .....................................................................................
+                                     =H---H-=--=-=======-=-=======--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHH
+                                      C   C                         CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCB CCBCCCBCBCCBBCBCBC
+                                                                      VVVVVVV VVVVVVVVV V
+                                                                          A A A   A   A
 OOOOOOOOOOOOOOOOOOOOOMAAAAMZZ1AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--+++=+++++++++++++=-           ==+++XXXXXXXXXX+X+++XXXXXXXXX+++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  ''' '''''''''''''                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       ..........                   ....................................................................................
+              = =                   =---H-H-H--=-===---------===-=-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                        C C C                         BBBBBBBBBBBBBBBBBBBBBCBBBBCCBCCCBCBBBBBCBCCCBBCCBB
+                                                                      VVVVVVVVVVVVVVVVVV  V
+                                                                        A A A
 XAOOOOOOOOOOOOOOOOOOOAMXAXZ)==1XMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -==++++++++++++++=-             =++XXXXXXXXXXXX+XXXX+XX+++X+X+X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+     ' '''''''''' '                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        ..... ...                   ....................................................................................
+                                     --HHHH------=----=--===-=-=- ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-H-H-H-HHH-H---H-H-
+                                       CBCC                         CCBBBBBBBBBBBBBBBBBCBBBCBCCBB C C C C B CCC C   C C
+                                                                      VVVVVVVVVVVVV V     V
+                                                                        AAA A A A A
 ZZMMMMOOOOOOOOOOOOOMOOMMX1)+=-)1AZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      -=++++=+==--- --             +++X++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+++X++X+++XXXX+XXXXXX
+        ''                          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        .                           ....................................................................................
+                                    ==-======== =  = ===     == =====-HHHHHHHHHHHHH---HHHHH-H--=---===-==-===----=------
+                                                                      BCBBBBBBCBCCC   CCCCC C
+                                                                            V
 XAOOOOOOOOOOOOOOOOOOOOOOOMXZ)=ZZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -===++++++++++=--==--=-         =+XXXXXXXXXX++++X+X+X+X+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXX
+        '''''''                    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        . ...                       ....................................................................................
+                                    ----------====-=-=-=-=======----HHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H-H-H------=--------
+                                                                    CBBBBBBBBBBBBBBBBBCCBBBCBCBBC   C C C
+                                                                      VVVVV V   V
+                                                                            A
 ZXMMOOOOOOOOOOOOOOOOOOOOOMOAAXAXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    --=-+++++++=--=-++=-- -       ++X+XXXXXXX++XXXXX+XXXXXXX+++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+        ''''''                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+         ...                       .....................................................................................
+          =                         -=H-HHH--==-----=-------===---=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-H-H-H-H-HHH-
+                                      C CCC                         CBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCC CCBCC C C C B BCC
+                                                                      VVV VVVVV     VV     VV
+                                                                      A A
 ))AAAOOOOOOOOOOOMMOMOOOOOMOMMMMXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     -==+++++==-  - ----= -       ++XXXXXXXXX+X+XXX+X+++++++++X+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XXXXXXXXXXXX
+        '''''                      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        ....                       .....................................................................................
+          =                         ---HH----=-=---=-=========-===-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H=--H=----H-HHHHHH
+                                       CC                           CBBBBBBBBBBBBBBBBBBCBBBCBBBBBCC C C   C     C CBBBBB
+                                                                      VVVVVVVVV V VV  V     V
+                                                                      A A AAA
 11XXMOOOOOOOOOMMOMOMMMOMOOOOOMOXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+     -==+++++-  - -   - +==== -   ++XXXXXXX+XXX+X+XX++XXX+X+++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXX
+        '''                        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                   .....................................................................................
+                                    -------=---=-=--==---=-=====-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=-=----H-H-H-HHH-H-
+                                                                    BBBBBBBBBBBBBBBBBCBBBBBCBBBBBCCCC       C C C BCB B
+                                                                     VVVVVVVVVVVVVV
+                                                                      AAA   A A
 )ZXAAMOOOOOOOOMMOMMMMMMOOMOOOAAXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      =++=++=-  -      -- ---    -++XXXXXXXXX+X+XX++X+X+X+X+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                   .....................................................................................
+                                   =----H-H--=-=--==-=-=-=-=--=----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-------H-H-HHHHHHHH
+                                        C C                        CBBBBBBBBBBBBBBBBBCBBBBBBBBBBBCCBB       C C CCBCCCBC
+                                                                     VVVVVVVVVVVVVV     V V V
+                                                                      A A   A A A
 )1AAMZMOOOOOOMOAOAMMOMOOMAOMOMAZAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       ++++=- - -   - --  - -     ++X+XXXXX+XXXXX+X+X+XXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+        '''                       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                   .....................................................................................
+                                    -=-----=-----=-=-=-----=-=------HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H--HH---H-----HHHH
+                                                                    BBBBBBBBBBBBBBBCBBBCBBBCBBBBBCC   C  CC   C     CCBB
+                                                                     VVVV VVVVVVV   V   V V
+                                                                      AAA   A A
 -=))))AOOOOAZ1Z11)1)ZXMX1)111))+))OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+       -==-                       =+++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXX
+                                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                    ....................................................................................
+                                     = =  =     = =  = ==== =    ===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H---H=------H-H-HHHH
+                                                                      BCBCBBBBBCBBBCBCBCCCBCBCBCCCC C   C       C C BCCC
+                                                                            V V               V
 )1XZ)1OOOOOMOOOMOMAAMOOMOMMMMMXZXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      -++=- --- -    == -         ++XXXXXXX+X+X++XX++XX+X+X+X+X+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                   .....................................................................................
+                                    ----H--=-=-==--==--=-=-=-=-=-==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-HHHHHHHHHHHH
+                                        C                          CBBBBBBBBBBBBBBBBBBCCBCBBBCBBBBBCCCB C C CCCCCCBCBCBB
+                                                                    VVVVVVVVVVVVV V       V
+                                                                     AA   A AAA
 )1X111XMOMAXOOOOOAAAOMOMOOOMMAX1XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        -   -----   - - ---       ++XXXXXXXXX+X+++X+++XXX++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXX
+                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                  ......................................................................................
+                                    ----H----=-===-===---==----=---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=--H---HHHHHHHH
+                                        C                          CBBBBBBBBBBBBBBBCBBBCCCBBBBBCCCCCCCC     C   BBBCCBBB
+                                                                    VVVVVVVVVVV V V V       V
+                                                                    A AA   AA
 )1XZXZXZAZ11AMMMMAAAMAAMOOOMMAZ1ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                        ===       ++X+XXXXX+X+X+++XXX+++XXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                  ......................................................................................
+                                   =-=H-H-H=-=-===---===-------=-=-HHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-H-H-H-H-HHH-HHHHHHHH
+                                      C C C                        CBBBBBBBBBBBBBBBBBCBBBCCBC CCBCC C C C C CCC CCBCBCBC
+                                                                    VVVVVVVVVVV VV
+                                                                    AAA A   A
 1ZAXXZXZ1Z1XXAOAAXAXZXXXMOOOMMX)XAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              -          =+=      +XXXXXXXXX++++X+XX++X+X+++++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                  ......................................................................................
+                                   -----HHH-====-=--==-=-=====-=-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHH-H-H-H-H-H-HHH-HHHH
+                                        CCC                        CBBBBBBBBBBBBBBBCBCBBBCBCBCC B CCB C C C C C CCC BCBC
+                                                                    VVVVVVVVVVV
+                                                                      A A A A
 XXMMAZXZAXAXAAOXMAMZX111Z1ZXAZ)))AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              -                   ++XXXXXXXXX+X+X+++XXX+XXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                  ......................................................................................
+                                   =H-H------=-=-===---=H----===--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-H-HHHHHHHHHHHHHHHH
+                                    C C                 C         BCBBBBBBBBBBBBBBBBBBBBBCBBBBBBC C C C CCBCBCBCCCBBBBBB
+                                                                    VVVVVVVVVVV V       V
+                                                                      A AAAAA
 1ZMAAXXXMXAAMMOAAAMXZZX11)))Z))=+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+              -                   +XXXXXX+XXX+X+X+XX++XXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                  ......................................................................................
+                                   -H-H--=---=-=-=--==--H--=-=----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHH
+                                    C C                 C         BBBBBBBBBBBBBBBBBBBCBCBCBBBBBCCCCCCC  CCCCCCCCCCBCBCBB
+                                                                  VVVVVVVVVVVVV V V                                 V V
+                                                                    AAAAA A
 Z1AZXZXZXXXZMMMAMXXXAAXZ11Z11))+1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                 -++XXXX+X++X++XX+X+++X+X+XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                  ......................................................................................
+                                  ==H-H-=-==-==--=- ==-=-=----==--HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHH-HHHHHHHHHHHHHH
+                                    C B                           BBBBBBBBBBBBBBBBBBCCBBCCBCBCC CCBCCCCCC CCCCBCCCBBBBBB
+                                                                  VVVVVVVVV V V V V
+                                                                    AAAAA A
 AMOMAZX1XZXZXXAZAAAMMMMZX1X111))OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -                             =+++XXX+X+X+++++++++++++++XXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                  ......................................................................................
+                                  ==--H=-=-======= =  ====---== ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-H-H-HHHHHHHHHHHH
+                                      C                           CBBBBBBBBBBBBBBCBCBCCCBCCCCCBCCCC C C C C CCBCBBCCBCBB
+                                                                    V VVV V V V
+                                                                      A A
 MAOAXZZ1Z1ZZZ)Z1ZZXXAMMAXZ11))1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  -                             ++++X+++X+X+++++X+++++++++X+++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                 .......................................................................................
+                                  ==-===-=-=====-=========-===-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHH-HHHHHHHHHHHH
+                                                                  BBBBBBBBBBBBBCBBBCBCBCBBBBBCBBBCCCC  CCCC CCCCCCCCBBBC
+                                                                  VVVVVVVVV V
+                                                                    AAA A
 OOOOOMMXZZAXMXAAMMMMOOOMMXZZZZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++-               ---        ++++XXXXXX++XXXXXXXX+++++X+X+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX
+                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+                                ........................................................................................
+                                ===-H----==--------=====-=-=-=-=--HHHHHHHHHHHHHHH-HHHHHHHHHHH-H-HHH=--H-H-H-H---HHHHHHH-
+                                    C                             BBBBBBBBBCBBCCC CCCCBCCCBCB C CCC   C C C C   CCBCBBC
+                                                                  VVVVVVV V
+                                                                    AAA A
 OOOOOOOMAXMAMAMMOMOOOOOOOOMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++=-         - --+++=--   -++++XXXXXXXXXXX+X+X+X+++++X+X+X++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ ''''                         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ..                          ..........................................................................................
+   =                            ==--H-H------=-=-=-== ==-=-=-====-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH-H-H-HHHHHHHH
+                                    C C                           BBBBBBBBBBBBBBBBBBBCBCCCCBBBBCBCC CCCCBCC C C CBBBBCBB
+                                                                  VVVVVVVVVVV VV            V                       V
+                                                                    AAA   A
 OOOOOOOOOOMMOMMMOOOOOOOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++X+++==-  -   --=-+------  -++++XXXXXXX++++XXX++++++X+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''             '         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ ......                       ..........................................................................................
+  =-=                         =  =----H--====---======- ======= ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                      C                           BBBBBBBBBBBBBBBBBBBCBBBBBCBCBCBCBCCCCCBCCCBCBCBBBBBBBB
+                                                                   VVVV VVV V V V                                 V V
+                                                                    A
 OOOOOOOOOOOOOOOMMOOMOOMAMMXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XX+++++++===  -- --      -+++++XXX+X++XXXXXXXX+++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''                  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........                   ..........................................................................................
+ ==--== =                      ===H--=-==--------===============--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHH
+                                  C                               BBBBBBBBBBBBBCBCCCBCBCBBBBCCCBCCCBBBBBC BCBCBBBBBBBBBB
+                                                                  VVVVV V V                                     V V   V
 OOOOOOOOOOOOOOOOOOOOOMMAAXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X++++++++++++++--       ++++++XXXXXX++X+XX++X+++++++++X+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............             ............................................................................................
+====-=======                   == ------==-=--==-==== ====-=====--HHHHHHHHHHHHHHHHHHH-HHH-H-H-H------HHHHHH---HHHHHHHHHH
+                                                                  BBBBBBBBBBBBBCBCBCB BCC C C C      CCCCCC   BCCCBCCBBB
+                                                                   VVVV VVV V
+                                                                    A A
 OOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXX++++++++++++++++-  =+++++XXXXXXXXXXXXX++X++X+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................       ............................................................................................
+ =-----==== ===   =          ===--H-H-H------==-==-===========  -HHHHHHHHHHHHHHHHHHHHHHHHHH-H--HH---H-HHHHHHHHHHHHHHHHHH
+                                  C C C                          BBBBBBBBBBBBBBCBCBBBBBCCCC C  CC   B BCCCCCBBBBBBBBBBBB
+                                                                  V VVV V VVV     V   V                       V VVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXX+XX++++++++++++++++++++++XXXXXXXXX+XXXX+XX++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................   ..............................................................................................
+ =H-H-H=--==== ===  = =     = ==--HH-----=H---=--===== == === ===-HHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-H-HHHHHHHHHHHHHHHHHHHH
+  C C C                           BC      C                       BBBBBBBBBBBBBCBBBCBCBCCCBBB CCC C CCBBBBBBBBBBBBBBBBBB
+                                                                  VVV VV  VV                                V  V VV V V
+                                                                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXX+XXXXXXXXXX+++++++++++++++XX+XXXXXXXXX++X++XX++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+==HH-=----H-----===   =   =====--=H-H------==-==--============= -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHH
+  CC      C                       C B                            CBBBBBBBBBBBBBBBCBCBCBCBCBBBCBCC BCCCBBBBBBBBBBBBBBBBBB
+                                                                  VVV VVV V V       V                 V       V V V V VV
+                                                                    A                                                 A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXX+XXXXXXXXX+++++++++++++XXXXXXXXXXX+XXX+XX+X+++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=-H----=---H--H--== = = = ====----HHH-H-H=---=--=-===== = = = = =HHHHHHHHHHHHHHHHHHHHHH-HHHHH-HHHHHHHHH-HHHHHHHHHHHHHHHH
+  B        C  C                   CCB C C                        CBBBBBBBBBCBBBCBCBCBCB CCBCB CCCCCCCCC CCBBBCBBBBBBBBBB
+                                                                  VVVVV V V                                    VVVVVV VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+++++++++X+XXXXXXXXXXXXXXX+XXX+X++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+--HHHH--H-HH-----==   = ==-=------HHHHH-H--=---=-== === ===== = =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHH
+  BBBC  C CC                      CCBCC C                        CBBBBBBBBBBBCBCBCCCCCBCCCCCBCCCCCC BCCCCBBBBBBBBBBBBBBB
+   V                                                              V V V   V                               V V VVVVVVV VV
+                                                                                                                  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXX++++++X++XXXXXXXXXXXXXXXXXXXX+X+++X++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=-HHHHHHHHH---------==  ==-==--HH-HHHHH-H--------=-===-  ===== ==-HHHHHHHHHHHHHHH-HHHHHHHHHHH---H---HHHHHHHHHHHHHHHHHHHH
+  BBBBCCBCB                    CC CCBCC C                         BBBBBBBBBBBBBCB BCBCBCBBBBC   C   CCBCBBBCBCBCBCBBBBBB
+  VVV                                                              VVVVVV V                                 V       VVVV
+                                                                    A                                               A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXX+XXXXX+X+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=-HHHHHHHHHHHHH-HH-HH-= =--------HHHH-H-H--=-----=-====  ==== = -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHH-HHHHHHHHHHHH
+  BBBBBBBBBBBCC CC CC            CCCC C B                        CBBBBBBBBBCBCBCCBBCBCBCCCBCBCCCC CCCCCCCCC BBCCBBBBBBBB
+  VVV     V                                                       V VVVV  V                                         VVVV
+                                                                                                                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXX+++++XXX+XXXXXXXXXXXXXXX+X++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+ =HHHHHHHHHHHHHHHH---== = ---=---HHHH---H----=-=====  === =   ===-HHHHHHHHHHHHHHHHHHHHHHH-HHHHH-H-HHHH-HH-H-H-HHHHHHHHHH
+  BBBBBCBCBBBCBCBC               CCCC   C                         BBBBBBBCBCCCCCCCBCBCCCB BCBCB C CCCC CC C C BCBCBBBBBB
+    V V   V V                                                      VV                                             V   VV
+                                                                                                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXX+X+++++++X++XXXXXXXXXXXX+X+X+XXX++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+  -HHHHHHHHHHHHHHH-=-=======-==---HHH-H-H--=-=-=---===  = == == =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-HHHHHHHHHHHH
+   CBCBCCCBBBBBCBC                BCC C C                         BBBBBBBBBBBBBCCCBBCBBBBCBCBCBCBCCCCCC C C CCBCCCBBBBBB
+                                                                  VVV VV                  V                           VV
+                                                                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXXXX++++++++XX++X+XXXXXXXXX+XX++XXX+X+++++++==++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  .......................................................   . . ........................................................
+  ==----H-HHHHHHH-===  ===--==-=------H-H=--==---=-====       =  =HHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHH-H---H-H-H---------HH
+        C CCBCCCC                     C B                         BCBBBBBCBCBBBCCCB BCBCBCBCBCCCCCC C   C C C         BB
+                                                                    V V                                                V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=--1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++X+++++++++++++X+++X+XX+XXXXXX+X+++++++++++-     ==++XXXXX+XXXXXXX+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  .....................................................         ........................................................
+  = ==========-=== ==== ====-===-=H-=--H---=-==== ===            =--HHH=-HH----=------H=------H-H-H-H-HHH-HHHHH-H=-=----
+                                  C    C                            BCC  CC           C       C C B C BCB CCCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=    ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++XXXXXXX+XXX+XXX+X+X+XXX+++++        ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ ......................................................          .......................................................
+   ====    == === === ======-------=--H=---=-=-=---===           =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHH-HHH-H----==-
+                                      C                           CBBBBBCBBCCCCCBCCCCCBCBCBCCCBCC CCCCCCBCB CCC C
+                                                                    V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1     =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++X+X+X+X+XXXXXXX+XXX++X+++XXXX+++-       =+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''         '''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................         .......................................................
+  ======= =      == = ==-=-=-=-=--HHH-H=---==-===----==           -HHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHH---=
+                                  CCC C                            BBBBBBBBBCCCCCCBCCCCCC C CCCCBCCBCBBBBBBCBCBCCCC
+                                                                    V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-    )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++X+++++++++++++++XXXXXXXXXXXXXXXXXXX+XXXXXXX++++        -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''          ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................          ......................................................
+ =========-=====   =======--HHH---H-H-----H-H=-------==           -HHHHHHHHHHHHHHHH-HHHHH-HHHHHHHHHHHHHHHHHHHHHHH-H---==
+                            CCC   B C     C C                      CBBBBBBBCBBBCCCB BCCCC CCCCBCCCCCBBBCBCCCCCCCC C
+                                                                    V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-      OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++X+++++++++++++X+X+XXXXX+XXXXXXXXXX+X++X+X++++++-        ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................          ......................................................
+ =========-=============-=-=-----=--H-H---H-=-==-=-=====           =HHHHHHHHHHHHHHHHHHH-H-HHHHH-H-HHHHHHHHHHHHH--------=
+                                    C C   C                         BBBBBBBCBBBCBBBCBCC C BCBBC C BCBCBCCCCCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-      XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXX++XXX++++++++X+X+XXXXXXXXXXXXXXXXXXX+X+X+X+X+X++-         +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''          '''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................          .....................................................
+  -------==---= = = ==-=-=----H-H-H----------=-=-=-=-=-=           =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H=
+                              C C C                                 BBBBBCBBBCCCBBCCBCBBBCBBBBCCBBBCBCBBBCBCCBBCBCBCC C
+                                                                      V                 V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)       MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++X++X+XX++X+++X+++XXX+X+XXXXXXXXXXXXXXX+XXXXXXXX++X+++++          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''           ''''''''''''''''''''''''''''''''''''''''''''''''''''
+ ........................................................           ....................................................
+ ==-==-=--==H===-===---=-=----H-HHH-HHH-H=HHH-----==-==             HHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+            C                 B CCC CCC C CCC                       CCBBBCBCBCBCCBCCB BBBCBBBCBBBCBCBBBCBBBBBCBCBBBBBCCC
+                                                                      V                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)       ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++X+++++++XX+++XXXXXXXXXXXX+XXXXX++++++++++=          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''           ''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................           ....................................................
+  ==============-== ====--===-------H-HHH=-----========             -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                    C CCC                            CBBBBBCBCBBBBBCBBBBBBBBBCBCBBBBBCBCBBBCBCCCBCBBBCBC
+                                                                      VV          V                 V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ--     =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++X++++++++++++++X+++X+XXXXXXXXXXXXXXXXXXXXXXX++XX+XXX+++=         +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          ''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........................................................          ....................................................
+ ==-==============-===-=H-----H-H---H---HH-----==-H=---===          =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                        C     C C   C   CC        C                  CBBBBBBBBBBBBBCBCBBBBBCCBBCCCBCBCCCCBBCCBBCBBBBBCCB
+                                                                       VVVV   V V                               V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+-     -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XX+++++++++++++X+++++XXXXXXXXXXXXXXXXXXX+XXXXXXXXX++++++-        +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................         ....................................................
+  =-- ============-=====--H----HH-H-H---H--=---------====           =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHH
+                          C    CB C C   C                             BBBBBBBCBBBBBCBCCCCCBCBBCBCCBCBCCBCCCCCBC CBBCCCCB
+                                                                        V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-      OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++X+++X+X+XXX+++XXXXXXXXXXXXXXXXXXXXXXX++XX++++++XX++=        ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................         ....................................................
+ =======-===-=-=---===H---HH--HHHH------H----==--======--            =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                      C   CC  CCCC      C                             BBBBBBBBBBBBBBBCBCCCBBBBBCBBBCBCBBBBBCBBBCCBBBBCBC
+                                                                        V VVV V V               V                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=      OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++XXXXXXXXXXXXXXX+X+X+XXX+X+X+X+X+X+++        =+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          '''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................................          ...................................................
+= =   = ===== = ========------H-------H=H=-=---=-=-=-=-=-=           =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                              C       C C                             BBBBBBBBBCBBBCBCCCBCBCBBBBBBBBBBBBBCBCBBBCBBBBBBBB
+                                                                        VVV V                 V   V         V     V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1      )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++X+++++++++XXXXXXXXXXXXX+XXX+X+XXX+XXX+++X+++++++-        +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         '''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................         ...................................................
+ ===========-=========----HHH---H-H=---=H=---=---===-=====            HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                          CCC   C C     C                             BBBBBBBBBBBBBBBCCCCCBBCCBBBBBBBCBBBCBCCBBBBCBBBCBB
+                                                                            V V                                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=     -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X+++++++++++++++++X++XX+++XXX+XXX+XXXXXXX+XXXXXXX+XXX+X++++        +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................          ..................................................
+ =-====== ===== ====-==--===---=--H=-------=-------=---=- =           HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                  C                                   CBBBBBBBBBBBBBBBBBBCBCCCCCBBBCBBBBBBBCBBBBBBBBBCBB
+                                                                        VVV   V     V                           V      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X+++++++++++X+++++X+X+++XXXXXXXXXXXXXXXXXXX+XXXXXXXXXX+++++=       -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................................................         ..................................................
+= -===== =====-=====-=-===--H-H-H-H-H-H-H----=--H---HHH-===           -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                            C B C C C C C       C   CCC                BBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC
+                                                                        VVV V V VVV V V           V V V V V VVV   V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)     +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXX+++++++++++++++X+XXXXXXXXXXXXXXX+X++XXX++++++X+XXX+X+X+++-       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................        ..................................................
+=---- === ==========-=--------H-H-HHH=-==---======-=---=-=-==         =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                              C C BCC                                  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                        VVVVV V   V V    V     VVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                        A A                       A A         A   A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-    -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX++++++++X+X++X+++XX+XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+++        +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................        ..................................................
+--HH--========-=-==-===--=-HHHHHHHHHHHHHH-H=H-------H------==          -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  CC                       CCCBBBCBCBCBCC C C       C                   BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                        VVVVVVVVVVVVVVV V VV VVVVVVVVVVVV VVVVVVVVVVVVVV
+                                                                          A     A   A         A A       A   AAA A A AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXX++++X+++++X++XX+XXXXXXXXXXXXXXXXXXXX+++XX+XXX+X+XXXXX+++=       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................         .................................................
+=-H---====-=====-==--=----H--HHHHHHHHHH---===--=---=-=H----==          -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  B                       C  CCCCCBBBCC               C                 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                        VVVVVVV V V       V   VVVVVVVVVVV VVVVVVVVVVVVVV
+                                                                          A   A                 A   A A       A A A AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+     AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X+++++++XXX+X+XXX++XX+XXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXX+X++-       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''''''''''''''''''''''''
+...............................................................        .................................................
+==H==== ==---=-=---==--=------H-HHHHHHH--------=--H-HH---HH=-=         =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  C                           C CCBCBCC           C CC   CC             BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                         VVVVVVVVVV V   VVV V V VVVVVVVVVVVVVVVVVVVVVVVV
+                                                                          A A AAA                 A   A         AAA AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-    +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X+X+++++++XXXXX++++XX+X+XXXXXXXXXXXXXX+XX+XXXXX+X++XX+XX+XX++-       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''''''''''''''''''''''''
+...............................................................        .................................................
+= -=- = ====----H====--=-=----H-H-------=--=----H=-==--=--=--           HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                C             C C               C                       BBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                         VVVVVVVV V     V     VVV VVV VVVVVVVVVVVVVVVVVV
+                                                                           AA A                 A A     A     A A AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-     XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++X+++XXXXXXXXXXXXX+X+XXXXXXX+++X+XXX+XXX+X+X+XX++++        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''
+...............................................................         ................................................
+  ======= ====-===--------H----=H=--H----===-=H--=---=-=H=--==          HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                          C     C   C         C         C               CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                          VVVVVVVVVVVV V  VVVVVVV VVV VVVVVVVVVVVVVVVVVV
+                                                                           AAAA AAA             A A A AAA A     AAA AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA=     -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X++++++++++++++++++++++++XXX++X+X+X+XXXX+X++XX++XXX+X+X+X++++=        +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''
+...............................................................         ................................................
+  -==== ==    ========= ===---==-=-=-=----=-==--==---=-=-=-===          =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                                                         CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                          VVVV VVVVVV V V V   V VVVVVVVVV  VVVVVVVVVVVVV
+                                                                                                      A         A AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXX++++++++++++++++XXXXXXXXXXX+XX++XXXXXXXXXXXXXXXXXXXXXXX+++-       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''''
+...............................................................         ................................................
+  =-H-=======   ======----H------=--==------H-H-H---H----HH--==          HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    C                     C                 C C C   C    CC              CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                           VVVVVVVVVVVVVV VV V VVVV VVVVVVVVVVVVVVVVVVVV
+                                                                            AAA AAA A             A     AA    AAA AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1=     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXX++X+++++++++++++XXX+XXX+X+++XXXXXXXXXXXXXXXXXXXXXXX+XXXX++        =XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         '''''''''''''''''''''''''''''''''''''''''''''''
+...............................................................          ...............................................
+ =--H-==-=============---=---=-===--------H-H-H-HHHH-H--H=----=          -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    B                                     C C C CCCC C  C                 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                           VVVVVVVVV VVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                            AAA A A     A     A   A   A A AAAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXX++++++++++++++++XX+++XXX+X++XXXX+XXXXXXXXXXXXX+XXXXXXX+++=       -+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         '''''''''''''''''''''''''''''''''''''''''''''''
+................................................................         ...............................................
+  =-HH-== ====  =  ====--===---=-==---H=H-HHHHHHHHHH-=--H----==          =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    CC                                C C CCCCCCCCCC    C                 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                           VVVVVVVVVVVV VVVVV VVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                              A   A       A     A A A  AA   AAA A AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+-    1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXX+++++++++++++++++X+++X+++X+X++XXXXXXXXXXXXXXX++XXXXX+X++++        +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         '''''''''''''''''''''''''''''''''''''''''''''''
+................................................................         ...............................................
+  = ---======= ==  =====-===-===-=-==-----H-HHH-HH--==-----=-===          HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                          C CCC CC                        CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                VVVVVVV VVVVV VVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                    A   A           AA  AAA AAAAA A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-    -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++X+XXX++X+++++X+++XXXXXXXXXXX+XXX+X+++X++-       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''
+  ...............................................................         ..............................................
+    === = ======= = === =-=---==-=====-===HHHHHH--H--=---=-===-           HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                          CCCCCC  C                       CCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                            V   V   V V VVVVV VVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                                                    A A     A     AAAAA A AAA A   A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++X+X+++++++++++++++++XXX+++++++X+X++XXXXXXXXXXXXXXXXXXXX+X+++       =XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''
+ ................................................................         ..............................................
+  = ==-=-= =======  ======---=======-=-==-HHHHHHH----H-HH-H-H=-=          HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                          CCBCBCC    C CC C C             CCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                VVVVVVV VVVVVVV VVVVVVV VVVVVVVVVVVVVVVV
+                                                                                    A       A A A AAA   AAAAA   A AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+     XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X+XXX++++++++++++++++++XX+XXX+X+X++++XXXXXXXXXXXXXXXXXXXX+X+++        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''
+  ...............................................................         ..............................................
+  ==-=---========  ==  ====--=--H=-=-====-HHHHHHH-H-HHH-HHH-H=-=          HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                C         CBBCCCC C CCC CCC C             CCBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                            VVV   VVVVV V V     VVVVVVVVVVVVVVVVVVVVVVVV
+                                                                              A     A A                  AA   AAAAA A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+-    -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-=+++XXXXX++++++++++++++++X+XXXXX+X+++X+XXXXXXXXXXXXXXXXXXXXXXXX++        +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''
+  ................................................................        ..............................................
+  = =-HH--= = == == ==== =-=-----=-===-=H---HHHHH-HH----HHH-HHH-=         =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+      CC                                C   CCCCC CC    BCC CCC            CBBBBBBBBBBBBBBBBBCBBBCCCBBBBBBBBBBBBBBBBBBBB
+                                                                            VVV V VVVVV       V       VVVVVVVVVVVVVVVVVV
+                                                                              A                         A AAA A A AAA A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ =++++XXXXX+++++++++++++++X+++X+XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXX++-       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''
+  ................................................................        ..............................................
+  ====--H--====    ==== ==-===-=---=--HHH--HHHHHHHH-H----HH-H-H-=          -HHHHHHHHHHHHHHH-H-H----HHHHHHHHHHHHHHHHHHHHH
+        C                             CCC  CCCBCBCC C    CC C C             BBBBBBBBBBBCCCC C C    CBBBBBBBBBBBBBBBBBBBB
+                                                                            VVV  VVV                  V VVVVVVVVVVVVVVVV
+                                                                                                              A A A A A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1=-    OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ +++++X+++++++++=-+++++++++++XX+XXXXXX+XX+XXXXXXXXX+X++++XX++XX+++        +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  ''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''
+  .............   ...............................................         ..............................................
+  === -==== ===     = = =====--=H-H---=--=----H-H--=-====--==--=           -HHH--HHHHHHHHHHHH---H---HHHHHHHHHHHHHHHHHHHH
+                                C C           C C                           BBB  CBBBBBCBBBBB   C   CCBBBBBBBCBBBBBBBBBB
+                                                                                  V V     V            V  V V VVVVVVV
 OOOOOOOOOOOOOOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-    OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+==++++++++++++=-  ++++++++X+X+XXXXXXXXXX+XXXXXXXXXXXXXX+XX+XXXXX+++=      +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  '''''''''''     '''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''''''
+  ...........      ...............................................         .............................................
+  ==== =  =        == === -=-=----------=----HH--HH----=--=-H-H-==         -HHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHH
+                                             CC  CC         C C             BBBBCBBBBBBBBBBCCCBCB BCBBBBBBBBBBBBBBBBBBBB
+                                                                              V   VVVV  VVV           V      VVVV V VVVV
+                                                                                  A A                                 A
 OOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-    MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++-= - ++++++X+XXXXXX++XXXXXXXXXXXXXXXXXXX++XXXXXX+X+X++=       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  '''   ''''      '''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''''''''''''''''''''
+    .   ...       .................................................        .............................................
+                  ==== =-=--H---==--H-----H-----H----==------=-=-=          HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHH
+                            C       C     C     C                           BBBBBBBBBBBBBBBCBBBCBCBCCCCCCCBBCCBBBC  BBBB
+                                                                              VVV V V V V                             VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-    XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=++++---++++++++++++++X+XXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXX+XXX+XXXXX++       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''''''''''''''''''''
+          .....   .................................................        .............................................
+              =   = = -=----H----=-=--H-H-----HHH-------=-H-=-----=        =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                            C         C C     CCC         C                 BBBBBBBBCBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBCBBBB
+                                                                              V   V   V       VVV V V  VV   V V      VVV
+                                                                                                                      AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)=   -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++---=+++++++++++++++XXXXXXX+++XXXXXXXXXX+XXXX+X++XX+XXXXXXXXX+++       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''
+ ..        .........................................................        ............................................
+  =         = == ==== ==H-H-H--===---H------=-HH-=-==--=---------==         HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                        C B C        C        CC                            CBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                             VVVV   V V         V VVV V VV  V V V     VV
+                                                                              A                   A     A             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+-   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++++=-=+==++++++++++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX++-     -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ ''''       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''
+ ...        ........................................................        ............................................
+  ==          =  ==  =--H=HHHHH---HHHHH---H-H-H-H-------=-H-H------         HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                        C CCBCC   CCCCC   C C C C         C C               CBBBC BBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                             VV           V        VVVVVVVVVVVVVVVV VVVV
+                                                                                                     AA A A     A   A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)    AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-+++++--++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  ''''  '   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''
+  ...       ........................................................        ............................................
+  = =        =====  ==----HHH----HHHHHH-H-HHH-HHH-H---H---H-H-H---=         -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                          BCC    CCCBCC C CCC CCC C   C   C C C              BBBCCCCCCBCBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBB
+                                                                              V           V          VVVVVVVVVVVVVVVVVVV
+                                                                                                      AAAAA AAAAAAAAAAAA
 AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-   )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -+++==-==++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+XXX+XXX+X++       +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  '''       '''''   ''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''
+  ...         ..    ................................................        ............................................
+   ==         =     = ==--HHHHHHHHH-HHH-H-H-HHHHHHH=-----=--H=H--=-         =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                          CCCCCCCCC CCC B C BCBCBCC         C C              CBBBBBBCCBCBCBCBBBCBCBCBBBBBBBBBBBBBBBBBCBB
+                                                                              V V                 V   VVVVV VVVVVVVV  VV
+                                                                                                      A AAA AAAAAAAA  AA
 XAOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=-  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  +++++===+++++=+- ++++XX+XXXXXXXXX+X+XXXXXXXXXXXX++++XXXXXXXX++XX+++-      +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+   '''    ''  '    ''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''''
+    .               ................................................        ............................................
+                    ===--=----H-HHH=-=----H---HH--====--------==--=          HHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHH
+                              C CCC       C   CC                             CBBBBBBBBBBBBBBCCC BCBCBBBBBBBBBBBBBBBBCCBB
+                                                                               VVVV                     VVVVVVVVVVVV
+                                                                                                         AA     A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)-   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--=++=----=+++--=-++++X+++XXXXXXXXX+X+XXXXXXXXXXXXXXXXX+X+++XXXXXX+++-      ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+   ''       '     '''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''''''''''''''''''
+            .      ..................................................        ...........................................
+                    ==-===----H-H-H=-=----H---H-H-H----=-===------==         =HHHHHHHHHHHHH-HHHHH-H-HHHHHHHHHHHHHHHHHHHH
+                              C C C       C   C C C                           BBBBBBBBBCCCC BCCCC C CBBCBBBBBBBBBBBBBBBB
+                                                                                                          VVVVVVVVVVV
+                                                                                                           AAA  A AA
 OOOOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-   )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=++++--   =+++--=+++X++++XXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+X++XX++XX+X+++-      +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  '''      ''     ''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''
+  ..              ...................................................        ...........................................
+                  = -====-----H--HH---H-H---H=H-HH-----=-==--==--=-==         -HH-H-H-H---H-H-----H--HHHHHHHHHHHHHHHHHHH
+                              C  CC   C C   C C CC                             CC C C C   C C     C  CCCBBBBBBBBBBBBBBBB
+                                                                                                          V VVVVVVVVV
+                                                                                                            A A A AAA
 OOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ--  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+==+++=- -=++++--=++++++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++X+XXXXX+++=      =XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  '''     ''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''
+   ..       .     ....................................................        ..........................................
+                  =====--=H-HH-HH-HHHHHHH---HHHHH-----======-=--H--==         --HHHHHHH--=--HHH-HHH-H-HHHHHHHHHHHHHHH-H-
+                          C CC CB BCCCCCC   CCCCB               C               BCBCBCC     CCB CCC C BBBCBBBBBBBBBCC C
+                                                                                                            V VVVVV
+                                                                                                              A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=-+++==-=++++++=++++XXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX+XX+XX+++-     -+XXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXX+++++
+  '''    ''     '''''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''
+  ..      .      .....................................................        ....................................... ..
+                 = =---==-HHH-HHHHHHHHH-HHH-H-HHHHH------===--=--=--==        =HHHHHHHHHH-H-H=--HHHHHHHHH--HHHHHHHH=  ==
+                          CCC CCCCBCCBC CCC C CCBCC                            CBBBCCCCCC C C   BCCCCCBCC  CCCBBBBC
+                                                                                                              VVVV
 OOOOOMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=   )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--==-   +++++-=+++++XXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXX++++X++++X+XXXXX++=      +XXXXXXXXXX+++X+XXXXXXXXXXXXXXX+XXXXXX++++
+          ''    '''''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''
+          .     .......................................................       ..........................................
+                 ===------H-H-HHHHHHHHHHH=-=--H-H-H--====-====-=-----=        =-HHHHHHH--===-=--H-HHHHHHH-H--=HHHHHH=
+                          C C BCBCCBBCCCC     C C C                             CCCCCCC         C BCCCBCC C   CCBBBC
+                                                                                                                V
 OOOOOMMMOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+    OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-+++-   +++-  --++++X++XXXXXXXXXXXXXXXXXX+X+XXXXXXXXX+X+++++++++X+X+++++      ++X+XXXXXXX+X++++XXXXXXXXXXXXXX++++XXXX+++
+  '             '''''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''
+  .             .......................................................        .........................................
+                ====-==--HH---H-HHHHHHHHH=-=---HH-H-H=-=========-=-===          -=H-H----=-====-H---H-HHH----= ==-HHH===
+                         CC   B CCBBBBCCC      CC C C                             C C           C   C CCC         BBB
 MOOOOOOOOMOOMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-   MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -+++=--- --    ++++++XX+XXXXXXXXXXXX+XXX+XXXXXXXXXXX+X+++++X+++X++++++=       ++++XX+X+X+X+++XXXXXXXXXXXX++X++++++XXX++
+  ''             ''''''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''''''''''''''''
+  ..             .....................................................          ............................... ........
+                    ==--=-H-------HHH=H--=-----------=-=====-===-====           = =--=-=-=-===----H-H-----==-     =-H- =
+                          C       CCC C                                                           C C               C
 AXMOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+-  )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   -=-- =-===-----+++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+XX+++XX+X+X+++++-      -+=++XXXXXX+++=++XXXXXXXXXXXXX+++++++X+++
+                  '''''''''''''''''''''''''''''''''''''''''''''''''''''         '  '''''''''  ''''''''''''''''''''''''''
+                  .....................................................            .........  ................... ......
+                   ==--HHHHHHHHHHHHHHH-HH-HHHHH--=-----=--===-H=-=-==              =---HH-=   ==-HHHHHHHH----==   ==-===
+                       CCCBCCCCCCCBBCC CC CCCCC               C                        CC        CCCBCBCB
+                          V
 AMOMOOOOOOOOOMOMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMA1=-=ZOAZ+XOOOOOOOMAOMOOOOOOOOOOOOOOOOOOOOOOOO
+  - --=-==--- -   ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++X+XXXXXXX+++-        -    =++X++=  - ++XXXXXXXXXXXXX+X+XXXXX+
+                  '''''''''''''''''''''''''''''''''''''''''''''''''''''               '''''     ''''''''''''''''''''''''
+                  ....................................................                .....     ........................
+                   =--H-HHHHHHH-HHHHHHH-HHHHHHH---H-H--====-=-------=                   -=      ==-HHHHHHHH-HH-=-=H-H--=
+                      C CCBBCCC BBBBBBC CCCBCBC   C C                                              CBCBBCCC CC    C C
+                                                                                                      V
 AMMMOMMOOOOOOMMZXAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOA-  +=+--=MOOOOOMAZ+OOOOOOOOOOOOOOOOOOOOOOOO
+    -  ------     ++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX++X++++++++== -=           +++=-    ++XXXXXXXXXXX+X+XXXXXXXX
+                  '''''''''''''''''''''''''''''''''''''''''''''''''''''                '''      ''''''''''''''''''''''''
+                   ...................................................                  ..       .......................
+                    -=--HHHHHHHHHHHHHHHHH-HHHHHHHHH-HH-===--==-=======                  =        =-HH-HHHHH-H=-=H-HH----
+                        BBCCBCCBBBBBBBBCC BCCCCCBCC BC                                             CC CCCCB C   B CC
+                                 V
 ZXMMMMAZMAMMOOMX11OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZXX-   -)+ -=1OOO++1++MOOOOOOOOOOOOOOOOOOOOOOO
+            +=    -+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+X+++++++++++=               ++-      +XXXXXXXXXXXXXXXXXXX+XX
+                    ''''''''''''''''''''''''''''''''''''''''''''''''''''                 '       '''''''''''''''''''''''
+                    ............................................. ......                 .        ......................
+                     =--HHHHHHHHHHHHHHHHHHHHHHH-HHHHHH-=---=-===                                  --------H----------=-H
+                        BBBBCCCCBBBBBBBCBCBCBBC CCCCCC                                                    B            C
 XAMMMA1ZXXMAOOOMAZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX)+=- =--    -)MOO+=  =1OOOOOOOOOOOOOOOOOOOOOO
+            --=   --++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+X+++++==+++++++                 +-      ++X+++XXXX++++XXX+X+XX
+                    '''''''''''''''''''''''''''''''''''''''''''   '''''                   '       ''''''''''''''''''''''
+                     ..........................................   .                       .       ......................
+                      H-HHHHHHHHHHHHHHHHHHHHHHH-HHH---=--=-===                                     =-===----====---=-=--
+                      C BCBBBBBBBBBBBBBCBBBCBCC CCC
+                            V    V  V
 MOOMOOOOOOMMOOOOMOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMMAMMZ-   =XOOOO)=Z+=-OOOOOOOOOOOOOOOOOOOOOO
+ -= --=-=-  ---- -=  +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++-             -=+-      -+++++++++++++++XXX+XX
+                      ''''''''''''''''''''''''''''''''''''''''''''''''''''                '        '''''''''''''''''''''
+                      ........................................... .   ...                           ....................
+                      -HHHHHHHHHHHHHHHHHHHHHHH--HHH-H-H--=-====                                     ==    ===== ==---=--
+                       CCBBBBCBBBBBBBBBCBCBCBC  BBC C C
+                          V     V V VV  V V
+                                A
 OOOOOOOOOOOOOMMXAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=   -1AOOOOOMOO1)ZMOOOXZMOOOOOOOOOOOOOO
+--+==---===-=     -=-=++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++=+++++++-=-++=-        --=-- --    +++   +++++++++XXXXX
+  '                   ''''''''''''''''''''''''''''''''''''''''''' ''  '     '                       ''    ''''''''''''''
+                      ..........................................      .                                   ..............
+                      ==--HHHHHHHHHHHHHHHHHH----H------=====  =                                             =======-H---
+                          BBBBBBBBBBBBBBBCCC    C                                                                   C
+                                VV  V
 MOOOOOMOOOOOOOMMMZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXMOOOO1   -+ZMOOOOOOMM)=+ZOOOZ  MOOOOOOOOOOOOO
+ -++-- --=+===      =+XXXXXXXXXXXXXXXXXXXXXXX+++++X+X+++++++++++++++++++=   +++=        =++++=      =++    =++++++++XXXX
+                     '''''''''''''''''''''''''''''''''''''''''''' '''''                   '          '      ' ''''''''''
+                     ............................................                                             ..........
+                      -HHHHHHHHHHHHHHHHHH-H--=====-=-====== == =                                                ====----
+                       CCCBBBBBBBBBBBBCCC C
+                            V   VVV V
 XZMOOMMAOOOOOOOAMXMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM11AXOM+ -Z1+ZXOOOOOOOM1=ZMOOOOA=MOOOMOOOOOOOOO
+   --   ==+==-=     -+++XXXXXXXXXXXXXXXXXXXX+++==+++++++++++++++++++++++=     -         -==-=--     ++++   ==- ++XX+XXX+
+                     '''''''''''''''''''''''''   ''''''''''' ''''''''''                             ''''        ''''''''
+                      ........................      . .....   ........                              ...         ........
+                       =-HHHHHHHHHHHHHHHH-H-=          ==         =                                             =--=---=
+                         CBCBBBBBBBBBCBBC C
+                                V V
 11MMOMMMOOOMMOOMAMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOMA1MAA)MOOMAMOOMMMMOOX =ZOOOOOMOMOOOOOOOOOOOO
+    -   =+=  --   - -+++++XXXXXXXXXXXXXXXXX+++- -=+++=++++++++++++++++++++=        --   --    --    +++++ - -=--++++++++
+                      '''''''''''''''''''''''     ''  '''''''''''''''''                              '''        ''''''''
+                      . .....................     .    .... . . ..... .                              ..         ........
+                        ==HHHHHHHHHHHHHH---=             =      = =                                   =          ======
+                          CCBBBBBBBBBBBC
+                                V V
 XAOMOMMAMOOOOOOOMOOAOOOMOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZAMOOOOOMMMOA1XMOM)+-MOOOOM))OOOOOOOOOOOO
+  - -    -----=- -- --+ ++XXXXXXXXXXXXXXX++++=-  -+++++++++++++++++++++++++++-    +++==   -    -     =++-   --+=++++X+++
+                        '''''''''''''''''''''       ''''''''''  '''''''''''''       '                 '       ' ''''''''
+                         ...................          .......   ......... .                                     ........
+                          --HHHHHHHHHHH--==            == =                                                     ====-==
+                            CCCCCCBBBCB
 AMOOOOMMOMOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXAMOOOMMAMOOMMMMMOOA+=ZOOOOMZOOOOOOOOOOOO
+  ===-  - -====-+==-++= -+XXXXXXXXXXXXXXX++++==-=---+++++++-+=--++++++++++++++-   =--    -=     ==    =+++  --++++++++XX
+                    '    ''''''''''''''''''''         '''       '''''''''''''                                 ' ''''''''
+                          ..................          ...       ......... ...                                   ........
+                          --H-H-HHHHHH---==           = =           == ==                                        =====--
+                            B C CCCCBC
 OOOOOMMAOXMMOMOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOXOOOOOOOOOOOOOOOOOOOAOAAAA)1XMAMMOOXXOOOMZ1XMOOOMMOOOOOOOOOOO
+-+++=   -   - -=++++++=-  ++XXXXXXXXXX+++++++==-- --=+++++- --++++++++++++++++- -           --  --=     =++  ---++++++XX
+ ''             ''  '     '''''''''''''''''''        ''''     ' ''''''''''''''                           '       '''''''
+  .                 .     ...................         ...       .............                                     ......
+                           =--H-HHHHH-======          ==           ==     =                                        ===--
+                              C CCBCC
 OOOOOOOOOMOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOMAX)11AXXMOOAXOMM)++XXOOOOOOOMMOOOOOOO
+=+++++=-- -   ==++++++=---++++X+XXXXXX+++++++++==--=+++++++ ++++++++++++++++++=-+=          --  -       ++++---  -++++X+
+ '''''          ' '''     '''''''''''''''''''''     ''''''   '''''''''''''''''                           '''      ''''''
+  ...             .       ....................        ....   .................                           ..       ......
+   =                        ==-=--HHH-= == ==          ==      =   = =  = =                                         = -=
+                                  CBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMMOMMXXXXXAOMMMMMMO= -OOOOOOOOMMA1XOOOOO
++++++++++++++=++++++++=-++++++XXXXXXXXX++++++++==-=+++++++++++++++++++++++++++    -        -      -   --+++==-     +++X+
+'''''''''''   '   '''   ''''''''''''''''''''''      ''''''''''''''''''''''''''                          '''         ''''
+ ........ .       ...    ....................       ..........................                          ..          ....
+  ===== =                  ===----HHH--======           ===   ===========                                           ==-=
+                                  CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMMMMMMA)AMOMOMMMMZ-=AOOOOOOOMMM1-ZOOOO
+++XXX+++++++++++++++++++++++++X+XXXXXX+++++++-==++++++++X+X+++++++++++X++++++++=-           - -        -++=---      ++++
+ '''''''''''''''  '''   ''''''''''''''''''''    '  '''''''''''''''''''''''''''                                       '''
+  ............    ...   ....................        .........................                                        ...
+  ---== == ==             ====-=---HH-=====         = ==-=-==== = ====-==  ==                                         =
+                                   CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZMMMMOOOOOMOAMMOOMMOOMMMMAAOOOO
+--++++++XX++++++++++++++++++++++++++XXX++X++= --+++++++++++++++++++++++++++++++++---=++-      -==-- -   --  --      -+++
+  ''''''''''''' ''''''''''''''''''''''''''''    ' '''''''''''''''''''''''''''' ''                                     ''
+  .............    .. .....................       ...........................                                         ..
+    =   --==                = ======---==-=           =====   ====  =======                                           ==
 AXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAAXOOOOOOOOMX)1MXMAOOOMOAOOOOOO
+  ++++++++++++++++++++++++++X+X+++XXXX++XX+++=====+++++++XXX++++++++++X+X++++++++===+-=     ---==---        --- - ----++
+   '''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''                                     ''
+   .............. ..........................       .......................... ...                                     ..
+    =   =              =  ==-=-===----==--=        == ===---=== ======-=-==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZXAMOOMOMOOOA))X11XOOMAMMOOOMOO
+--++++++++++++++++++++++++++X+XXX+++X++++++++---++++++++++++X+++++++X+X+++++++++++++++=      -- = ---       +=    ==- ++
+  ''''''''''''''''''''''''''''''''''''''''''      ''''''''''''''''''''''''''''''''''''                                ''
+    ....... ..... .........................       ...............................  ..                                  .
+       ==    = =   ===    ==-=--- ==-== ===        ==== ====-== ====-=-=====       =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXMAOMOMMOOOOOMAM1+1OOOMMOOOOMOO
++++++==++++++++++++++++++++++++++++++++++++++-=+++++++++++++++++++++X++++++++++++=+++++-    - -  ==-==      ++=  -++= =+
+''''    '''''''''''''''''''''''''''''''''''     ''''''''''''''''''''''''''''''''' '''''                     '          '
+  .       . ....  .........................      ................................   ...
+                    ===    =======   == =           === = ==========- =======
 OOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXOMOMMMOOOOOOOOOOOMOOOOXMOOOOOO
++++++-  --==++++++++++++++++++++++++++++++++++++++++X+++X+XXX+++++++++++++++++++++++++++  - =   -=+==+++++- +++=  ++++++
+'''''          '' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''              ''''   '''   ''''''
+. ...             ..... ..................... ...................................  ....               . .    .
+   =                =     =    =====  =  =      =  =-===-=--- = = ===============   = =                 =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++=++=-=-+++++++++++++=++++++++++++++++++++++++++++++XX++++++++X+X+X++++++++++++++++++==--=++++++++X+++++++++++++++
+'''''           ''''''' '''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''' '''''''''''''''''''
+  .              .....  ...  .........  . . . ...........................................        .    .........   ......
+                  ==    ==    = =====            = ====  =--==== ===-=-=H======= = ====                =-=====    == ===
+                                                                        C
 OOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++=-- -=++++++++++++++++++++++++++++=++++++++++++++++X++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++
+  '''''''       ''''''''''' ''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''''''''''''''''''
+    . .         ....... ... ..............   ..   ........................................     .........................
+                ======  =        ==== =             ==  ====-===  = ======= =====   = = =      =      = ======  =  =====
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++++++=---==++X+XXX+++++++++++++X++++++==-+++++++++++++++XX+++++++X+X+X+++++++++++++++++++++++++++++++++++++++++++X+X+
+  ''''''      '''''''''''''''''''''''''''   ''' ''''''''''''''''''''''''''''''''''''''''''' ''''''  ''''''''''''''''''''
+  .....       ................. ......       ..   .......................................     ...   ............. ......
+                -=---= =  = =    =-==             =   =====--==   ==-=-=-======== ==   =       ==     =      ===  = -=-=
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++==-=-++++++XX++++++++++++++++++++++=+++++++++++++++++++++++++++++++X+++XX+++++++++++++++++++++++====-==+===++X+XX
+ ''''''       ''''''''''''''''' ''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''' ''''''  ''            ''''''
+  ....        ................  ....  ...     .  .................................. ......  . ...                  .....
+  =           ====--==  === =    ==               ====== ============ ====-===--=      ==     =                    =-=--
 OOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++=---- ++XX++X++++++++++++++++++++++=++++++++++++++++++++++++++X+++XXXX+++++++++++++++++++++++++++---==++++++++XX++
+'''''       '''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''' ''''''' ''' ''''''        '  '''''''
+....         ......................... .   ....   ................................    ...   . . .....         .   ......
+ = =         =--==-==== == ===  === =       =     = === ============-===----=====     =            ==             ==H-==
+                                                                                                                    C
 OOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++== - --++X+X+X++++++++-++++++++++++++=+++++++++++++++++X+++++++++++X+++++++++++++- =+++++++++++++++++++XXXXXXX+XXX+
+''''        ''''''''''''''  '''''''''''''  '''''' '''''''''''''''''''''''''''''''''''     ''''''''''''''''''''''''''''''
+...         .............   .........  ..   ...   ............................... ..      ....... ......................
+            ==-=-=-==         =====          ==         = ==- == = ==== -=====              ==       ==  ===H------=H--=
+                                                                                                            C       C
 OOOOOOOOMXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++==-   -++++X+++++++=-=++++++++++++++++++++++++++++++++++++++++++++++++++++ =++++=-  -+++++++++++XXXXXXXXXXXXXXXXXX+
+'''         '''''''''''    '''''''''''''''' ''''' ''''''''''''''''''''''''''''    ' '     ''''''' ''''''''''''''''''''''
+            ..........        ....... ...   ... . ............................            ......  ......................
+             ===-==             ===                   = = = ======= === ===                         =-HHHHHHHHHHH---H--=
+                                                                                                      CBBBBBBBBCC   C
+                                                                                                            VVV
 OOOOOOOMAAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOMOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--++++=   --++X+++=-+++--=+++++++++++++++++++++=+++++++++++++++XX+++++++++++++= - - ==  -=++++++++++XXXXXXXXXXXXXX+XXX++
+   '''      ''''''         '''''''''''''''''''' '''  ''''''''''''''''''''''''             ''''''''''''''''''''''''''''''
+            ......         .. ............ ....   .   ............. .......               ... . ........................
+            ==-==              ==  = ==  =        =    = ==== =--==  ====                   =       --HHHHHHHHHHH-=-H-==
+                                                                                                      CBBBBBBBBCC   C
+                                                                                                        V VVVV
+                                                                                                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=++++++=--++++X++++=++++++++++++XX++++++++++++++++++++++++++++XXXX++++++++++++++++=-+-  -++++++++++++XXXXXXXXXXXXXXXXX++
+  '''''    '''''''  '    ''''''''''''''''''''''''''''''''''''''''''''''''''''''           ''''''''''''''''''''''''''''''
+  .....    .......        ......................... ......................... .           ..... . ......................
+            ==- ==         == ==--=======            =========--H-== =    =   =                     =-HHHHHHHHHHH-----=
+                                                                C                                     BBBBBBBBBCC
+                                                                                                      V VVVVV V
+                                                                                                        AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-++++++++++++XXXX+++++++++++++++X+XX++++++++++++++++++X+X+++++++X++++++++++++++++++++   --++++++++++XXXXXXXXXXXXXXX+++++
+ '''''' ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''      ''''' ' ''''''''''''''''''''''
+  .....   ........  . . .......................................................   .         .     ......................
+    ==      =----=       === ===-=--===    ===     = =-=-==  ===-=====  ======                     =HHHHHHHHHHHHH-H====
+                                                                                                    CCBBBBBBBBBCC C
+                                                                                                        VVVVVV
+                                                                                                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++XXXXX+++++++++++++++XXXX++++++++++++++++++XX+++++++XX++++++++++++++++++++--=++++++++++++XXXXXXXXXXXXXXXXX+++
+''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''     ''''''''''''''''''''''''''''''
+....... ............. ................... .....................................   ...         ..........................
+ ==       ==--H--==     == == ==H---  =   =    == ====H-=======--==  =  ======                 =  = HHHHHHHHHHHHH-H--===
+              B                 C                     B                                             BCBBBBBBBBBCC C
+                                                                                                      VVVVVVV V
+                                                                                                        AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++XXXXXXXXX+++++++++++X+XXX++++++++++XX+++++X+X+X++++++XX++++++++++++++++++++==++++=+++X+++XXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''   '''''''''''''''''''''''''''
+...................................................................... ..............   .     ..........................
+ ==   ====HHHHHHHH-=     =====-=-H-===      =--=====-=-=-==  ==-H== =   = =  ===  = =          -===-HHHHHHHHHHHH--------
+          CCBCBCBC               C                              C                                   CBBBBBBCBBBC
+                                                                                                      VVVV
+                                                                                                        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++X+XXXXXXXXXXX+++++++X++XXXXXX+++++++++++X+++++XXXXXX++XXXXXXX+++++++++++++++++++- ==+++++XX+XXXXXXXXXXXXXXXXXX+XXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''     ''''''''''''''''''''''''''''''
+....................................................................    .............     ..............................
+======-=--HHHHHHHHH== = ==-==HH----===  =  = =-== ==------==--H-H--=    =  == ==  =          ==--=--HHHHHHHHHHH---H-=-HH
+          CCBCBBBBB          CC                               C C                                   CCCCBBBCBCC   C   BC
+                                                                                                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++++XXXXXXXXXXXX++++++XXX++XXXX+++++++++++++++XXXXXXXXXXXXX++++=+++++++++++++++==  +++X+XXXXXXXXXXXXXXXXXXX+XXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''     ''''''''''''''''''''''''''''''
+....................................................................      ...........     ..............................
+-======= =--HHHHHHH---==  ==---==-HH-====     = ====----H-HHH-HHH==         ==== =        ==-=------H----HHHHHHH-=--HHHH
+            BBCBBBB               CC                    C CCC CBC                                   C    CCCBCCC    CCBB
+            V   VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXXX+++XXXXXXXXXXXX++++++XXX+XXXXX+++++++++++++XXXXXXXXXXXXXXXX+++=+++++++++++++++++-++XXXXXXXXXXXX+++++XXXX+X+XXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''' '''''''''''   ''''''''''''''''''''''''''''''''
+........................  ..........................................  ..   .........     ...............................
+-=-H---   -HHHHHHHHHH-=     ---=-HHHH==== = ======--HHHHHHHHHHHHH-=          ==   =      =----HHHH----=====----=-=--HHHH
+   C       CBBBBBBBBC            CBBC               CCCCBBBBBCBCC                             CCBC                  CBBB
+            VVVVV V               V                     VVV                                                           V
+                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXX++XXXXXXXXXXXXX++++++XXX+XXXXXX++++++++++++XXXXXXXXXXXXXXX++++++++=++++++++++++++++XXXXXXX+X+++++++++++++X++++XXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''  '''''''''''''''''''''''''''''''''''''''''''''
+......................... .........................................   ..    ............................................
+==-HH--==-HHHHHHHHHHH-==   =HH-=HHHHH-=  = =  = ==-HH-HHHHHHHHH--==          ====       = H-H-H--=-==== ========-== =-HH
+   CB     CBBBBBBBBCC       CC  BBBBC              CB CBBBBBBCC                           C C C                       BB
+            VVVVVV               VV                     VVV                                                           V
+            A AA                  A                     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXXXXXXXXX+++++++++XXXXXXXX++X++++++++XXXXXXXXXXXXXXXX++++++++=++++++++++++++XXXXXXXXXXX+X+++++++++++++++++XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''
+....................... ...................... .................... ....   .............................................
+=-HHHHHHHHHHHHHHHHH--==   = ==--HHHHH-= - ===    --HHHHHHHHHHH---=          =====   = = ---HHHH----=-=======    ======HH
+  CCBBBBBBBBBBBBBBB             BBBBC              CBBBBBBBBBC                             CBBB                       BB
+      V VVV VVV VV              VVV                   VVVVV                                                            V
+         AA   A A                                       A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXX++++++++++++++XXXXXXXX++++++=++XXXXXXXXXXXXX+++++++++++=++++++++++++++XXXXXXXXX+++++++++++++++++++++XX
+''''''''''''''''''''''' '''''''''''''''''''''  '''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''
+......................   ....................   ................... ....    ............................................
+ =-HHHHHHHHHHHHHH-=       = =  =HHHHH---===     =---HHHHHHHHH-===     =       = === =  =--HHHHH--== === =    =========HH
+   BBBBBBBBBBCBBB               CBBCC               BBBBBBBBC                             CBCCB                       CB
+    VVVVVVV                                         V VVVVVV
+      AA  A                                           A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXX++++++++++++++++XXXXXXX+++++- ++++XXXXXXXXXXXX++++++++++++++++++++++++X+XXX+XXXXX+++++++++++++++++++++XX
+''''''''''''''''''''  '''''''''''''''''''''    '''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''
+...................     ...................    .................  .....    .............................................
+==HHHHHHHHHH----==           ===HHHHH--==       ==-HHHHHHHHHH-    ====      == =  = ==-=H--=H---H== ==    ==  ===== = HH
+  CBBBBBBBBC                    CBBCC              CBBBBBBBBC                           C   C   C                     CB
+    VVVVVVV                                         VVVVVVVV
+    A A                                              AA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX++++X++++++++=++++++XXXXX+++++    ++XXXXXXXXXXXXX++++++++++=++++++++++++++XXXXX+++++XXXX++++++++++++++++++XX
+''''''''''''''''''''''''  '''''''''''''''     ''''''''''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''
+................... ..     ..............     .................. .....    ......... ................... ................
+--HHHHHHHHH-= ==-=          = = -HHH-==         ---HHHHHHHHHH=     = =    =======   ==HHHHH=====H---=      ==     =  =HH
+  BBBBBBBBB                      CBC               CBBBBBBBBC                         CCCCC     C                     CB
+  VVVVV VVV                                          VVVVVV
+   AA                                                 A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXXXXXXXXX+++++++++++=++++++XXXX+++++=-  =+XXXXXXXXXXXXX+++++++++++=++++X+X+++++++XXXXX+++++++X++++++++X++++++++++XX
+''''''''''''''''''' ''''   ''''''''''''''     ''''''''''''''''' '''''   ''''''''''''''''''''''''''''''''''''''''''''''''
+...................  ...    ............      .................  ....    .......... ................... ................
+=-HHHHHHHHHHH-===     =      ===--H-=         =-HHHHHHHHHHHH===   ==      ==-=-===  ==HHHH-==== ==-== = = =-=====    =HH
+  BBBBBBBBBCC                     C             BCCCBBBBBBBC                          BBBC                            BB
+  VVVVV VVV                                          VVVVV
+  AAAA  A                                             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+++++++++++++++++++X++++++++=++XXXXXXXXXXXXXXX+++++++++=+++++X++++++++XXXXXX+X+++++X+++++++XXX+++++++XXXX
+'''''''''''''''''   ''''' '''''''''''''''    ''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''
+.................   ....  ...............    ........................   ........... ....................................
+-HHHHHHHHHHHH--       =     = ====-===        -HHHH-HHHHHH---==  ==      ===-=====  =-HHHH-=-=====-==    =---=====  HHHH
+ BBBBBBBBBBBB                                  BBBC BCBCCC                            BBBC                          CCBC
+  VVVVVVVVVV                                    V                                      V                              V
+  AAAAA A                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX++=++++++++++++++++++++++++++++XXXXXXXXXXXXX+++++++++++++++X+XX+++++++XXXXXXX++XXXXX++++++++++X++++++XXXX
+'''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''' ' ''''''''''''''''''''''''''''''''''''''''''''''''
+.................   .... ........................................ ..    ................................................
+-HHHHHHHHHHHH--=            = =========   == =HHH-H-HHHHHH-==== =        =-=--==     -HHHHH-==HH-H-== = = ===-=== ==HHHH
+ CBBBBBBBBBBB                                 CBB C CCBCCC                            CBBBB   CC C                  BCBC
+  VVVVVVV
+   AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXX+XXXX++++++++++++++++++X+++++++++X+++X+++XXXXXXX++++++++++++=++XXXX++++++++++XXXXX+++XXXXXX+++++X+++X++++++XXXX
+''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''
+................... ..    .......................................     ..................................................
+==HHHHHHH=H---=== =       ===   -=========-= =-===H-HHHH-====  =        ----== ===  ==--HH-= =-HH-H-=====-= =-======HHHH
+  CBBCCCC C                                       C BBBB                                BB     CB C                 BBBC
+                                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX+++++++++++++++++++++++++++++X+XXXXX+++++++++++++++++X+XX++XXXX+++XX+XX++++XXXXXXX+++++++XXXX++++XXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+--HHH-H-H---HHHHHH- =     = ==  ===== ======   =-=HHHH-====== ===   = ==-=--==--H-===--=--====-HHHHH-=== ===-HH-= ==--HH
+  BBC C C   CCBCBC                                CCBC                          C              BBBBC         CB       CC
+   V                                                                                            V
+                                                                                                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++XX+++++++++X+++++++++++++++XXXXXXX+++++++X+X+++XXXXXXXX+++XXXXXX++++++XXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................... ..............................................................................
+--HHH-H---HHHHHHHH-==     === = ====   ==   ===--===== = =-= == = ========----H--==  ===-=-===HHHHHHH-===-HHHHH=    =HHH
+  BCC C   CCBBBBCC                                                            C               CBBBBBB     CCCCC      CBC
+              V                                                                                VVVV
+              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXX++XXXXXXXXXXXX+++++++++++X+X+++++++++++XXXXX++++++++XX+++++++++++++XXX+X+X+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXX
+''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................  ................. ....................  ........................................................
+==-H-==HH---HHHH---==    =====-=-= = = =   =HHHH-   =====--=      ======--H=-=-=  ==----H-HHHHHHHHHHHH--HHHHH-H-====HHHH
+   C   CC   CBBB                            CCBC                          C             C CCCCBBBBBBBC  BBBBB C     CBBB
+              V                                                                                VV VVV   VVV           VV
+                                                                                                  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++XXXXXXXX+++++++++++++++++++++++++++XXXXXX+++++++XXX++++++++++++++XX+++++++XXXXXXXXXXXXXXXXXXXX++XXXXXXXX++++XXXX
+''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ ...................  ............................... ......... ........................................................
+  ======----HHH-===      = == ==    = =    -HHHH-==     ---=     ========--====   HHHHHHHHHHHHHHHHHHHH==HHHHH---= ==HHHH
+            BCC                             BBBB                                  CBBBBCCCBCBBBBBBBBBC  BBBCC       CBBB
+                                            VVVV                                            VVVVV   V   VV           VVV
+                                                                                               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXXXXX+X+++XXX+++++++++++++++++XXXXXXX+X++XXXXXX+++++++XX+++++++++++XXXXXX+++++XXXXXXXXXXXXXXXXXXXXXX++XXX+++XX++++XXXX
+''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................   ..................................................................................................
+=-HHHH-=-===---= =    =   =   ==-H-----=H==HHHHHH= == ==--====  = ===--HHHH== = -HHHHHHHHHHHHHHHHHHHH-==HHH===--====-HHH
+  BBCC                           C      C  BBBBBC                      CCCC      CBCBBCCBCBBBBBBBBBBB   CCB          BBB
+                                            V                                       V       V VVVVV       V           V
+                                            A                                                 AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+++++X++++XX+X+XXX++++++XXXXXXXXXXXXXXXXXX++++XXXX+X+X+++++++X+XXXXX++++++XXXXXXXXXXXXXXXXXXXXX+XXXXX++X+++++XXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-HHH---=====- ===--=-=---== ===HHHHHHHHHH-HHHHHH- ===-HHH=-=-=  = ==-=-HH--======HHHHHHHHHHHHHHHHHHHH-=HHHH-==-=  = -HHH
+ CCC                           CBBBBBBBBB BBBCCC      CCC              CC        CBBBBCCBBBBBBBBBBBBB  CBBC          CBB
+                                VV    VV   VV                                           V     V VVV                   V
+                                                                                                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXX+++X++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXX++XXXX+++++++++XXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX++++++XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................. ...............................................................  .....
+==--H-H===- =====-----H-HHH-HH--HHHHHHHHHHHHHHH-=   =HH-==-HH-=== =====-H--HH==-HHHHHHHHHHHHHHHHHHHHH-HHHHHH==--    ==HH
+    C C               C BBC BC  CBBBBBBBBCBBBBB      CC    CB           C  CC   CCBCBCBCBBBBBCBBBBBCC BBBBBC          BC
+                        V           VVV   VVV                                           V V   V V     V V V
+                                    A      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X+++XXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXX++++++++++XXXXX++XXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX+++++++X+
+''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................. ................................................................ .....
+= ==-== --H-HH--HHH-HHH-HHHHHH-===--HHH-HHHHHHH=    = ===-HHHH==---===-HHHHHH-HHHHHHHH--HHHHHHHHHHH-=-HHHHHHHHH=     =-=
+          C BC  BCC BCC CBBBBC      BBC CCCBBBC           BBBB         CBCCCC CCBCBBBC  CCBCCBBBBCC   CCBCBBBCC
+                    V    VV                 V               V                       V                     VV
+                                                                                                          AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXX+++++++++XXXXXXX+XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX++++++XX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................... ....................................................................
+  --H-----HHHHHHHHHHHHHHHHHHHHHHHHH-= -HHHHHHHH=      ==--HHHHH=HHH--=H-HHHHHHHHHHHHHHH-HHHHHHH-HHH--=HHHHHHHHH=   ==-H=
+    C     CCCCBBCCCCBCBCCBBBBBBCCBB    CBBBBBBB           BCBCC BCC   C CCCBBCBBBBBBBBB BBBBBCB CCB   CBBBBBBBC       C
+                           VV           V  VVV                                  V                         VVVV
+                                                                                                            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXX+++++++X+X+XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXX+++++++XXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+ ==-H-H==== ==-=-=------HHHHHHHHHHH=--HHHHHHHHHH-=    = --HHH=-=HH----H-HHHHHHHHHHHHHHHHHHHHH-HHHHHH--HHHHHHHHH    =HHH-
+    C C                 CCCCBBBBBBC   CCBCBBBBBC          BBC   CC    C CCCCBBBBBBBCBCCCBBBBC CCBBBC  CBBBBBBBC     CBB
+                              V             VVV                                                         VVVVV
+                              A             AAA                                                          AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXX+++++++++++XXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................................................  ......
+  ---====     ==--HH-==-HHHHHHHHHHHHHHHHHHHHHHHHH===    -HHHH--=------H-H-H-HHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHH==    HHHH
+                  BC    CCCCBBBBBBBCBCBBBCBBBBBBC        BBBC         C C C BCBBBBBBBCBBBCBCBCCCBCBCC BCBBBBCC      CBBC
+                              VVVVV       VVVVVV                                 VV   V                 VVVV          V
+                                A           A                                                           AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++-+++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXX+X+X+++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXX++XXXXXX++++++++++XX
+''''''''  ''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''
+  .....         ................................................................................................  . ....
+   = ==         =-HH-=H-HHHHHHHHHHHH--HHHHHHHHHH-== ==HHHH-=-=-== ========-=H-H-HHHHH-H-HHHH--H---H-==--HHH-===     ==-H
+                  BB  C CCBCBBBBBBCC  BBBBBBBBBC      CCBC                  C B BBBCC B CCCC  C   C     BBB            C
+                  V                    VVVVVV                                   V                       V
+                                          A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX++++++++++++X
+''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........  .   .  ................................................................................................ ......
+====             =HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHH---H-HHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=HHHHH==        ==-
+                  BBB CBBCCCBBBBBBBBBBBBBBBBBBBBC BBBBBBBCC   C CCC C CCCCCCBCBBBBBCBBBBBBBBBBBBBBB   CBBBB
+                   V              V V VVVVVVVVV    VVVVV                               VVVV   V         VV
+                                        AAAAAAA    AAAA                                                 AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XX+X+++X+
+''''''' '''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......   ......  .......................................................................................................
+ ===              HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=--HH-HH-HH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHH-= =--=-===-=
+                  BBBCCBBCC BCCCBBBBBBBBBBBBBBBBBBBBBBBBC    CC CC CC C CCBCBBBCBBBCCBBBBBBBBBBBBBBC  BBBBB
+                   VV               V   VVVVV VVVVVVVVV                                VVVV V     V   VVVVV
+                   A                      AAA AAAAAAAAA                                                AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++X++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....... ................................................................................................................
+  ==      ==-  ==-HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHH----H-----H-H-H-H---H-HHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHH----=
+                  BBBCBBBCC BBBBBCBBBCBBBBBBBCBBBBBBBB    C     C C C C   B BBBBBBBCCCBBBBBBBBBCBBB CCBBBBBBBCBBBBB
+                   V          V         VVVVV VVVVVVV                           VVV     V VVV    V    VVVVVVV VVVV
+                                          A   A AAAA                                                  AAAAAA   AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++X+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ .......................................................................................................................
+  = ====-=-=-=HHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-====--HHHHHHH-H-H-HHHHHHHHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHH-===
+              CBBBBB  CCBBBCBCBBBCBBBBBBBBBBBBBBBBBBC       CCBCCCC C C CCBBBBBBBBBBC C BCBBBCBCBBBBBBBBBBBBBBBBBBBC
+                VVV             V V V     VVVVVVVVVV                            V         V V       V VVVVVVVVVVVVV
+                AAA                           A   A                                                   AAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+==--HHHHH-HHHHHHHHHH-=-=--HHHHHHHHHHHHHHHHHHHHHHHHHH-=------HHHHHH--HHH-H-HHHHHHHHH-H---HHHHHHHHHHHHHHHHHHHHHHHHHHHHH===
+    BBBCB CCBBBBBBBB      CCBBBBBBBBBBBBBBBBBBBBCCBC        CBBCCC  CCC C CCBBBBBBB B   BCBBBBBBBBBBBBBBBBBBBBBBBBBBC
+        V     VVVVVV        VVV     V VVV VVVV               V                VVV             V     VVVVVVVVVVVVVVV
+               AAAA                 A A                                       AA                    A AAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................................................................................................................
+ =-HHHHHHHHHHHHHHHHHH--H---HHHHHHHHHHHHHHHHHHHHHH-HHH---=-HHHHHHHHHHH-H-H-HHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH==
+   CCCBBBBBBBCBBBBBCC  C   CCCCCBCBBBCBBBBBBBBBCC BCC     CCBBBBBBBCC C C CBBBBBBBBBCCC CCBBBBBBBCBBBBBBBBBBBBBBBBBBB
+              VVVVV                     VVV                 VVVVVV          VVVVVVV           V V VVVVVVVVVVVVVVVVVV
+               AAA                                          A                 AAA                   A AAA AAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXX+XXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+  -HH-=---HHHHHHH=== ==HHHHHHHHHH-HHH-HHHHHHHHHHH-HH------HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHH-=
+   CC     BBBBBBB      CBBBBBCBBC BCC CCBBBCBBBCB BC      CBBBBBBBBBBCCCBCBBBBBBBBBBBCC C CCBBBBBBBBBBBBBBBBBBBBBBBBBB
+          V V VV                        V   V     V        VVVVVVVV         VVVVVVV         VVVVVVVVVVVVVVVVVVVVVVV V
+              A                                            AAAA AAA           AAA             A A AAAAAAAAAAAAAAA A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XX+++X+XXXXXXX+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+  =--===-=HHHHHH-=-=H=HHHHHHHHHHHHHHH-------H-HHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+          BBBBBB    C BBBCBCBCBCBBCCC       C CCCBCCC C BBBBBBBBBBBBCCBCCCBBBBBBBBBBCCBCCCCCBBBBBBBBBBBBBBBBBBBBBCBBBBBC
+            V VV      V         V                         VVVVVVVVV         VVVVVVV          VVVV VVVVVVVVVVVVVV   VVVV
+              A                                           AAAAAAAAA          AAAA             AA   AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+ ====== ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=---=-HHHHHHHHHH-H-----HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+            CCBCBBCCBBBBBBBCBBBBBBBBCCCCBCBCBCBCCBBBBCBBBBBBBBBBBBBC       CBBBBBBBBB C     BBBBBBBBBBBBBBBBBBBCBBBBBBCC
+                              V             V           VVVVVVVVVV            VVVVV           V     VVV VVVVV     VVV
+                                                        A AAA A A             AAA                     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+==+++==-==++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  '       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+          ..............................................................................................................
+            ---HH-HHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-H-H-HHHHHHHHH-------HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+               CC CCBCBCBBBBBBBCC BCBCBBBBBBBCBCBCBCBBBBBBBBBBBBBBB C C C C BBBBBBBBC       BCBBBBBBBBBBBBBBBBBBBBBBBBBC
+                          V               V           VVVVVVVVVVVV            VVVVV           VVVVVVVVVVVVVVVVV   V VVV
+                                                        AAAAA AAAA            AAAAA             A   A AAA   A A   A A
 MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -+====-+=++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXX+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           .............................................................................................................
+           =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHHHHHHHHHHHHHHH-----=-HHHHHHHHHHH-=--=--HHHHHHHHHHHHHHHHHHHHHHHHHHH
+             BBBBBBCBBBBBBBBBBBBBBBBBCBBBBBCC C CBBBBBBBBBBBBBBBBBBC       CBBBBBBBBBC       BBBBBBBBBBBBBBBBBBBBBBBBBBB
+                    V   VVVVV     V   V V         VVVVVVVVVVVVVVVVV           VVVVVV          VVVVV VVVVVVVVVVVVVVV VVV
+                          A                           AAAAAAA AAAA            A AAA            AA A   A     AAAAA
 MMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  =-=====+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX
+         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           .............................................................................................................
+            -HHHHHHHHHHHHHHHHHHHHHHHH-H---H-H-HHHHHHHHHHHHHHHHHHHHHHH-HH-=H-HHHHHHHHH-H----HHHHHHHHHHHHHHHHHHHHHHHH=--H-
+             CBBBBBBBBBCBBBBBBBBBBBBC C   C C CBBCBBBBBBBBBBBBBBBBBCC BC  C BBBBBBBBB C    CCCBBBBBBBBBBBBBBBBBBBBC   C
+               VV         VVVVV                       VVVVVVVVVVVVV          VVVVVVV           VVVVVV VVVVV VVVVVV
+                                                        AAAAAAAAAA            AAAAA             AAAA     A  A AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+--+++=--==++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+           .............................................................................................................
+            -HHHHHHHHHHHHHHHHHHHHHHHH-H---H-HHHHH-HHHHHHHHHHHHHHHHHHH-H-HHHHHHHHHHHHHH--H-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+             CCBBBBBBBBBBBBCBBBBBBBCC C   B CCCCC CCBBBBBBBBBBBBBBBBB C CCBBBBBBBBBBBC  C C CCBBBBBBBBBBBBBBBBBBBBBBBCBB
+                  V           V                      VV VVVVVVVVVVVV        VVVVVVVV           VVVVV   VV VVVVVVVVVVV
+                                                        AAAAAAAAAAA           AAAAA             A A           AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++==-=-=++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ ''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ ..         ............................................................................................................
+            =--HHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+               BBBBBBCCCBBBBBBBBBBBCBCCCCCB C BCCCBBBBBBBBBBBBBBBBBBBBCCBBBBBBBBBBBBBCC C C CCBBBBBBBBBBBBBBBBBBBBBBBBBB
+                  V           V V                     VVVVVVVVVVVVV        VVVVVVVVVV         V VVVVV    V VVVVVVVVVVVVV
+                                                        A A A A A A         A AAAAAA              A         AAAAAAAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......    ..............................................................................................................
+=====      ===-HHHHHH-HHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+               CBBBBB CCCCBBBBBBBBBBBBBCBCB CCBCCCBCBBBBBBBBBBBBBBBBBCCCCCBBBBBBBBBBBBC C CCCBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                V           V V V V V                 VVVVVVV   VVV       VVVVVVVVVVV         VVVVVVVVVVVVVVVVVVVVVVVVVV
+                                                        A A                 AAAAAAAA          A A A      AAAAAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+X+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-=H== ========--HHHHHHH-----HHHHHHHHH-H---===--HH--HHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  C             BCBCBCC     CCBCBCBCB C        CC  CBBBBBBBBBBBCBBBBBCC BBBBBBBBBBBBBCBCBCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                    V  VVVV V   V V       V VVVVVVVVV       VVVVVVVVV VVVVVVVVVVVVVVVVVV
+                                                        A                   AAA AAAA             AA A       AAA AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+==H--==== --HHHHHHH-H-H-H-----HHHHHHHHHHH----=--H-HHHHHHHHHHHHHHHHHHHH-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+  C         BBBBBCC C C C     CBBBBBBBBBB       C BCBBBCBBBCBBBBBBBCCC  CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                V V                       V   V   V        VVVV VVVVV       V VVVVV VVVVVVVVVVVVV VVVVV
+                                A                                           AAA  AAA                AAA A A AAA     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+==-H-====-HHHHHHHHHHH-HHH--HHHH-HHHHHHHHHHHHH---H-HHHHHHHHHHHHHHHHHHH--=H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+   C      CBBBBBBBBCC BCC  CCCC BBBBBBBBBBBBC   B CCCCBCBBBCBBBBBBBCC   C BBBBBBBBBBBBBBBBBCBBBCBBBBBBBBBBBBBBBBBBBBBBBB
+            VV                    VVVVVVV V                   V           VVVVV VVVVV V     VVV V    VV VVVVV V  V  VVV
+            A                                                               AA  A A A                 A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+ ==-H-H=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H-HHHHHHHHHHHHH-HH-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    C C CCBBBBBBBBBCBBCCCBCCBBBCBCCCBBBBBBBBBBCCC   C CCBBBCBBBBBBC BC    BBBBBBBBBBBBBBBBBBBBBBBBCCCCBCBBBBBBBBBBBBBBBB
+          V VVVV                    V  V  V                 V VV    V       VVVVVVV V   V                  V    V   VVV
+            A A                                                             A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ......................................................................................................................
+    -=H-HHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH-HHHHH== -=----HHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHH
+      C BBBBBBBBBBBCBBBCCBBBBBBBBBB CBBBBBB CCBCC         CCBCBBBBBBBBC BCBCBBBBBBBBBBBCBBBCBBBBBBBBBCBCBBB CCBBCCCCBBBB
+          VVVVVVVV          VVVVV     V                       V V   V         V VVV  VV   V  VV V
+            AAAAA             A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+. ......................................................................................................................
+  =  ===HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----======-----H-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHHHH-HHHHHHHH
+        CCBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBB               C C BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCB B BBBBCCCCC CCBCBBBC
+          V VVVVV   V     VVVVVVVV  V V                         V V VVVVV   VVV V V VVV   VVV V
+             AA               AAA                                 A   AA            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+  = =   =HHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-H-H----===--H-----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H=-=HHHHHHHH
+         CBBBBBBBBBBBBBBBBBBBBBBBCC CCCCC B C         C     BCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCBCCBB C   CCBCBCBC
+              VVV   V    VV V   V                               V V    VV   V V V   V     V V
+                                                                       AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++XXXXXXXXXXXXXXXXXXXXXXX+X++XXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+  = = ====HHHHH-HHHHHHHHHHHHHHHHH=-==---HHHHHHHHHHH--=-----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---HHHHHHHHH
+          BBBBB CBBCCCBCBBBBBBBBC       BCCCBCBCBCC        CCCBCBCBCBBBCBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBBBCBC   CCCBCBCBC
+           VV                                                             V V V V V       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++XXXXX+++++++++X+XXXXXXXX++++XXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......  ...............................................................................................................
+ =====    HHH-- = ======-=----H-H-= ==-HHHHHHHHHHH-=-=--H-HHHHHHHHH-H-HHHHHHHHHHHHHHHHH-HHHHHHHHH-HH-=HHHHHHHHHHHHHHHHHH
+          CCB                 C B      CBBBCBCBBBB      C CBCCCBBBB C CCCCBBBBBCBBBCBCB CCBCCCBCC CC  CCBCBCCCBCCCCCCBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++XXXX++++++++++XX++XXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+' ''''' ''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  .....  ........  .....................................................................................................
+          -HH-==      ==--==--HHHH-===--HHHHHHHHHHH-----HHHHHHH-HHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+           BB                 BCCC      CCBCCCBBBCC     CCCBBBC BBBCCCCCBBBBBBBBB BBBBBBBCBCBCBBCCCCBCBCBBBCCCBBBCCCBBCB
+                                                V                        V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++++++++XXXXX+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  '''' '''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ...   .........     ..................................................................................................
+         =HHHH-=       =------HHHHH-H-HHHHHHH--HHHHHH-HHH-H-HHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-HHHHHH
+          BCCC                CCBCC C CCBBCCB  CBCCCC CCB C BCCCCCC B CCBBBBBBCCCCCCCCCCCCBCBBBBCBBBBBBBBBCCC C C BCBCBC
+                                                                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-=++++++++XXXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ......................................................................................................................
+   ===   =HHHH---- ==   =-H-H-H---HH-HHHH------=--HHHHHHHH--H--=--H-HHHHHHHHHHHHHHHHHHHHHH--HHHHH-HHHHHHHHHHH-H-HHHHHHHH
+          CCBC            C C C   CC CCCC         CCCCBCBC  C     C CCCCCCBCBCCCBCBCBBBBBC  CCCCC CCBBBCBCCCC C CCCCCCCB
+                                                                                                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=++++X++++XXXXXXXXX+++++++XX+++XXXXXXXXXXXXXXXXXX+XXXXXXXXXXXX++XXXXXXX+XXXXX+X+X+XXXXX+XX++++X+X+X+XXXXXXXXXXXXXXXXXXXX
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ......................................................................................................................
+  = =-====HHH-HHH--=  = ==--== -H--HHHHHH-H-H-HH-=HHH-HHHHHHH-==--H---H=-----=-=-=-----=--====-=-=-=--HHHHHHHHH---H-HHHH
+          BCB BCB               C  CCCCCC C C CC  CCB BCBCBCB     B   C                               CBBCCBBCC   B CCCC
+                                                          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XX++++X+XXXXXXXX++++++++++++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+++++++++++++++++++++XXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ .......................................................................................................................
+  ==H-====H=-HHHHHH-== ====   = ---=--HH-HHHHHH-HHH-HHH-HHHHHHHHH-HHH---H--=---==== ================--HHH-HHH-H-H-HHH-HH
+    C     C  CBBBBC                   CC CBBCCC CCC CCC BBBBBBBBC CCC   C                             CCB CCC C C BCB CC
+                                                          V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++X+++++++XXXXXXXXXXX++X+++++++X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+X+++++++++++X++++++XX+X+++X+++X+X++++++++XXXXXX+
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ......................................................................................................................
+  ===-=== = =-HHHHH---H-==-=======-===-HH-HHHHHHHHH-HHHHHHHHH-HHH--===-=-===========-== ===--=-===-===-=-========------=
+              CCBCC   C                BC CCBCCCCCC CCBCBBBCB CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-=++++++++++++XXXXXXXXXXXXXXXXXXXXX+XXXXXXX+XX+++XX+XXXXXXXXXXXXX+++++++++++++X+++X+XXX+X+XXXXXXXXX+++++++++++++++++++++
+  '''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ......    ............................................................................................................
+   ====      =--H-H-HHH-HHH---HH-HH=--HHH-H=--===--=----H-H------=============-===-=---=-=----H----=== == ======= ====
+                C B CCB CCB   CC CC   CCC C             C C                                   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+==+++++++=++++++++XXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++X+XXXXXXX+++++++X+++++X+++++X+XXX+X+++XX++++++++++++++++++++++++==
+  ''''''' ' ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  .....       ................................. ..................................................................
+               ===----HHHHHHHHHHHHHHH------===   ===  -=--H-H-H=======-==  =-=====-=---=-===--===== =====  = == =
+                      BCBBBCCBBBBBBCC                     C C C
+                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXXXX++++++X+++++++++++++++++X+X+++++++++++++X++++++++++++=--+=
+''''''''''''' ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ .....   ..     . ..............................  ................................................................
+   =              ===-HHHHH-HHHHHHHHHHH-H---=        == ----H-===== -=================-=-==== ====  ==-====  == =
+                      CCBBC CCBBBBBCBBB C                   C
+                                V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++X+XXXXXXXXXXXXXXXXXX++++++++++++++++X+XXX+XX+++++++XX+++++++++X+++X+++++++++++++++++++++++++++++++++
+ '''''''''''' ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ ..........     ........................................................................................................
+   =              ==-=HHHHH---HHHHHHHHH-========  === ==-=---=--=======--== === ==-===-==== = ===== ========== ======
+                      CCBCC   BBBBBCBCB
+                               VV
+                                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXX+++++++X+XX++++XXXX+XX+++++++XXX+X+++++++X+++++++++++++++++++++++++++XXXXXXXX++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ......................................................................................................................
+       ==      =--HHHHHHH-----HHHHHHH-H--====== -=--====--H-=--=======---=-== ====-======== = === == =========-H--H---==
+                  CCBCBCC     BBBBBCC C                   B                                                    C  C
+                               VVV
+                                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++++++++++++XXXXXX+++++XX+XXXXXXXXX+XXXXXXX+X+XXX+++++XXXXXX++++XXX+++X++++++++++++++++++++++++++++XXXXXXXX+XXXXXXXX++
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+   ...... ..............................................................................................................
+       =    ==----H-=== =--=--HHHHH--=--HHH--=- H--== ==H-HHHH====H--===- =========== ===== = = = = =-H------=--H-H---==
+                  C           BBBCC     BBB     C       B CCCC    C                                   C         C C
+                                V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++XXX+++++++++++++++++++X+XXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXX++XXXX++++XXX+X++X++++++X+X+X+X+X+XXXXXXXXX+XXXXXXXXXXX+
+''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ......... .......     ................................................................................................
+  ==-H- =   = ====      ==-=H-HHH---H-H-HHHHHHH-==  ------H---H-==HHH-= ==---=-==-======-=-=-=-=-=----H----=------HHH--=
+     C                      C CCC   C C CCCCBCC           C   C   CCC                                 B           BCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++XX++++++++++++++++-++XXXXXXXXXXX+X+XXXXXXX++XXXXXXXXXX+X+XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XXXXXXX+
+ '''''''''''''''''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ...................    ...............................................................................................
+   ==-H== =  == =         --H-HHHHH--=-=-------==----HH-H--=H=----HHH----=------H-H-HH--H-H-H-----H-HHH-H--=H--=HH-----=
+      C                     C CCCCC                  CC C   C     BBB           C C CC  C C C     C CCB C   C   CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++X+++++++X++XXXXXXXXXX+XX+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+XXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......... ..............................................................................................................
+ ===  ==   =  = ===-===   =-==--HHH-H---=--=-=-=--H-HHHHHHH-H-HHHHHHHH----HHHHHHHHH-HHHHHHHHH=----HHHHHHH-HHH=H--HH-H-H-
+                                CCC C             B CCCCCCC C CCCCBBBC    CCCCCCBCC BCCBBBCCC     CCCCBCC CCC C  CC C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++XX++++++=++++++++++++XXX+XXXXXXXXX+XXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX
+'''''''''''  '' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ..... ..      ........................................................................................................
+  =--=            === ==H--=--HHHHHH-=---=====--H--HHHHHHHHHHHHHHHHHHHH-H-------H-HHHHHHHHHHHHH-HHHHH-HHH-H-HHH-HH-=H-HH
+                        C     BCBCCC            C  CBCBBCBBCBCCCBCBCBCC C       C CCCCBCBBCBCCC CCCCC CCB C CCC CC  C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXX+++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXX+XXXXXXXXXX++X+XXXX
+''''''''''''' ' '     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........           ..................................................................................................
+==---== =               --HHHHHHHHHH----H--HH-HHHHHHHHHHHHHHHHHHHHHHHHHH----H-----H=HHHHHHHHHHHHHHHHH=H-HHHHHHH-==-=H-HH
+                          CBCBCBBBCC    C  CC BCCCCCBCBBBCBCBBBCBBBCBCCC    C     C CCBCBBBCBCBCCCBCC C CCBBBBB     C BB
+                                                      V           V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XX+++++++++=+==-+-=++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX
+'''''''''''''         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............          .................................................................................................
+==H-===== =             =HHHH-HHHHHH--H-H-H---HHH-H-H---H-H-HHH-H-HHHHH-----H-H-H-=--HH-H-HHHHH-HHH-H-H-H-HHHHH-----=---
+  C                      CBCB BCBBBC  C C C   CCC C C   C C BCB C CCCCC     C C C    CB C CCBCC CCB B C C CBBBB
+                                                                                                            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X+X++++++++++++++===--++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''' ' '''''''       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......    ....          ...............................................................................................
+==-=-=                    HHHH-HHHHHHHHHH-H-HHHHH-HH--H---H-H-HHH-HHH-HHH-H-H-HHH-H-H-HHH-HHHHH-H-H-H-H--HHHHHHHHHH---HH
+                          CCCC CBCBCBCBCC C CCBCC CC  C   C C CCC CCB CCC C C CCC C C CCC CCBCC C C C C  CCCBCBCCCC   CB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXX++++++++++XX++++++=--=XXXXX+XXXXXXXXXXXXX++XXX+XXXXXX+XXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....... ...........       ..............................................................................................
+=-HH==  = = = --=         --H--=--H-HHHHH-H-H==-H-=-H-H--=-HH-HHH-HHH-HHHH--H=-=H-H-H-H-H-HHH----HH=---HH-H---HHHHH---HH
+  CB                        C     C BCBCC C C   C   C C    CC CCC CCC BCCC  C   C C C B C CCC    CC    CC B   BCBCC   CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXX++++XXXXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXX++XX+X+XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX
+'''''''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ ....................     ..............................................................................................
+  ---====-H-HHHHH--=       -------H---H-HHHH---==--=-=H----=---H--H-H-HHHHHHH-H-HHHHH-H-HHHHH---HHH-H-HHH---------H-=---
+          C CCBCC                 C   C CCBC          C        C  C C CCBCCCB C CCCBC C CCCCC   CCC C CCC         C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=+++++++XXXXXXXXXXX+++++++++++X+XXXXXXX+XXXXXX+++XX+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXX+++++++++X+
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+ ........................ ..............................................................................................
+  == ===H-HHHHHHH--==       ==-=-HHHH--=HHHH--===--=--H-H--=------HH--HHHHH-H--HHHHHH-HHHHH--===H-H---------- =  === =-=
+        C BBBBBBC                CCCC   CCBC          C C         BC  CCBCC C  CCCCCC BCBBB     C C
+            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XX+++XXXXXXXXXXXX+++++++++++++++XXXXXXXXX+++++XXXXXXXXXXX+X+X+XXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXX++++XXXXX+++++++++X+
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''
+ .............................................................................................................. ........
+  --===-HHHHHHH-HH-== = =   ======H-H------=====--H-HH--H-H=-=-=H-HHH---H---H=H---H---H-------------====--H--==   = ==-=
+        CCBCBBB CC                C C             C CC  C C     C CCC   C   C C   C   C                   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=++X++++XXXXXXXXX++++++++++++==-++++++X+X+++X+XXXXXXXXXXXXXX+XX+XX++X+XX++XXXXXXXXX+XXX+++XXXXXXXXX+++++X++XX++=++++++++
+  ''''''''''''''''''''''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''
+  ... ................. . .      .............................................................................   .......
+  =-   =--H-H-H--==                ===-=-===-=----HHHHH-----=--=--==-=--==---------=---===---HH---H=====-==--=   ===   =
+          C C C                                   CCCCC                                      CC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++X+XX++XXX++++++==-+-=-=-+++++++++XX+X+X+++X+XXXXXX+XX+X+X+X+X+X++++++XX+++++++++XXXXXXXXX+++++++++++++++++++++X+
+'''''''''''''''''''''              '' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''
+  ...................                  ........................................................................ ........
+    ====-=--==---= =                    =--=-=-===-=--H---=--=-=-=-=-=-== ===--=========----HHH--========== =    =====-=
+                                                      C                                     CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=++++=+++++++++++++++++++++++++++++++=++++XX++X+XXXXXXX+XX++++++++X+X+++++++X+X+X++++++++XXXXXXX++++++++++++++++++++++++
+ '''  '  '''''''''''''''''''''''''''  ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  .       .   . ...................     ...............................................................................
+                  ===   === =            =--==-=-------=--========-=-=======-=-=-========------- ==   === ====== ===  =
 MOOOOMOMOMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+ ++++ - - -- -=+++++++++X+X+XXX+++++++++++XX+XX+XXXXX+X+X+++++++++++++++++++++X+X+++++++++X+X+X+++++++++++++++++++++++++
+  ''             '''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+  ..              ...................   ...............................................................................
+                  === ==-=-=---====      =--=--=-----=-=-====== ==== =========-=-=== =====-=-=-= =  === =======   = = =
1
 OOOMMMMMMMAXXZX1Z1Z1XZZ)Z111Z1Z)Z1Z1ZZ1)1))))++=+====-=-=-+=-=-=+-+===++)+1+XZAXXXMOOOOMMOOOOOOMOMMAAZ11Z111))Z)))ZZXZAX
+=--                                                                                ----  ------ -
 OOOOMMMMMMMAAXXZXXA1XZZZXZZ1ZZX1AAAXAXAXAZZ1Z1Z)1)1)1)1))1))1)1)1+)+)+1)Z1))XZAMMOOMMMOOOMOMOMMMMOMZZZXZZ1ZZ11ZXAZAAMAOO
+===-                                                                             --   --- - -    -                    --
 OOOOMOMAMXMAAXAXAXZ1ZZX1Z1Z1ZZX1XXAXAAMMMAXXAXAXZ1111)1)Z1ZZXZZ111Z11))+1)11Z1XZXZAXAXMAMMMAAAMXMXX11)11Z1XZAXOMMMOOMMOM
+---- -                                                                                                        -   --  -
 MMMMMXZZZ1XZX111ZXXXXZXZ1ZZ1Z1ZZAZZZAAMAOAAAMMMXXZ1)++++1))1X1Z1Z111Z)))11))1)1)++))1)1)Z1Z1Z1Z)))1))1Z1XXXAMMOOOOOMMOOM
+                                        -                                                                     -----  --
 MXMXX11ZZ)Z1Z1XZX1AXXZ1111XZXXXXAMMAOOMOMMMAAXMMX1Z))++)+=++)+1)))1)1)1)Z))+)+)=+=++=+))1ZZ11))+))))++1)ZZXAMMOMOAOMOMOM
+                                    -- -                                                                      - - - - -
 1)1+++)=)+11111111X1111111ZAAXXXAAMMOMMMOMOMMMMAAAZ11)1))+)+)+)))+)=)=)+++)+)))+==))1)ZZ1ZXZZ)))))))))1)11ZZXAMAMMMMMAOM
+                                    -   - -                                                                           -
 =-=----===)=))++))1+111)ZXAAXZXZAXAAMAMMMMOMMOMAMAMXX1Z1))1)11))1))))))+)))11)1111ZXMAMMOOOMMOMAAXMZXZAZZXAAAXMAMMMOOMOM
+                                          -  -                                          ---  -                     -- -
 ----==+=+=+==+++++1++++)111Z111ZZZZ1AAAXAXOAOMOAAXAXAXX1Z1Z1Z)1111))1)1)1111Z1ZZZXAAOMMOOOOOOOOMOOOMMMOMMAMMMMMMMMMMMOOO
+                                          - - -                                     -  ---=-=-- ---   -              ---
 =-=-==+++++=+-+=++=++=)+++)+==+=)+++))1)11ZZZZX)11ZZ111+1)))))++)+ZZZZXZZ1AXMAAAMXAAAAMOMOOOMMOOOMMAMXMAMMOMMMOOOOMOOOOO
+                                                                                       - -=-  ---         -   ---- ---=-
 ==+=)=)+))+++=+=)++===+++++=======+--==-++)+1))=)+++=+++)++=++)+)+1)1)XAMAMAOOMMOMMMMAMAMAMAMOMXMAAXAZXXAXOMMMOOOOOOOOOO
+                                                                            --  -            -            -   ----------
 +++=++)+)+)=++++)))))++++++=+==-=---=-=====-==+-+==-+=-=+=+===+=+)1)1)ZZXZMMMMOMMAMMMAOMMMAXAMMXMAMZAZZZAXMAAAMMMMOMMAMA
+                                                                              -       -                           -
 +===)+))++)+)+)1Z1X1Z))++))++=+=++-=--+=+======-=-=-=-+=======))))1+)+))11XZMAMMMXOOMOMMOMMMMOMOMMA1AZX1X1XAMMOMMMMAXAAA
+                                                                                  -- -  -    - -              -
 ====)++=+=++))11Z1Z1Z1)+)+)1))+++++++++++-=-=-==--===-+---=-+-))Z1)+))1ZX1Z1ZZXZXXXXXZAXMMMMMOMMMAMA111)1)XZZZZ111Z1Z1ZZ
+                                                                                             -
 ++)+))11Z1)11Z11XZAZAZZ)1)11111+111))+)+++====+=+-======+=+++)))111)1)1111Z1Z1)1Z111XZXAAAMMMMMOMAMAAZZ1ZZXXZ1Z1XZZ1Z1Z1
+                                                                                               -
 +=)1Z1XZXXXXAXAXMAMAXZXZZ1ZZZZXXZ1Z1111))+)))++=+=+=+=++))))11Z)Z1Z)11Z111)+1))+)+))1)))1)1ZAXXXXZAZAZXAMAXXAZAAAXXZXZXZ
 )111OXA1AXZXMAMAMAMXXXXZAZAXXXAXMXAXXZ1)1))))+)+++++++))11Z1XZZZX1Z11)1))+)=+=+++=+=+-+=)+)+))))1))11)ZZAAXAAAAAMXAAMXMA
+    -
 Z1MXAXXXXXMAMXMMMXAZMZAXXAAXAXOMMMMXZZZ1Z1)+++1))+)++)1)11Z1XXXZXZ111))++=))++=-+-+=+=-===+-=-++++)+)))+1ZAAXAMMMAMMMXOX
+                              -                                                                                       -
 ZZXXAZX1XXAAAXAAMAMXZZAZZ1XXXZXAXXMXXZZZ11Z)Z1X1111)1))))))+11111)1)1))=+++=+=+=)+++=-+-)-====+=+++)++1)))1ZAAAAOAMAMMAA
+                                                                                                                -
 Z)Z1Z1XZZ1AZXZX1ZZ11111))+)+))1)11Z1Z1ZXZZZZZZXZZ1XZZ11++++=)++=++)=+++-==+=====+=+=+==++==-=-=-=+++======)+1)11X1XXXZAZ
 )=++)+)1Z)1)1))+)))++++=====+=+=++)1ZZZZZAAXMXX1ZZX1ZZX111111+)+1++=+=+=++++++++)+==++)+)+++)+=-+++=+-====+===++++))1))+
 ------=-===-+=)-=-=-=-+-=====--=+=1)1Z11ZZ1ZZZ)))+)111111)1)Z)++)++=)+1+)11+1)))11)+)111)))))+)=))Z1)+)))=+-==+=+-+++)))
 - -=--------=-=-==-=-----=-=======+)Z1XZ11X11)1)))))111)111)1)))1)XAAZXZX1Z11)Z)Z))+1))+Z)1111111)Z1Z11+)+)+)+)+)+)+)+)+
  -------------=-==--=-------===-+=++)+))1)Z1))1)1)1111)1111)11ZZZAAOMXAAMAMXXZZZZ1Z)1111Z1Z1111)Z111111))))))+)+)=++)+1+
+                                                                   -
 ------------=---==--=---=---=-+=====+-++))ZZX1AXAAAAAXMXMXXXMAMXMAMAX111ZZXZXZZ1XZX111111111Z1Z11)))1)1))+++1+)+))))))11
 ----=-------- ----=-+=-===+==-====+-+=+=++)1ZXXXMMMAMMMMMMMAMMMMMAZ1AZZ11111Z111Z)11)+111)1)))1))=++))1)1+)+11))))Z+))))
 -----===--==--==+)1+)+)+)+)))+++)+)+))++)+))1ZXZXAMXAMAXAXAXAXAZX1Z1Z11)1)))1)++++))+++)))+=+=+=-==-+=++))++1)1)1+)))+))
 =====++++++++)1)))ZZZ1111)11ZZZ1ZZX1ZZZZ1)Z1Z1Z111)+))1)+)++)++=++)=)+++)))+)=)=+=+==-=-========-=--=---=-=-+=+=)++++=))
 ++=-==++Z11ZX1ZXXZXXXZAZZZAAXXAXMAMAAXMXXZXXXZX111)=++)))++=+++=++++)+))1)1)1+++))+===+=======+=---==---=--=-=++====)=))
 +-=-=-+=++1+XZXXXZXXXZXXX1AXAAAAMXZ1MAMMMMMXXXM1Z11)1))+++))1)+)))1))+1)1)111)1+)++=+)++)++=+=+-==+-=-------=--===++++=-
 --==--= -===1+))ZZXXAXMXAXMAAXMXAAXXMAOMOAMMMAMMMXAXMAXZZXAAMXXZZZXZXZXXXZAZZ)))Z))+++)++++++=)++++=+==-=-=-=-=-=====-==
+                                      - -
 --=-----------+=++1+11Z111Z1X1Z1ZZZXOMMAMMMMMAMAMAMMMMMMMAMOOMMMMXMMMAMAAAAAMZAZAZ1111))++)+))))1))))))++=+++==-==+=+=-=
+                                    -                      --
 ------=--------------=+=+++))+)+1)1XMXAAMAMMMMMXXAAAOMOOMMOMOOOOMMMOMAMMMAOOMAAAAXXZZ1ZZZ111Z1Z1111)1+1+)++++++=+==-====
+                                                    - --  - ----   -      --
 =--------------- ---====-==-=+++++++))ZXXAAXAXMMXXAMMMOMOOOOOOOOOMMMOOOAOMXXAAMMAZMXAAMXX1Z1ZXX11+1+1))++=)))+=--==-+=+-
+                                                      - ---------   --- -
 --------==----------------- --===-=-+=1+1)Z1ZZXZAZAAAAOOOMOOMMOOMMOMOMMMMMMMMOOMMAMMMMMMMAAXZ1Z))+))+++++=))1))=)==-+++=
+                                                      --- --  --  - -        --
 ---  -----=-------------- ----=-=----====+)=)+++++1)1ZZ1Z1ZZXXAZZZZZZ1AZAZAXMAMMAXMXAXXZXZZ1Z)))+++))+)+))11XZ1+))+=)+++
 ----=-=-=---==--------=- -----------======)-+==-=-==++)+))))))1))=+===1+))1)Z1Z1ZZXXAZZ1Z111)+)+)+)+))))11XZXXX1111+)+))
 - ----===-=-=----- ----=--=-===-==----=-==+==-----===---=-=-=-=---=-===++=)+)+1)))+))+))1)1++=++)++=+=++1)1Z111)1Z))+=+-
 ===---=====-=-===-----=-==+=+==))===+++=+=+=+==-==+-=-+=-=+==--====---=-===--=+==-+++))+))))+))++=+++=++)+)+++)+)))+++)+
 )++==-=---=-===-=-==--==+=+=+)+))+)+)+)++-++===-=---=-==+=+)+==-==-==-=-+==-===-==++++)+)))++=++++++)=)=+++-+=+=========
 AZZ1)++=+-+=+-===-==--=-===-=-=++==-+=)+)+==+=+=---=------=---==--=====-+-==+==-+=+=-===+=++++==+++=)+)+===-==+=+=-==-=+
 XXX1Z1Z)++)+==+=+=+=--=-===---===-===++)+++====-=-----==--=-=-=-----=-=-====+=+-+++++=++)))))++=++)+)++=)===++-=+-)-++++
 Z1ZZZ1ZZX1X))1))+++==++====-===---=====++====-=---=-=-----=-=-=---=-=-=-==))=====-==+=)=)+))111)1)))1)1)+=+=))))))))11XZ
 =++)))+)111)1))++))+==+==------=-=======++)==-=---=--=----========+=+))++-)1+=)=)=++)+)11)1)Z)1))))+1))+======+)1)ZZAAMA
 ===-==+=+=++)++)+))++-+==-----==--=-=-=-+++++==---=-=----===++++)))11ZZZ1)1))+1111Z)1)1111111+1))++++=+====-+=)1ZXXAOMMO
+                                                                                                                    -  -
 =-------=-+==-==-=+-==)+=-=-==----===-+=)+=====-----=-- -===++)+))1ZMAOXXZAZZ)X1MZZZZZXZX11)))+=+==-=-+=+=)+)+11ZZAZMXAM
+                                                                      -
 +=--=--=======+==+)+)======---=-+=)=+-)+))))+++===+=+=+++=))+)))ZZMXXXMAAAXZZ1Z)11Z1XXXXXXZ1Z11)1)))))1)Z)1)1111Z1XZZ111
 +==---=-=-+=+=+=+=))++===--------====-)+1))+)+++)+)+++)=)+++)+))))1ZZ1ZZZ11))))+)+1))111Z111ZZXAAXMMMAOOMMMAMAAXAZ11)+)+
+                                                                                                      --
 )++====-=-=-====+))++=-==-=-=-------=-++))++)=+==-==++1))+)+++)=)))))))+))++++)+)+++)+++))1)XXMAOOOOOOOOOOOMMAMXAZ1)+=+-
+                                                                                                ------=-=--
 +++++=+===--- =-=--====-+==--=--==+====-+=+++=-====--=====+-)=+)+++=)++++++=)=+))+==+=++))ZZXZMMMOOOOOOOOOMOMMOXX11))++=
+                                                                                                 -----=-=- -  -
 )+====+==--=----=-=--===)+)-+===-=+=+===++)+)++==---==+==-+-==+=+=-++=+-===-====++)+))1+)111ZZAAMMOMMMMMOMMAMZZ1Z11)111)
+                                                                                                  -     -
 ===-=-- ------ -------=========---======--+====-=----=--- ----===-=------=------==+=++)))1)+))1)Z11))++))+)))+))1)1))))+
 ===---=-==--- ---- -----=-====--=-==-==-=--=++==----=-=-=---====+++-=--==-=-=-====++)+)+1))++=+=+-===-===----===+-)++=+=
 ==--------- -   ----- --=-=====--=-------======--=----=--------==-----====--====+-====+=)+=----=- ------- -==----=====--
 ==---  ---  --- - ----=----- -----------=-====+====-+----  -----=-=---====-===+=======+-+=+===-====---+=++=-=-======--=-
 ===-=------  ---- --======--= ----=--=====+=1)1+1)Z))++==-=----==-===-+-=--=----=---+==-+===--=-++)++++=++=======-=-===-
 )==---=-=-------------==+++==--  -=-=-=+++++Z11)Z1Z11)1+===---- --------=---- -----==-=-==+=+=+))+))+++=++++)=)=+=------
 -===+--=-=- =---====+++))+)=-------===+)+++))+++)++==+++)-=-=-------=-------==--=++===+++)+=)-)+1)11)===)++=+=)))+==----
 ==+==--==-=-==-=======+=+==-=-----====)===+=+-=====----=+===+-==--==--=------=--=+1=++++)=)+)+)11+)))=)))))+1)111)+==---
 ====-==-=----==-=-=============-+=====)=+========-=-----=---=====-+=====--+=++)+1)Z+1+)+)+++)=+=))+))+))++)))+))1))++=+=
 +=--=---=-----=---===-=-=--=--=-==+=+=+++)+=++)1XZ)=+++===+---+++=+=+=--==+=++++))))1+++++)=+++=++)++=)+++)=+=)=+=+=++++
 +=+-=-=---------=-----=-------=-=-==+++)XAOMZ1AOOOM)=++=+-)1X+))=-=-=-++)++=+=++))+++=+=))+++=+=+==--==-=--=--=---==-=+=
+                                          -    -=-
 1+)++-=---=--=-=-==-=--=-==---- =-=+)ZOOOOOOOMMMOOOZ)=))1ZZXOOA11+-=--==Z1Z111Z1Z1Z1111)1+++)+)++=+====-=------ --=-=---
+                                      -=+++=-   ++=         =-
+                                        '
 )=++)+--===--===-==---=-- - - --=+1MOOOOOOOOOOXAOOMX+-))ZZAAOOOMZ++=-- -)ZMAOAMAAAAXXZZ)))))+))+)+=====---- -- ---- =-=-
+                                    -=+++++++=  ==          +++             -
+                                      '''''''
+                                      ......
 ===-==----=---==+=+==-==--- --+)MOOOOOOOOOOOOOOMOOOX+=1AOOOOOOOOOZ)))=-- -ZAMAMMMAAXAXX111)11))+)++=+=====--==----------
+                                 -++++++X+++++= ===     --++++++=
+                                   '''''''''''              ''''
+                                    .........               ....
+                                      ==-====
 ----------------=-===-------=ZOOOOOOOOOOOOOOOOOOOOOZ)-1XOOOOOOOOOO1))+=-  --)1Z)1+)++=+==-=====-=------ ------ -   -  -
+                              -==-++++++X++++++---=     =++++++++=
+                                  '''''''''''''           '''''''
+                                   ............            ......
+                                   == ==-====               = ==
 -------- -----=-=---- ---=)XOOOOOOOOOOOOOOOOOOOOOOOX1)1XOOOOOOOOOOM)11)==- ---+++===+==-==-==-+++===--=-=====-- =--- ---
+                            -+++++++++++XXX++++=--=     -+++++++++
+                              '''''''''''''''''           ''''''''
+                              .................           ........
+                              =   =   ==---===            = ===
 ------- ===== =-=---- -)MMOOOOOOOOOOOOOOOOOOOOOOOOOOOZMOOOOOOOOOOOOZZZZ+--- - - =-=-=-=--=====+=+=======+=+=+=====--=-=-
+                          ++++++X+++X+X+XXXX++++++=--  -=++++++++++
+                           ''''''''''''''''''''''        ''''''''''
+                             ....................         ........
+                              ==-===-=-=--H-= ==          === ====
+                                          C
 ------=====-------=--=XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOOOOMMAX)--- ------=-=-+-=++++++=+=+++++=)++++==-==+=)+++
+                       =++++++++X+X+XX++++XXX+X+++--= =++++++++++++
+                        ''''''''''''''''''''''''''       ''''''''''
+                        .........................         .........
+                           =====-=-=--====---=-==           ===
  -=-=-===---=-=-----+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX+--  --  ---=-==+-+++++++-)-)++===)+)+)+==++++))
+                      ++++++X+XXX+XXXXX+XXXXX+X++++-=-+++=++++++++++=-
+                      '''''''''''''''''''''''''''''   ''' ''''''''''
+                       ...........................     .  ..........
+                         ===-=---=H-H--=--H--=-===          =======
+                                  C C     C
 ==+==-=======-==---=MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=------   - =-==+=====+-+=+=++))1))++++=+=+=++)+
+                     =++++++X+X+XXXXXXXXXXXXXXXXX++==+++++=++++++++++=-
+                      '''''''''''''''''''''''''''''   '''  '''''''''
+                      .............................   ...   ........
+                       =====-=-=--H--HHH--H-H----==         = =====
+                                  C  CCC  C C
 1+)++))=====+++===+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)-----      --===-===-=======-)+1))+=+==+==-===-
+                    ++++XXXXX+XXXXXXXXXXXXXXXXXXXX++==++++--+++++++++=-
+                    ''''''''''''''''''''''''''''''''  '''   ''''''''
+                    ................................  . .     ......
+                      ==-----=H-H-HHHHHHHHHHH-----=           ====
+                              C C CCCCCCCCCCC
 1)1)))1++=)+))+=)+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ=- --- -    ---===-==-===-==-===+)))-=====-+-=-
+                   +++++XXXXXXXXXXXXXXXXXXXXXXXXXXX++=+++++-=++++++++==
+                    '''''''''''''''''''''''''''''''''  '''    '''''''
+                    ................................   ...    .......
+                    ====--H--HHHH-HHHHHHHHHHH-HHHH-=           ====
+                          C  CBCC CBBCBBCCBCC CCBC
+                                    V
 +++-))11)11)111))1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=------ -  - -==+=-+=++++==)=+-++-=+=+=+=++=++=
+                  +++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=++++=-=++X++++++-
+                   ''''''''''''''''''''''''''''''''''  ''''   ''''' '
+                   ..................................   ...   ..... .
+                    ===-H-HHHHH-HHHHHHHHHHH-H-HHHHH=     =     =-
+                        C BCCCB CCCCBBBCBCC C CCBBC
 +===+=+=++)=+++=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOM+  ----  -   --+-==++))))1)+++=+=-=+==-===+)+)-
+                 -++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++= -+++++++++-
+                  ''''''''''''''''''''''''''''''''''''  '''   ''''' ''
+                  ...................................   ...    .... .
+                   ===H-H-HHH-HHHHHHHHHHHHHHH-H-HHH==          ===
+                      C B CCC BBBCBCBBBBCCBCC C BCC
 1)++)+)+))+==--=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAOOOOOOOOOOOZ---=- -      --===+=)+)+)++====---===-+=+=+==-
+                -+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++=  +++++++++==
+                 ''''''''''''''''''''''''''''''''''''''''''    '''''''
+                 .....................................  ...    ....
+                  ====H-HHHHHHHHHHH-HHHHHHHHH-H-H-H-=          ==
+                      C BBCCCCBBBCC BBBCCCBCB C C B
 MXX1Z11ZZ1)))-=)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZOOOOOOOOOOOX=-=--  -      --=----===+===++=---=-===+==+-==
+                ++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++  -++++++++++
+                 ''''''''''''''''''''''''''''''''''''''''''    '''' '''
+                 ...................................... ...     ...
+                  ==-=--HHHHHHHHHHH-HHHHH-HHHHH---H-==  =       =
+                        CCCBCCCBCCC CBBBC BCCCC   B
+                                      V
 OOMAXZXZXZX1Z)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZAOOOOOOOOOOM----- --    - --==--=-=-==-=++)==-=====-=-===-
+--             -+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++-  =+++=+++++
+                '''''''''''''''''''''''''''''''''''''''''''     ''' '''''
+                 ..........................................     ...   .
+                  =---H-HHHH--HHHHHHHHHHHHHHHHH-H-H-- =          =
+                      C CCCC  CCBCBCBBBBBCCCCCB C C
 OOOMMAAXXXAXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1MOOOOOOOOOO--=-- ---       -==---===-+++=+++)+=-==-==--=-
++--           =+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++=   +++++++++-
+               '''''''''''''''''''''''''''''''''''''''''''''    '''' '' '
+                ............................................    ...
+                 ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===        ==
+                     CBCBBCCCCBBCCBCCCBBBCCCBCBCBCCCC
 OOOOMAAZXZ111AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1ZOOOOOOOOOO+-=-- ---       -=+-=-======)+++))++=-+-===-==
++-=-          +++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++   ++++=++++-
+              ''''''''''''''''''''''''''''''''''''''''''''''     '''  ' '
+               .............................................     ...
+                ===-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=== =
+                    C CCCCBCCCCCBBBBBBBBBCCCBCCCCBBCB
 OOOOOOMXXZ)+1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1+OOOOOOOOOO)-+=- ---   -    =1))))++++=)===++====)=+===+=
+==+---        +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++   -+++=++++=
+              '''''''''''''''''''''''''''''''''''''''''''''''     '' '' '
+              ...............................................     .
+               ==---H-HHHHHH-HH-HHHHHHHHHHHHHHHHHHHHH-=== ==      =
+                    C CCBBCC CC BCBCBBBBBBCCBCCCBCBBB
 OOMMOAAZXZ1)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-AOOOOOOOOO+ ------         -1Z1)+++-)+==----=-----------
+--  -        ++++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++    -++--+-+=
+             ''''''''''''''''''''''''''''''''''''''''''''''''     '   ' '
+              ..............................................
+               ==--=--HHHHH-HH----HHHHH-HHH---H-HH--H=-==
+                      CCCCC CC    CCCCB CCC   C CC  C
 MZAAAZZZXZZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+ZOOOMOOOOO1--=---         --AMOOOMMXZ))+===-=-=-=-=---==
+            ++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=   -++ =+=++                    =--
+             ''''''''''''''''''''''''''''''''''''''''''''''''     '   ' ''
+             ................................................
+             == ==----HHHHHHHHHHH-HHH-HHHHH-HHHHHHHHH---- ==
+                      CCBCBCBBCCC CCB CCBCC CCBCCCCCB
 ZZ111)1+111MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)ZMOOMOOOOO)-------    - - --1AOOOMMMMAZ1+==-------- ---+
+            ++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++    == -+-++                    =-=
+            ''''''''''''''''''''''''''''''''''''''''''''''''''
+            ..................................................
+              ====-----HHHHHHHHHHHHHHHHHHHH-HHHHHHHHHH-=-===
+                       CCCBBBCBCBCBBBBBCBCC CCBCCCBCCC
+                          V
 XXZ1+=-===MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)1MOOOOOOOOZ-- ---           -ZOOOOMMMAAZ1++-------   -==
+           +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++-   ==+++=++                    +==-
+            ''''''''''''''''''''''''''''''''''''''''''''''''''        '
+            ..................................................
+            ==--H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-== ==
+                C CCCCCCBBBCCCBBBBBCCBBCBBBCBCCCCCBBBCCC
 OMMX)=++1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1OOOOOOOOOZ=-----            +MOOMMMMXX11)))+-- --------
+-         ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X++  -+=+=+=++                     --
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''    '     ''
+          ....................................................          ..
+            ----HHHHH-HHHHHHHHHHHHHHH-HHH-HHH-----H---H--=-=-=
+                BCBCC CCCCBBBBCCCCBCB BCC BBC     C   C
 OMMMZ++1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXOOOOOOOOOZ---               -1ZZZZ)))++++))+-------=---
+-       --++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+++  -++--+-++
+          '''''''''''''''''''''''''''''''''''''''''''''''''''''   '   ' ''
+          .....................................................
+          ====--HHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHH--HHHHH--==-==
+                CCBCBCC C CBBCCCCCBCBCBBBCBBCCCC  CCBBB
 AXXZX)-=MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOMOOA- -- --            ==+=+=-==-==-==-------=---
+         =++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++= +++==+ ++
+          '''''''''''''''''''''''''''''''''''''''''''''''''''''   ''  '
+          .....................................................   .   .
+          ==----HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHH-H-H-HHHH-=---==
+                CCCCBCCCC CCCCCCBCBCCCCCCCCBBCC C C BCBC
 Z1Z1MX=-AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOM---                -===------====+++=+=----=-
+         =++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++++++++++ ==
+          ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '
+          ...................................................... ...
+          ==-=HHHHHHHHHHH-HH--HHHHHHHHHHHHHHHHH-HH-HHHHHH-=--==
+              CCCCBBBBBBC CC  CCCCBCBCBCBBBCBCC CC CBCBCC
+                    V
 MMOMOMMXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOA=---         -     -=+==--=-+)+)+)++)1+)++===
+  - -   ++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++ =+
+         '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
+         ............................................................
+         ===--HHHHHHHHHHH-HH--HHH-HHHHHHHHH-HHHHHHHHHHHHH---H-=  ==
+              CCCCCCBBBCC BC  CCB BCBCBCBBB CCCCCCBCBCBCC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+- --               +1+)1Z1XXX1XZMAAAAXZ1))+=
+===----=++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX++++==+
+        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+        ............................................................. .
+        ==-=H-HHHHHHHHHHHHHH-HH-HHHHHHHHHHHHHHHHHHHHHHHHH---H--=---==
+            C CCCCBCCBBBBBCC CC BCCCBBBBBBBBBBBCCCCCCBBBB   C
+                      V V                 V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)- -               -+)=MOOOOOOMOMOMOMMXX11)+=
++=+=-+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+++++++-                        -===-- - - -
+      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' '
+      ............................................................... .
+       =-HHH--HHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH--=H------=
+         CBC  CCBCBCBBBBBBBCC CCBCBCBCBCCCBCBCBCCCBCBCBBC   C
+                                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+- -                -=+OOOOOOOOOOOOOMMXX11==-
+++++=++XXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++                        =+++++++++=--
+      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''                         '''''' '
+      ...............................................................                              .....
+      =-HHH--=-=HHHHHHHHHHHHH-H---HHHHHHHHHHHHH---HH--H--H--HH------                                 ==
+        BBB     CCCCCCBBBCBCC C   CCCCCCCCBCBCC   CC  B  C  CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+                    +)OOOOOOOOOOOOOOOOOOMZ++
++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++                        =++++++++++=+==---
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                         '''''''''
+  . ..................................................................  ..                         .... . .
+     ==-HHHH---HHHHHHHHHHHHHH-H-H-HHHHHHHHHHHHHHHHHHHHHHHH--HH--HHH==                               =
+        BBBB   CCCBCBCBCCCBCC B C BCBBBCBCCCBBBCBCCCCCBBBC  CC  CCC
+        VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA=- -                -=)OOOOOOOOOOOOOOOOOOOOOM
+++++++XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX++XX++++++++                        -++++++=++=-+++++++=-
+' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                          ' ' '       ''
+.   ................................................................. . .                             .
+     =-HHHH-H=H-H-H-HHH-H-HHH---------HHHH----H-HHHH--HHHH==--==--===
+       CBBC C C C C BCC C CCC         CCBC    C BCCC  CCBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)+-          -      -=)OOOOOOOOOOOOOOOOOOOOOO
+=+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++                        -=++++++++++++++++++++
+    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                          ' ' ' ''' ''''''''''
+    ......................................................................                                      ........
+     =HHHHHHHHH-HHHHH-HHH-H-----H---H-HHHHH--HH-HHHHH-HHHHH-----H--=====                                           = ===
+      CCBBCCBCC CCCCB CCC C     C   C CCCCC  CC BCBCC CBBCC     C
+                                                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1+-     -            -1AMOOOOOOOOOOOOOOOOOOOO
+==+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+X+++                          =++++++=++++++++++++
+   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                            '     ''''''''''''
+   .......................................................................                                  ............
+    =-HHHHHHHHHHHHHHHHHHHHH---H-HH-=H-HHHHH-----HHH-HHHHHHH=--H-HHH--=-==                                     =   ======
+      BBBCBBBBCCCCCCCCCCCCC   C CC  C CCCCC     BCB CCCCBBC   C BCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZ)---                )MMXOOOOOOOOOOOOOOOOOOOO
+==++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+X+X+++                          ==+++=++++++++++++X+
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                            ''' ''''''''''''''
+   .......................................................................                            .     ............
+    --HHHHHHHHHHH---H---HH--HHH-HH--H-H-HHHHH-H-HHH-H-H-HHH---=-H--=-=-==                                      = == ==-=
+      BBBCBBBBBBB   C   CC  BCC CC  C C BCCBB C CCB C C CCC     C
+          VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZZ=--  ----         -1ZMMOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+                          ++++++++++++++++++++
+ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                           '''''''''''''''''''
+  ........................................................................                           ...................
+  ==--HHHHHHHHHHHHHHH-H-H-H-H--H--H-H---H-HHHHHHHHHHHHHHHHH-H-H-HH--H----=                           == ========= ======
+      CCBCBBBBBBBBBCB C C C C  C  C C   C BBBBCCCBBCCCBCBBB C B BC  C
+           VVVVVV
+            A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1ZA+--   --           1AOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXXXXXXXXXXXXXXXX++XXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXX+                        ++++++++++++++++++++++
+  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                          ''''''''''''''''''''
+  ........................................................................                          ....................
+   =-HHHHHHHHHHHHHHHH---H-----==---====---HHHHHHHHHHHHHHHHHHHHHHHHH=H=---                              ==  ==    =======
+     CCCBCBBBBBBBBBCB   C                 CCBCCCBBBCCCCCBBBCCCCCBCC C
+           VVVVVVV                                       V      V
+            AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZMOZ)-   --          -AOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXXXXXXXXXXXXXX++++X++++X++X+XXXXXXXXXXXXXXXXXXXXX+XXX+X+X+++  -                    -++++X+++++++++++++X+X+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                        ''''''''''''''''''''''
+  ........................................................................                        ......................
+  ==HHHHHHHHHHHHHHHHH-HH-H--====-====-==-=----H---H-H-H-HHH----=---=-=-===                          ==-======== ====-=-=
+    CCBCBCBBBBBBBBBCC CC C                    C   C C B CCC
+          VVVVVVVV
+            AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOA1 - --- -        -OOOOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXXXXXXXXXXXXXXX+XXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+ -=                   -+++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       '''''''''''''''''''''''
+..........................................................................                       .......................
+  ==----HHHHHHHHHHHHHHHH=----==-------------HHHHH-HHHHHHHHHHH-HHHHH-H-H--                           ===  ==   =   ==== =
+        BBBBBBBBBBBCCCBC                    CBBCB CBBCBCBCBCC BCBBC C C
+          V VVVVVV
+          A   A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX--)---          -OOOOOOOOOOOOOOOOOOOOOOOO
+++X+XXXXXXXXXXXXXXXXXXXXXXXXX++++XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=                  -+++++++++++++++++++X+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '                    '''''''''''''''''''''''
+..........................................................................                        ......................
+= -=--HHHHHHHHHHHHHHHHHHH-H--====--=------H---HHH-HHHHHHHHHH--HHHHH-HHH--                         ========= ========- =
+      CCBBBBBBBBBBBBBCBCB C               C   CCB CCBCBBCCBC  CCBCC BBC
+          VVVV  V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-ZX1)-           MOOOOOOOOOOOOOOOOOOOOOOO
+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++                   ++++++++++++++++XX+++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                     ''''''''''''''''''''''
+........................................................................... .                     ......................
+= -=H-HHHHHHHHHHHHHHHHHHHHH-H------=HHHHHH--HHHHHHHHHHHHHHHHHHHHHHH-HHHH-                           = ===== =====--=====
+    C BBBBBBBBBBBBBBBBBBBCC C       CCBCCC  CCBBBBBCBBBBBBBBCCBBBBC BBBC
+        VVVVV VV  V   V                             V    VV     V   V
+        A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)OOO1-           1OOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++  ---              -++++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                    ''''''''''''''''''''''
+.............................................................................                      .....................
+==H-H-HHHHHHHHHHHHHHHHHHHHHHHHH-----H-HHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHH-                           = ======= = ========
+  C C CBBBBBBBBBBCBBBBBBBCCBBCB     B BCCCCC  CCBBBBBBBBBBBBBCBBBBBCBBBB
+       VVVVVVV       VV                           V   VVVVVV    V   V V
+        AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMOOO+           -)ZOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++  +++               ++++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''                 '''''''''''''''''''''
+.............................................................................   .                   ....................
+ =--HHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H=HHH-HHHHH-H-H-HHHHHHHHHHHHHHHHHHHHHH-====                         =  =====  =======
+    BBBBBBBBBBBCBCBBBBBBBBBBBCB C C CCC BCBCC C C BCCBBBBBBBBCBBBBBCBBBB
+      VVVVVVVV      V VV    V                         VVVVV     V   VVV
+      A A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)- -         ++MOOOOOOOOOOOOOOOOOOOOO
+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++-                =++++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''                  ''''''''''''''''''''
+.............................................................................. ...                  ....... .. .........
+-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-===                         = =       === =
+   CBBBBBBBBBBBCBCBCBCBBBBBBBCBCCCCCCCBCBCCCBCCCBCBBBBBBBBBBBBBBBBBCBBBBC
+     VVVVVVVVVV       V V  VV                         VVVVVVV   VV  VVVV
+      AAA A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1+-          ==1AOOOOOOOOOOOOOOOOOOOO
+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++                  ==++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                    '''''  '''''''''''
+.................................................................................                     . . .     ........
+-=HHHHHHHHHHHHHHH-H-HHHHHHHHHHHHHHHHH-HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---=====                               = = = ==
+  CBBBBBBBBBBBBBB C BBBBBBBBBBBCCCCCC BCC CBBBBCBCBCBCBBBBBBBBBBBBBCBBBBC
+    VVVVVVVVVVV       VVVVVVV                       V VVVVVV   VV   VVVV
+      AAAAAAA A         A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)+-         =)XMOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++--                -=++++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                     ' ''''' ''''''''''
+.................................................................................                       ...     . . ....
+--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H=--                                    = =
+  CCBBBBBBBBBBBBBBBCCCBBBBBBBCBBCCBCBBBCBCBCBCBCBBBCBBBBBBBBBBBBBBBBBBBBBCC C
+    VVVVVVVVVVVV        VVVV                        V   V VVV V VV  VVVV
+     AA AAAAA A                                                 A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX+-         ++ZAOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++                 =-+=++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       ''' ''' ''''''''
+.................................................................................                         .         .
+--HHHHHHHHHHHHHHHHH-HHHHHHHHHHH-H-HHHH-=H-HHH--HH-HHHHHHHHHHHHHHHHHHHHHHHHH---==
+  BCBBBBBBBBBBBBBCC CCBCBBBBCCC B BCBC  C CCC  CC BCBCBCBBBBBBBCBBBCBBBBBCC
+    VVVVV VVVVV         V                               V V V   VV    VV
+            A                                                         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZZ)=-      )1ZZOOMOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++--               -- -+++++++++++++=+=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                         ''''    ' '
+.................................................................................
+H-HHHHHHHHHHHHHHHHHHH-HHHHHHHHH-HHHHHHH=-=HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH----==
+C BBBBBBBCBBBBBBBCBCC BBBBBBBCC CCCCCCC   CCC CCBBBBBBBBBBBBBBCBBBBCBBBBC
+      V     V VV        V V                       V   V VVV V   V     V
+                                                                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX1)==      --=ZMOOOOOOOOOOOOOOOOOOOM
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++--                 ----+=++++++++++++=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                         '''''''
+................................................................................                            .
+--HHHHHHH--HHHHHHHH-H-HHHHHHHH--HHH=H----=------HHHHHHHHHHHHHHHHHHHHHHHH-=====
+  BBBBBCC  CBCBBBCC C CBBBBCBC  CCC C           BBBBBBBBBBBBBBCCBBBBCCBC
+    VVV                   V                           V   V V         V
+    AA                                                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX)+=---       --+)1ZMOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++                      -==+++++++++++=+=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                          ''''''''' '
+...............................................................................                            ........
+HHHHHHHHH-=--HHHHHH-HHHHHHHHHHH---H-==----H-H-H-HHHHHHHHHHHHHHHHHHHHHHHH-===                                =
+CCBBBBBBC    CBBBCC CCCCBCCCCBC   C       C C C CCBBBBBBBBBBBBBBBBBBBCBB
+  VVVVV                                             V V VVVVV   VVV   V
+  A AA                                                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+----            -----1OOOOOOOOOOOOOOO
+XXXXXXXXX+++++XXXXXXXXXXXXXXX+XXXXXXXX++++++X+++X+XXXXXXXXXXXXXXXXXXXXXXX++++++=-                        -++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                            ''''''''''''
+..............................................................................                             ........ .
+HHHHHHH--=====HHHHH---H---HH-=--------======-===-=--HHHHHHHHHHHHHHHHH-HH-=                                  = = =
+BBBBBBB       CCBCC   C   CC                        CCCBBBBBBBBBBBBCC BC
+VVVVVVV                                                 VVVVVVV V
+  A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX1=-          - -        -AOOOOOOOOOOOOO
+XXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXX++XXXX+XX++X+XXXXXXXXXXXXXXXXXXXXXXXXXX++++-                            -+++++++=++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                              '''''''  ''
+.............................................................................                               ... ..
+HHHHHHHH-==  =-HHHH-H-HHH-HHH-H-H--==----=--==-=H-H---H-HHHHHHHHHHHHHHHHH-==                                  =
+BBBBBBBC       CBBB C CCC BCC C C               C C   C BBBBBBBBBBBBBCBBC
+VVVVVVV                                                     V VVVVV V
+AAA A                                                             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXX1=           - - -       =1OOOOOOMMOMMM
+XXXXXXXXX+++++++XXXXXXXXXXXXXXXXXX++X++++++++XX+XXXXX+XXXXXXXXXXXXXXXXXXX+++++-                             =+++++  -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                 '''
+.............................................................................                                 .
+HHHHHHHH-=======H-HHHHHHH-HHHH----==-========--=--H-H=--HHHHHHHHHHHHHHHHH====
+BBBBBBBC        C BCCCCCC CCBC                    C C   CCBBBBBBBBBBBCCCC
+VVVVVV                                                      V     V
+AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZ)--         - ---       -=MOOOOOMZ1)))
+XXXXXXXXX+++++++XXXXXXXXXXXXXXXXX+++++++++++X+++X+XXX++XX+XXXXXXXXXXXXXX++++++-                              -====
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................................................................
+HHHHHHHH-== =  =HHHHHHHHH-HHHHH--====== ====-===-=---==--=--H-HHHHHHH--H===
+BBBBBBBC        CCCBBBBCC BCCCB                             C CCCCBCB  C
+VVVVVV
+AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ+--         --=+===++)--+MMOOOOOZ+--=
+XXXXXXX+++++++++XXXXXXXXXXXXXXXXX+++++X++++++++++X+XXXXXXXX+X+XXXXXXXXXXX++++++==                             --==-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................................................................
+HHHHHHH==  == ==--HHHH--H-HHH----== ==-==========-=---H-H-H=-=H-HHHHHHH--==
+BBBBBBB           CCCC  C BCC                         C C C   C BCCCCCB
+VVVVVV
+AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA1=-       ---=+==+=ZXOAXXMXXAOOZ+-
+XXXXXXXXX++++++X++XXXXXXXXXXXXXX++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXX++++++++                       -       =-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............................................................................
+HHHHHHH-- === =-==HHH-H-H-HHH-H-==================----------H---H-H-HH---===
+BBBBBBC           CCC C C BCB C                             C   C C CC
+VVVVV
+A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+-       -==++===-=)AAAZZ1)1OMZ=--
+XXXXXXX+++++X+X+++XXXXXXXXXXXXX+X+++++++X+X+X+++++XXX+XXXXXXXXXXXXX+XXXXXX++++++++-                             -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................................
+HHHHHHH=====-=-===--H-HHHHH----=-= =====-=-=-=====---=--H---H-HH-H-=------=====
+BBBBBBC             C CCBCC                             C   C BC C
+VVV
+A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)--      -==++===-==))1+)1)+11+--
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++X+X+X+X+XXXXXXXXXXX+XXXXXXXXXXXXXXXX+++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................................
+HHHHHHH-H-H-H-----HHHHHHHHH----=========-=-=-=-=--------H-H=H-HHH-H-HH-HH---=====
+BBBBBBB C C C     CCBBBCBCC                             C C C CCC C CC CC
+VVVV  V
+A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ+--  - --+===+)1++=+)1))11++)-----
+XXXXXXXXXXXXX+XX++X+XXXXXX++X+++++++++++++X+++X+++X+XXX+X+XXXXXXXXXXXXXXXXX+X++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................................
+HHHHHHHHH----=--= -=HHHHH-==-======== ====-===-===-=---=-=-HH--HHHHHHHH----=-===
+BBBBBBBCC           BBBBC                                  CC  CCCCCBCC
+VVV  VV               V
+A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1=--    --=-==+-+===1ZXZZZZ+=----=)1
+XXXXXXXXXXX+XXX+++XXXXXXXXXX++++++++X+X+XXX+++++++X+X+XXXXXXXXXXXXXXXXXXXXXXXXX++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................................................
+HHHHHHHH---=---===--HHHHH---========-=-=---=======-=-=----HHH-H-HHHHHHH-H------==
+BBBBBBBB            CCCCB                                 CCB C CCCCCCC C
+VV  V V
+A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)- -   =-=--===)=+)XXZ)11Z))- -1ZXA
+XXXXXXXXXXXX++++X+XXXXXXXXX+++++++++X+X++++++++++XX+X++XXXXXXXXXXXXXXXXXXXXXXXXX+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................................................
+HHHHHHHHH-H-====-=----H-HH-=========-=-==== =====--=-==-------H-HHH-H---H-H-H---==
+BBBCBBBBC C           C CC                                    C CCC C   C C B
+V   VVV
+A     A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1+--   ===--===)+1ZXZZ11)))1+-=)1MA
+XXXXXXXXXXX+++X+++++XXXXXX++++++++++++++X+++XX++++++++++XXX+XXXXXXXXXXXXXXXXXXX++++-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................................................
+HHHHHHHHHH-===-=====------====  = ======-===--==========---=H--HH--HH---H-HHH--=
+BBBBBBBBCC                                                  C  CC  CC   C CCC
+    VVVV
+      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX))-=  -=-------++))XZXZ))++)++==+XX
+XXXXXXXXXX++++++++X+++X+++++++++++++++++++++X+X+X+X+X+X+X+XXXXXXXXXXXXXXXXXXXXX+++--
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................................................
+HHH-HHHHHH=== ====-===-==== = === ==========-=-=-=-=-=-=-=H---H-HH--HHHH-HHHH-H==
+BCC BBBCBC                                                C   C BC  CCCC CCCB C
+      V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1)=-  -+---==----)+)11)))+===- --)+
+XXXXXXXXXXX+++++X+X+++++X+++++++++++++++++++X+XXXXX+X++XXXXXXXXXXXXXX+XXXXXXXX++++=-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................................................
+H-HHHHHHHHH==== -=-=====-==== === = ========-=-----=-==---H-H---H----=---HH-H-==
+C CCBBBBBBC                                               C C   C        CC C
+       VVV
+        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZ)-   --==--== ==)+++)=++)+--   -=+
+XX++XXXXXXXX+++++++++++++++++++++++++++++++++++++XX++++XXXXXXXXXXXXXX+XXXXXXXX++++=-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................................
+--==HHHHHHH- = =  ===== ==   == =  =  ===========--====-----HHH-H---H=H-------= =
+    CCCBBBC                                                 CCC C   C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ=--  -=-=--=+-+)XZ)+)+)1)---   -)1
+XXXXXXXXXXXX+++++++++++++++++++++++++++++XX+X+XX+X+XX++XXXX+XXXXXXXXXXXXXXXXXXX++++-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................................................
+-----HHHHHHH===  ========    ==== =======--=-=--=-=--==----=-HH-H---H-H--------==
+     CCCBBBB                                                 CC C   C C
+          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZ=   -==----=)=ZZMAX1Z)1+=-=---- =)
+XXXXXXXXXXXXXX+++++++++++++++++++++++++++++++++XX+++X+++X++XXXX+XXXXX+XXXXXXXX++++=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................................
+----HHHHHHHHH-   ==   ==  =   ==   == = =======--===-===-==-H-H=--H--=--HHH---= =
+    BCBBBBBBC                                               C C   C     CCC
+        V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1--- -=----=+))ZZMAOMMZ)+)-)=+---+1
+XXXXXXXXXXXXXXX+++++++++++++++++++++++X+X+XXX+X+X+X+++XX+XXXX+XXXXXXXXXXXXXXXX++++==                    -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................................................
+--HHHHHHHHHHHH-== == ==  === == === ==-=-=---=-=-=-===--=----=--H--HH-HHHHHHH-==
+  CCCCBCBBBBBB                                                  C  CC CCCBBCC
+          VVVV
+            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)= =+=-=-+)11ZZMMOOMX1+)+))))+)ZA
+XXXXXXXXXXXXXXXXXXX++++++++++++++++++++++XXXXXXXX+XXX+XXX+X+X+XXXXXXXXXXXXXXXX++++++-                   --
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................. .
+HHHHHHHHHHHHHHHHHH-======== =======   ===-H-H----=H--=---=-=-=--H-H-HHH-HHHHH-= =
+CCBCBCBBBBBBBBBBBC                        C C     C             C C CCC BBBCC
+        VVVVVVV
+        A A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ--=)=-==))1Z1ZMOOMMZ11)-==ZXMMMM
+XXXXXXXXXXXXXXXXXXXXX+++++++++++X++++++++XXXXXXXXXXXXX++X++XXXXXX+XXXXXXXXXXXX+++++++=                 --
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................
+H-HHHHHHHHHHHHHHHHH--===========-====== =---H-HHHHH-H-==-==---H--=----HHHHH---=
+B CCBBBBBBBBBBBBBBB                         C CCCCB C         C       CCCCB
+      V VVVVVVVVVV
+        A AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+- +=+=+-=+))1)XAAAZ1X11)11XOMMOX
+XXXXXXXXXXXXXXXXXXX+++X+++X+++++++++++++++++++XXXXXXXXX+X+++++XX++++XXXXXX+X+++++++++=                             -  -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................
+HHHHHHHHHHHHHHHHHHH===-===- = === ======= ====----HHH-H=-=====--====------=-======
+CCCCBBBBBBBBBBBBBBC                               CCB C
+         VVVVVVVVV
+            A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA---+=+++-)))1AZXMO1ZZAAMAMMOMMX11
+XXXXXXXXXXXXXXXXXXXX++X+++X+X+X+++X+XXX+XX++X++XXXXXXXXXXXX+++++++++XXXXXXXX+XX+++++++                  -         -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................
+HHHHHHHHHHHHHHHHHHH-==-===-=-=-===-=--H=--==-==---HHHHH-H--=========H-H-H---=--====
+CCBCBCBBBBBBBBBBBBB                   C           CCBBC C           C C C
+      VVVVVVVVVVVV
+        AAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+- -=-=-==+++1MXOOMXAAOOOMOOOMMZ1)
+XXXXXXXXXXXXXXXXXXXX+++++++++++++++++XXXXXXXXXXXX+XXXXXXX+XXX+XXX++XXXXXXXXXXXXXXXX++                 --    --- ---
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................
+--HHHHHHHHHHHHHHHHH-============= ===--HH-H------=H-HHHHH=---=---==---H-H-HH--H-H--=
+  CCBBBBBBBBBBBBBBC                    CC C       C CCCCC             C C CC  B C
+       VVVVVVVVVVV
+        A AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX=- -+=+=-+)+11MOMMMMMOOOOOOOOOOXAX
+XXXXXXXXXXXXXXXXXXXXXX++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++                 -     -=-=-=-=--
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................
+HHH-HHHHHHHHHHHHHHHH--============-=---HHHHHHHHHHHHHHHHHHHHHHHH-H---HHHHHHHHHHHHHH=
+CCC BBBBBBBBBBBBBBBC                   CBCBBBCCCCBBBBBBBBBBCCCC C   CCCBBBBBBBBBBC
+      VVVVVVVVVVVV                                    VVV               V VVV VV
+        AAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ=  =+=+=)=11AMOOOMMMOOOOOOOOOMMMMM
+XXXXXXXXXXXXXXXXXXXXX++XX+X+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXX+=                ==-   ------+=-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................
+HHH-HHHHHHHHHHHHHHH--==--=-==== = ====-HHHHHHHHHHHHHHHHHHHHHHHHHH=-=-HHHHHHHHHHHH-
+CCC BCBBBBBBBBBBBBC                    CBBBBBBBBBCBBBBBBBBBCBCCCC    CBBBBBBBBBBB
+      VVVVVVVVVVV                         V   V   V VVVVVVV           VVVVVVVVV
+        AAAAAAAAA                                     A A               AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1- -=+-===+ZAOOOMMOMMMMOAXZMMOMOOOO
+XXXXXXXXXXXXXXXXXXX+X++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+++-             ---  -    -     - --==
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................
+--H-HHHHHHHHHHHHHHH=-======= ==== =====-HHHHHHHHHHHHHHHHHHHH-----=--HHHHHHHHHHHHH=
+  C CCBBBBBBBBBBBCC                     BBBCBCBCBBBBBBBBBBCC        CCBBBBBBBBBBC
+        VVVVVVVVV                         V       VVVVVVV             VVVVVVVVVV
+        A A A A                                     A A                 AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=-==)+==+)AOOOMMMAXZXZMMMAMAMAMOOO
+XXXXXXXXXXXXXXXXXXXXX+++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXX++=            ---                 -==
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................
+----HHHHHHHHHHHHHHH--============   ==-HHHHHHHHHHHHHHHHHHHH----=-=--HHHHHHHHHHHHH-==
+    CCBBBBBBBBBBBBC                    CBBBBBBBBBBBBBBBBBCC         CBBBBBBBBBBBB
+      VVVVVVVVVVV                       VVV V   VVV VV  V             VVVVVVVVVVV
+        AA  A A                                     A                 A AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)--=+)+==++ZMMMMAMZ)+)1AMOMMZ)+1ZMM
+XXXXXXXXXXXXXXXXXXX+++++++++++++++++++XXXXXXXXXXXXXXXXXXXXX+++++++++XXXXXXXXXXXXX++=                          -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................
+----HHHHHHHHHHHHH--==== ==============--HHHHHHHHHHHHHHHHHH-=========--HHHHHHHHHHH==
+    CCBBBBBCBBBCC                       BBBBBBBBBBBBBBBBCC            BBBBBBBBBBC
+                                         VVVVVV V VVV V               VVVVVVVVVV
+                                                  A A                   AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-==)+))+++-)+XZAAAZ1+1+ZXOOOZ)+1++)
+X+XXXXXXXXXXXXXXXXXX+++++X+++++++++++++XXXXXXXXXXXXXXXXXXXX++++++++=++XXXXXXXXXXX++=                          ---
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''
+..................................................................  ...............
+-=--HHHHHHHHHHHHH---=====-= === === ===HHHHHHHHHHHHHHHH----====  =   =-HHHHHHHHHH=
+    BBBBBCBCBBCBC                      CBBBBBBBBBBBBBBC                CBBBBBBBBC
+     VV V V                               VVVVV VVVVV                   VVVVVV
+                                            A                             AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-)+)))+)++=))1)))1+11ZZZZAMOOAX1=--
+XXXXXXXXXXXXXXXXXXXX++++X+X+++++X+++++++XXXXXXXXXXXXXXXXXXXX+++++++-==++XXXXXXXXX++-                            --
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''''''''''
+...................................................................   .............
+--HHHHHHHHHHHHHHHHH-====-=-=====-==== ==--HHHHHHHHHHHHHH----=====     ==HHHHHHH--=
+  CCBBBBBBBBBBBBCCC                       BCBBBBBBBBBBBC                CBBBBBC
+    V   VV V                                VVVVV VVV                     VVV
+                                              A A                           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM11MOOOOOOOOOOOOZ==)))++=)++=1)1))+1))1XMMZZ1AMOMZ+
+XXXXXXXXXXXXXXXXX+X+++++++++++X+X+++++++X+XXXXXXXXXXXXX+X++++++++++    ++XXXXXXX++-                               -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''''''
+..................................................................     ...........
+--HHHHHHHHHHHHHHH=-===========- -== ====-=--HHHHHHHHH--=-======  =      =-HHHHH-=
+  BCBBBBBBCCCCBCC                           CCCCBBBCC                     CCCCC
+    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)- +OOOOOOOOOOOM+-+Z)))=-==--=++=++))1)XMMZ11Z1XXAZ=-
+XXXXXXXXXXXXXXXXXXXXX+++++X+++++++++++++++++X++++XX+++++++++++++++=    -++++X+++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      '''''''''
+..................................................................      .........
+H-HHHHHHHHHHH-H-H-H--== ==-=================-====-H====== = = = ==       ===-== =
+C BBBBBBBCBCC C C C                               C
+    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ --MOOOOOOOOOO)-+1X1))--=-+=+++-++1+)1MOOMAZZZXMOM1=
+XXXXXXXXXXXXXXXXXXXXXXX+X++++XX+XX+X++++++++XXX+++XX+++++++++++++++     ++++X++++-                         --       -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''''''''
+...................................................................     .........
+--HHHHHHHHHHHHHHH-H----=-====--=--=-========---===--========= ====       ===-===
+  BBBCBCBBBCCCCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM -+OOOOOOOOOOM++ZZX1)=- ==))Z)1)))+-++MMOOOMMAOMMOOM
+XXXXXXXXXXXXXXX+XXX+++++++++++X+X++++++++++++++++++++++++++++++++++    -+++X+++++                           =--   -  -=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''''''''
+...................................................................     ........
+H--H--H-H---H--=H--==== ======-=-========== =========== ===   ====      ===-===
+C  C  C C   C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM--XOOOOOOOOOO1+)A1Z)+----=++)11+====)+1XOOOMMMMOOOOM
+XXX+X+X++X++XX++X+X+++++++++++++++++X++++++++++++++++++++++++++++++    +++++++++-                           ---    ---=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ''''''''
+...................................................................     .......
+H--=-=-==-==--==-=-======   === ====-====  === ======== = ===== =        =====
+C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -OOOOOOOOOOX+1ZXXZ++-= --=+)11=--+)Z)))ZMOMOOOMOOOM
+XXXXXXXXXXX+++++X+XX+XX+X+X++++XX+X+XX+++++++++++++++++++++++++++++-  =+XX+++++-                              - --- ===
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''
+...................................................................    ........
+HHH-H-H----=====-=--=--=-=- ===--=-=--=== =================== ====      --===
+CCC C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  AOOOOOOOOX+=XXXZZ++==-- --+++=--))Z+++)ZAAOMOOOOOM
+XXXXX++XX+X+X++++++++++++++++++++++++++++++++++++++++++XX+++X++++++-   +X+++++=                                 - =----
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''
+...................................................................    .......
+HHH--==--=-=-======================== === === =========--===-=====      -===
+BCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  AOOOOOOOX11ZMOMMA1=--=---=1))++-==)=+=+)1XMOMOOOOM
+XXXXXXXXX+X+++X+X+++++++++++++++XX++++++++++++++X+XXX+XXX+XX+XX++++=   +XX++++     -                             - ----
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''
+...................................................................    ......
+HHH-H----=-===-=-============ ==--==============-=---=---=--=--===      --= =
+CCB C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO- -OOOOOOOZ)MOOOOOMZ+---- -=11)+)=--=-=---))Z11ZAXAA
+XXXXXXXXXXX+XXXXXX+++++++++++++++XXXX+X+X+X+++X+X+X+XXX+++XXX+++++++   ++XX++-   -+=+-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     '''''
+...................................................................     .....
+HHH---H--HH=------===============----=-=-=-===-=-=-=--H===---====       =--==
+CCC   C  CC                                           C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+ +OOOOOOZ+)MOOOOOOX+=- ---+111+)==-----=-==)))+111+
+XXXXXXXXXXXXXXXXXXX+XX++X+++++X++++++XX++++XX+++++X++XX+++++++X+++++   ++X+++    =++++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''      ''''
+...................................................................     ....      ....
+HHHHHH----H-H---HH-=--==-=====-======--====--=====-==--=======-====     =-==
+BCBCCC    C C   CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=OOOOOOM)=-++OOOOOMZ-=-  -+Z111)+===---=---=))=)+))
+XXXXXXXXX+XXX+XXXXXXX+X+X+X++XXXX+X+XXXX++XXXXXXXXXXX+XXXXX+XX++X+++  -+++++      -++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''       ''''
+....................................................................   .....        ..
+HHHH-----=---=--H----=-=-=-==----=-=----==----H-----H=-H---=--==-===    ====
+CCCC            C                             C     C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1MOOOOM11X1+-=+ZMMA)=-----=)1)+)++==------=====++)+
+XXX+XXX+XXX+++XXX+++X++XXXX+XX++XXX+XXXX+XX+X+X+XXX+XXX+XXXXXXXX++++-  =++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '
+....................................................................    .
+--H=---=---===---===-==----=--==---=----=--=-=-=---=---=--------===
+  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+1ZMZXZAMOOM))=+=+---- - -=+=+=+=++)+=-- -==- --=)+
+X+XXX+++++++X+X+++++++X++XX+++++++++XXXX+++++++XX+X+XXX+XXXXXXX++++-          +=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................
+-=---=======-=-=======-==--=========----=======--=-=---=-------==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+---)AZZMOOOOOOMAXZ1=-- - -===-=-------+----- ---- ==
+XXXXXXX+++++X+++++++++X++X++XXX+++++++X+XX+X++X+X+++++XXX+X+XXX+++          +++++-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          '''''
+.................................................................           .....
+------- ====-=====  ==-==-==---=======-=--=-==-=-=====---=-=---==             =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-- 1AOZOOOOOOOOOOOOOA)=  ---==-------------- ------=-
+++++++X+++XXX+++++++++X+++X+++++++++++X+X++++++XXXXXXX+++X+++XX++=      - -=+++++++++=-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''           ''''''''
+.................................................................           .......
+======-===---=========-===-===========-=-======-------===-===--               ===
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1+)MMAAOOOOOOOOOOOOOOOZ1=----=-----===--=------=---==
+++X+++++++++++++++++++++++X+XXXX++++++++X+X+X+XXXXXXXXX+X+X+++++++        ++++X+X+++++++-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''
+..................................................................         ............
+==-== == == === = ===== ==-=----========-=-=-=---------=-=-======           = -=-===  =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+)11OOOOOOOOOOOOOOOOOOOM1=-  -----=== =-----++=-===+
+++X+++X+++++++XXX+X+X+++++++XXXXXX+++XX+X+X+XXXXXXXXXXXXXXXXX+++++-     -++++++++++++++++=-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''
+..................................................................        ..............
+==-===-=======---=-=-=======----H-===--=-=-=------HHH---H-H--====           =======  =
+                                C                 CCC   C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1)XOOOOOOOOOOOOOOOOOOOOOM1+=----=-+=-=-==--=++++1)1)
+XXX++++XXXXXX+++XXXXX+X+XXX+X+X+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXX++-     -+++++XX++++++++++++=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''
+.................................................................       ..................
+---====------===-----=-=---=-=-=------H=H-----H-H-HHHHHHHHHHHHH=          ===--==== = =  =
+                                      C C     C C CBCCCCBBBBBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1Z+MOOOOOOOOOOOOOOOOOOOOOOA1)1+=--====---=====+++)+11
+++++++++++XXX+++++XXX+XXX+++XXXXX+X+++++X+XXXXXXXXXXXXXXXXXXXXX++-     =++++++++X+++++++++++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''
+.................................................................       ...................
+==========---== ==---=---===-----=-=====-=--H-H-H-H--HHHH-H-H--=         == ====-===   =
+                                            C C C C  CCCC C B
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1=+MOOOOOOOOOOOOOOOOOOOOOOMOMAXZ)=---------=-+=++)+++
+++++X+++++X++++++++XX+XXXXXXX+XXX+XXXX+XX+++XXXXXXXXXXXXXXXXX+X++-     +++++X++++++++++++++++ -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''
+.................................................................       ...................
+====- ====-========--=-------=---=----=--===------H-HHH-H-H-H=-          ===-======= =    =
+                                                  C CCC C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-  XOOOOOOOOOOOOOOOOOOOOOOOOOOMMAZ)------====)+)==---
+X+++++++++++++++++X+X+X+XXXXXXX+XXXXX+X+XXX+X+XXXXXXXXXXXXXXXX+++-     =+++++++++++++++++++++++--
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''
+.................................................................       .....................
+-======== ========-=-=-=--H----=-----=-=---=-=------HHHHH-H---==        ======= == = ==   =
+                          C                         CCCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ   -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM1+-----=-+)=)==- =
+X+X++X+++X+X++XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=     -+++X+X++++++++++++++++++==-+-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''
+................................................................       .......................
+H=-==-===-=-==-----=----HHH-HHH-H-H-H-H-H-H-H-H-HH--HHHHHHHH-=          ==-=-======  ========
+C                       CCC CCC C C C C C C C C CC  BCCBCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)  --1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ+---- 11)))+--==
+X+X+XX++++++++X+X+X+X+XXXXXXXXX+XXX+XXXXXXX+XXXXXXXXXXXXXXXX+++=      ++X++++++++++++++++++++++++=+---
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''' '
+...............................................................        .........................
+-=-=--========-=-=-=-=H-----H-H=---=--H-H--=--------H---H---=          =-== == = == = === ===
+                      C     C C       C B           C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)    1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOX)+=-  =+Z)))==+=
+XX++++X+X+++X+++XXXX+XXXXXXXX+X+X+X+XXXXXXX+X+X+XX++XX+XX+X+++       -++++++++++++++++++X++XX++++++=  -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''' '
+.............................................................         .......   .................
+--====-=-===-===----=-------H=-=-=-=----H--=-=-=--==--=--=- =         = =       ========-==-- =
+                            C           C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)     -OOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOMOOAZZ+-  -)11++-++
+X++++++++++++++++++++XXXXXXXX++XX+XX+XXXX+X+++X+++++XXX+++++        -+++++++- -+++X+++++X+++++++++++= --
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          ''''''     '''''''''''''''''''
+...........................................................           .....     ...................
+- ===================--------==--=--=----=-===-== ==---== =           =====     ==-  ===-======
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-        +OOOOOOOMZZOOOOOOOOOOOOOOOOOOOOOOOMMOOAAZ1+- -=)++=)1
+X+XX++X+++X++X+++XXXXXXXXXX+XXX+X+XXX+XX+XXXXX+++-=+++++            -++++++   ++++++++++X+X++XX++++=-  --
+''''''''''''''''''''''''''''''''''''''''''''''''   '''''             '''''     ''''''''''''''''''''
+................................................    ...               ....     ...................
+-=--==H===-==-===----------=---=-=---=--=-----==    ==                          ========-=-==--=
+      C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXOOOOZ+         -1MOOOOOOX)1OOOOOOOOOOOOOOOOOOOOOOOOOMXOMMMXZ)   =+--+)
+X+X++XXXX+X+X++++X+XX+X+XX+XXX++XX+X++++XX+X+X++- -=+=              +++++-   -++++XXXXX+++XX+XX++++++-  -
+''''''''''''''''''''''''''''''''''''''''''''''''    '               ''''      ''''''''''''''''''''''
+................................................                     ..       .....................
+-=-==----=-=-== =-=--=-=--=---==--=-====--=-=-=                                ===-----===--=--====
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXOOOOA+-        -AOOOOOM)=+OOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOM)   -==+)
+X+X+++X+X+++++X+X+XX+++++XX+X+++X+X+X+X++XX+X+++  -++=             =+++-    ++X+X+XXX+XXXXXXXXX++++++== - ==--
+''''''''''''''''''''''''''''''''''''''''''''''''                    '        ''''''''''''''''''''''''
+...............................................                     .        .......................
+-=-===-=-=====-=-=--=====--=-== -=-=-=-==--=-==                               -=-=HHH=---------== =
+                                                                                  CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZMMOOZ+        -=XMOOMZ=-)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+   =--=
+XXX+X+X+X+++X+XXX+++++X+++X+X+++X++++++XXXX+X++=    =-              +=      ++X++XXXXXXXXXXXX+XX+++++==-==+++++
+'''''''''''''''''''''''''''''''''''''''''''''''                     '       '''''''''''''''''''''''''      '''
+...............................................                             ........................        .
+---=-=-=-===-=---=====-===-=-===-======----=-==                              =-==-H---H------=--= =
+                                                                                  C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)ZAOOX+-      -+)ZXMOA+-=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOO1-   =++
+X++XX+X+++++X+++X+++++XX+XXXX+++++++++X++X+X+++     --               -    ++XXXXXXXXXXXXXXXXXXXXX+++++= +++++++=
+'''''''''''''''''''''''''''''''''''''''''''''''                           ''''''''''''''''''''''''''''     ''''
+..............................................                             ..........................      ....
+-==--=-=====-===-=====--=----==== ====-==-=-==                             =-HH-H-HHH-------H----===         =
+                                                                             CC C CCC       C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)1ZOMA)-      -)1++))))XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-  -++
+XXXXXXX+XXX+X+++++X+++X++XX+++X+++++X+++X++++++-    -                    =XXXXXXXXXXXXXXXXXXXXXXXX+++++=+=++++++-
+'''''''''''''''''''''''''''''''''''''''''''''''                           '''''''''''''''''''''''''''''   ''''''
+..............................................                            ............................    ......
+-------=---=-=====-===-==--===-=====-===-=====                            --HHHHHHHHHHHHHHHHHH--H-= =         =
+                                                                            BCCCCCCCCCCCBCCCCC  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ+++XZZ+=-   ---===-++)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=   ))
+XX++X+++++X+++++X+++++++++X+++++++++++++++X++++                         ++XXXXXXXXXXXXXXXXXXXXXXX+++++++++++++X++-
+'''''''''''''''''''''''''''''''''''''''''''''''                         ''''''''''''''''''''''''''''''''  '''''''
+..............................................                          ...............................   .......
+--==-=====-=====-=========H===== =========-==                            =--HHH-HHHHH-HHH---H-H--=   =     = =-=
+                          C                                                 CBC CCBCC BCC   C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+=-)1+++=--- ----+=))MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-  =)
+X+++X+++X+++++++++X+X++++++++++++++++++++++++++-                       +++XXX+XXXXXXXXXXXXXXX+X+X+++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''                        '''''''''''''''''''''''''''''''''' ''''''''
+...............................................                         ............................... . .......
+-===-===-=========-=-===  = = = = ============                          ==---=H---H-HH----H-H=-=-== ==      =====
+                                                                              C   C CC    C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)==)+)+)=+===+=+=))1XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+   -
+++++X+++++++++++++++++++++++++++++++++++++++++++                      ++++++X+XXX+XXXXXXXXXXXXXXX+++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''                       ''''''''''''''''''''''''''''''''''  ''''''''
+...............................................                        ................................    .......
+====-===  ======= ====  === ==    =  ===== ==                           ====-=---=H---H---H-H----=====      =====
+                                                                                  C   C   C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXAZZ1Z1)+1)111111XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX
+X+X+XX++X+X+++++++++++++++++++++++++X+++X++++++++                     ++++++XXXXXXXXXXXXXXXXXXXXXXXXX+++++++++XX+++
+''''''''''''''''''''''''''''''''''''''''''''''''                      '''''''''''''''''''''''''''''''''''''''''''''
+................................................                      ............................................
+-=-=--==-=-=============== == =  ===-===-===                            ====--H---HH--HHH-H-H-HHH-H--==    ===H-==
+                                                                              C   BC  CCC C C CCC C           C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXZ1Z11))+))1)1+)ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=
++++++++++++++++++++++++++++++++++++++++++++++++++                    -++++++++++++++++XXXX++++X+X++++X+++++++XX+X++=
+'''''''''''''''''''''''''''''''''''''''''''''''''                       '''''''''''''''''''''''''''''''''''''''''''
+................................................                        ...........................................
+=== = = =  ==== =====             = = = ==== =                          ==  ====== ===----====-=-====-=     =--=-=
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOAMXX111XZZZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX-
+X+++X+++X++++++++++++++++++++++++++++++++++++++++++-  -            -+++++++++++++XXXXXXXXXXXXXXXXXXXXXX++++++XX+X+++
+''''''''''''''''''''''''''''''''''''''''''''''''''                    '''''''''''''''''''''''''''''''''''''''''''''
+..................................................                      ...........................................
+-===-===-==============  =       = ========= == =                       == = ====---H-HHH-H------------==   =--=-
+                                                                                    C CCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAZX1X1AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=
+XXX+X+++X+XXX+++X+++X++++++++++++++++++++++++++++++++==-          +++++++++++++++++++XX+XXXXXXXX++XXX++++++++XX+X+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''               ' ''''''''''''''''''''''''''''''''''''''''''''''
+....................................................                    ............................................
+---=-===-=---===-===- ===       =  = =  ======= ==                         ==========--=H-HHHHH-==---== === =-H=-==
+                                                                                        C CCCCC               C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+
+X+++XXXXXXX+X++++X++X+++++++++++++++++++++X+++X++++++++++ --    ++++++++++++++++X+XXXXXXXXXXXXXXXXXXXX++X+++++XX++++=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''         ' ''''' ''''''''''''''''''''''''''''''''''''''''''''
+.......................................................           ..    ............................................
+-===-------=-====-==-====== ===   = = ====-===- ==== =             =        ====-=--H-HHHHH-HHH-H-HHH-==-== ==H-===
+                                                                                    B BCCCC BCC C BCC         C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA-
+XXX+XXXXXXX+X+X+X+XXX+X+++++++++++++++++++++++++++++++++++++++++++++++++++++++X+X+XXXXXXXXXXXXXXXXXXXXXXXXX+++XXX++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................... . .  .....................................................
+---=-------=-=-=-=---=-====         ===  == ============        =  ==     ====-=-=---HHHHHHHHHHHHHHHHHHHH-- ==---===
+                                                                                     CCBBBCBBBCCBCBCCCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM=
+XXXX++XX++X+++XXXXXXX+XX++++++++++++++X+++X+XXX+X+X+XXX+++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXX+++XXXX+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................................
+----==--==-===-------=--==== ==  =====-===-=---=-=-=--- ====  ====== ==     = ====H--HH-HHHHHHHHHHHHHHHHHH-===--H-=
+                                                                                  C  CC BCBCCCBCCCBCBCCBBC      C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-
+XXX+++XX+++++XXXXXXX+XXX++++++++++++++++++XXX+X+XXXXXXX+XXXXXXX+X+++++++++++++++++X+XXXXXXXXXXXXXXXXXXXXX+XX++X+XXX++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................................
+---===--=====-------=---===== ===== ======---=-=-------=--H----=-======   =  =====-=--HHHHHHHHHHHHHHHHHHH=--==-=---=
+                                                          C                           CCCCCCCCBBBBCBBCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-
+XXX+X++++X+X+XXX+XX+X+X+X+++++++++++++++XXX+XXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXX+++X++++-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................................................
+---=-====-=-=---=--=-=-=-= ========= ===---=-HH-HHH-HH-HHHHHH-H-H=-======== = ====-=-HHH-HH-HHHHHHHHHHHHH-H--===-==
+                                             CC CCC CC CCCCCC C C                    CCC CC CCCCCCBCBCCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ-
+X++XXXXXXXXX++X+XXX+X+XX+++X++++++++X+X++X++XXXXX+XXXXXXXXXXXXXXXXXXXXX+X+++++++++++++X+XXXXXXXXXXXXXXXXXXXXX+X++X+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................................................
+-==---------==-=---=-=--===-======= -=-==-==----H=HHHHHHHHHHHHHH-------=-=== = === ===-=--H-H-HHHHHHHHH-H-HH-=-==-==
+                                                C CCBCCCBCCCCCCC                          C C CCCCCCCCC C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1=
+X+X+X++++++++++++X++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++XXXXXX+X+X+XX+XXXXXX+X++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................................................
+- -=-============-==========  =     = ====  =  = ======== ==-========   =     ===   =====---H--=-=H=--=------=-====
+                                                                                            C     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX+
+++X+X+++++++++X+++XXX+++X+++++++++++++++++++++++++++++++++X++XXX++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXX+XXXXX++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................................................
+==-=-=========-===---===-== ====    =  =  ==== == ========-==---====   ========= == ====---HH-H---HHH-H-H-H=--H--==
+                                                                                           CC C   CCC C C C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1
+++++X++++++++XX+XXXXXXX+XXX+X+X+++++X+++XX++XXXXXXXXXXXXXXXXXXXXXX+XX+++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXX+++++=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................................................
+====-========--=-------=--H=-=-=====-===--==H---H-H-H-------H-H---=--===  ===== === ====--H-HHH-HHHHHHHHH-H-H-H-=
+                          C                 C   C C C       C C                           C CCC CCCCCCCCC C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)
++++++++++++++++X++++++++++X+X+++++++X+++++X++X++X+XXX+XXX+XXX+X+X+XXX++++++XX+++++++++++XXXXXXXXXXXXXXXXXXXXXXXX+++++=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................................................
+===============-==========-=-=======-== ==-==-==-=---=---=---=-=-=---======-- === ======----H-H-HHH-HHHHHHH-HHH-===
+                                                                                            C C BBC CCCCBCC CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++X+XX++X+++++X+++++XXXXXXXXXXXXXXXXXXXXX+X++++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................................................
+= ===========  =   === = === ==      == = =  =======  =  ============== -=--==-=====-=====H-HHH-HHH-HHH--H--H--=-==
+                                                                                          C CCC CCC CCC  C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)
+++++++++++X+++++X+++++++++X+XX+++++++++++++++++++XX++++X++X+++++XXXXXXXXXXXXXXX+X+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................................................
+===== ====-=====-== = === -=--=== ===============--====-==-=====H--HH---------H=-===-=------H-HHHHHHHHH-HHH-HHH--- =
+                                                                C  CC         C             C CCBBBCBCC CCB CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX=
+XXX+X+++X+XXX+X+XXX+XXX+X+X+X+XX+++++++++X++++++++++++X+++++XXX+XXXXXXXXXXXXXXXXX+X+X++++XX+XXXXXXXXXXXXXXXXXXXXX++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................................................
+---=-===- ---=-=---=---=-=-=-=--=========-==== =======-== ==---=H-H-H-HHH-HHH-H--=-=-====--=H-HHH-H-HHH-H-HHHHHH-==
+                                                                C C C CCC CCC C             C BCB C BCC C CCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=
+XXXX++XXXXX+XXXXX+X+XX++XXX+X+X++XX+X+X+X+++++++++++++++++++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................................
+H---==-----=-----=-=--==---=-=-==--=-=-=-====== =  == = ====-=-=--H-HHHHHHHHH-HHHHH-----H-H-HHHHHHHHHHHHHHHHHHH--===
+C                                                                 C CCBCCCCCB CCCCC     C C CCBBBBBBBCBBBBBCBBC
+                                                                                                V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+
+XXX+X+++XX+XX+++++X+X+X+XXX+XXX+XXXXXXX+X+++++++X+++++++++X+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................................
+---=-===--=--=====-=-=-=---=---=----H--=-=======-=========-===-=--HHH-H-HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=
+                                    C                             CCC C CCC BCBCBCCCBCBCCCBBBBBBBBBBBBBCBCBCCCBC
+                                                                                                  VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1
+X+X+X+X+X++XX+X+XXXX++X+X+X+++X+X+X+XXX+X+X+++++++X+++++++X++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................................
+-=-=H=-=-==--=-=----==-=-=-===-=-=-=--H=-=-=======-=======-====---H-H-H--HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-===
+    C                                 C                           C C C  CC CCBCBBBBBBBCBBCBBBBBBBBBBCBCBBBCC CCC
+                                                                                              V VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ
++++XX+++XX++++X++X+XXXX+X+X+X+++X+XX+++XX+XX++++++++++++++++++++++XXXX++++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................................
+===--===--====-==-=----=-=-=-===-=--===--=--===== ========= = = ==----====-=-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-- =
+                                                                              CCCCCCCCCCCBBCBBBBBCBBBCCCBCCCBCC C
+                                                                                             V    V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA
+++++++++++X+++++X+++XXX++++++++X++X+X+++X+X+X++++++++++++++++++++++XX+X+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................................
+= ===== ==-=====-===---========-==- -===-=- -================== ===-H=-=-=-=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---==
+                                                                    C         CCCCBBBCBBBBBBBBBBBBBCBBBCBCCCCBBC
+                                                                                    V VVV V VVV VV
+                                                                                              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX
+++++++++++X+X+++++++++++++++++XX++++++++++++++++++++++++++++++++++++X+X+++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................................
+==========-=-====== ==========--============= === === = === ========-=-===---=H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H--=-==
+                                                                              C CBBBBBBBBBBBBBBBBBBBBCBCCCCCB C
+                                                                                  V V V VVVVVVVV
+                                                                                          A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA
+XXX+X+XXX+X+X+X+++X+++++XXX+XXXXXXX+XXX+X+X++X++++++++++XX++X+++++XXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................................
+---=-=---=-=-=-===-=====---=-------=---=-=-==-= ========--==-=====---===----H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=
+                                                                            C CCBCBBBBBBBBBBBBBBBBBBBBBBBBCCCCBCB
+                                                                                    V V VVVVVVVVV V
+                                                                                          AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA
+++++++X+++X++++X++XXXXX+XXXXX++XX+X+XXXX++++++X+X+++++++++++++X+X+XXXX++X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................................
+======-===-====-==-----=-----==--=-=--H-======-=-=============-=-=----==-===-HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==
+                                      C                                      CC CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCC
+                                                                                      VVVVVVVVVVVVVVV V V
+                                                                                        AAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+XXX+++X+X+X++XXX+X+XXXXX++XXX+XXXXX+XXX+XXXX++X+X+++++++X+XX++X++++++++XX+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................................
+---===-=-=-==---=-=-----==---=-----=--H=----==-=-=======-=--==-========--=H=-=H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--==
+                                      C                                   C   C BCBCBBBBBBBBBBBBBBBBBCBCBBBBCCCCC
+                                                                                    VVVVVVVVVVVVVVVVV V   V
+                                                                                      A AAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA
+++++X+++++XXX+++X+X+X+XX++++X+XXX+X+XXXXXX+XX+X+++++++X+X+++X+++++X+X+X+++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................................
+====-=====---===-=-=-=--====-=---=-=------=--=-=======-=-===-=====-=-=- ====-=---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HH--=
+                                                                                 CBBBBBBBBBBBBBBBBBBBBBBBCBBBCC CC
+                                                                                    V VVVVVVVVVVVVVV    V
+                                                                                       AAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+++++X+XX+XXX++X++++++XXXXXXX++X++X+XXXXXX+X+XX++++++X+XXXXX+++++++X++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................................
+====-=--=---==-======-------==-==-=-----H=-=--======-=----- = === -==========---H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H-==
+                                        C                                       C BBBBBBBBBBBBBBBBBBBCBCBBBCCBC  C
+                                                                                      VVVVVVVVVVVV    V
+                                                                                        AAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA
+++++X++X++++X+++++++X+++++X+X+X++++XXXXXXXX+XXX+++++++++X+++++++X++++X++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................................
+====- =-====-== ====-=====-=-=-====--------=---=========-=======-====- == ==-=---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH----==
+                                                                                 CCCBBBBBBBBBBBBBBBBBBBBBCBCBBC
+                                                                                    V VVVVVVVVV V V
+                                                                                        AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA
+X+X+X+XX++++XXXXX+XXXXXX++XXXXXX+XXXXXXXXXXXXXXXX+++X+++++++X+++X+X+X+++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................................
+-=-=-=--====-----=------==------=---H---H-H---H--===-=======-== -=-=-== ======-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=-==
+                                    C   C C   C                                  CBBBBBBBBBBBBBBBBBBBBBCBCBCBCC
+                                                                                    VVVVVVVVVVVVVVV VV
+                                                                                      AAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+
+++++X++++++++++++++++++X+XX+++X+X++XXXX+XXXXX+X+++++X+++++++X+++++X+XXX+X+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................................
+====-==================-=--===-=-==----=-----=-==== -=======-=====-=---=-===-=---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--==
+                                                                                 CBBBBBBBBBBBBBBBBBBBCBCBBBCBCCCC
+                                                                                    VVVVVVVVVVVVVVV
+                                                                                      AAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)
+++X+X++++++XX+++++++X+++++X+X++XX+XXXXXXXXXXXX++++++++++++++++++++++++X+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................................
+==-=-======--=======-=====-=-==--=--H-HHH-H---= ======================-=======--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=
+                                    C BCC C                                     BBBBBBBBBBBBBBBBBBBBBBBCBBBBBCCCCC
+                                                                                    VVVVVVVVVVVVVVV
+                                                                                    A A   AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)=
+++++++++++++++++++++++++X+++++++++X+XXXXX+XXX+X+++++X+++++++++++++++++X+++++++X+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXX+++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................................................
+=============== = ======-=========-=----H=H--=-=====-============ ====-=======-=HHHHHH-=HHHHHHHHHHHHHHHHHHHHH---===
+                                        C C                                     CCBBBB  CBBBBBBBBBBBBBBCBCBCC
+                                                                                  VVV     VVVVVVV V
+                                                                                             AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-
+X+++X+++++++++++++++X++XX+++++X+XXX+XXXXX+XXX++++++++++++++++++++++++++++++++XXXXXXXX++-+XXXXXXXXXXXXXXXXXXXXXXXX++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''
+......................................................................................  ............................
+-===-===============-==--=====-=---=--H--=---==== === ======== == ====  =====---HHHHH=  =-HHHHHHHHHHHHHHHHHHHHH--===
+                                      C                                         CCBBB     BBBBBBBBBBBCBCBCBBCCC
+                                                                                  VV        VVV V   V
+                                                                                            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+-
+++++++++++++++++++++++++++++++X+++++++X+++++++++++++++++++++++++++++++++++++X+XXXXXX+=  ++XXXXXXXXXXXXXXXXXXXXXXX++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''''''''''''
+.....................................................................................    ...........................
+=== ===== ======= === ===== ==-=======-== = ==== = ==  =       =======  ====-=H-HHHH=    =HHHHHHHHHHHHHHHHHHHHH--==
+                                                                              C BBBC      CBBBBBBBBBBBBCBCBCCCC
+                                                                                            V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ++OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+-
+++++++++++++++++++++++++X++++XX+XXXXXXXXX+X+XX+++X+++++++++++++++++++++++++XXXXXXXX+=   =+XXXXXXXXXXXXXXXXXXXXXXXX+++-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     ''''''''''''''''''''''''''''
+....................................................................................     ...........................
+= ============= == =====-== =--=--H-----H=H=--===-=========== =============---HHHH-=     =-HHHHHHHHHHHHHHHHHHHH-H-==
+                                  C     C C                                   BBBC         CBBBBBCBCBBBCBCBCBBC C
+                                                                                            VVVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZ)=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-
+++++++++++++++++++++++X+XXX+XXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++XXXXXXXX+     -+XXXXXXXXXXXXXXXXXXXXXXX++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''
+...................................................................................      ...........................
+= === ========  ======-=---=------HHH-HHHH-HH-----========================--H-HHH-=      =--HHHHHHHHHHHHHHHHHHH--===
+                                  CCC CCCC CC                               C CCB           BBBBBBBCBCCCBBBCCCC
+                                                                                             VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1Z11+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)-
+++++++++++++++++++++++++++X+X+XXXXXXXXXXXXXXXXX+X++XX+++++++++X+++++++++++XXXXXXX+-      ++XXXXXXXXXXXXXXXXXXXXXXXX++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''
+..................................................................................        ..........................
+========= == === == ======-=-=--H-HHH----------=-==--====== ==-=== == ====--H-HHH=        =-HHHHHHHHHHHHHHHHHHHH---
+                                C CCC                                       C CCC           BBBBBCBCCBCBBBBCCCBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)111)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-
+++++++++++++++++++++++++X++X+XXXXXXXXXXXXXX+XXX+++++++++++++++++++++++++++XXXXXX+=       =++XXXXXXXXXXXXXXXXXXXXXXX++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         '''''''''''''''''''''''''''
+.................................................................................         ...........................
+======= ==== = === ==== -==-=-H-H-H---H-HH-=---== ========== === ==  =====----H-=         ==HHHHHHHHHHHHHHHHHHHHHH-
+                              C C C   C CC                                    C             CCBCCCBBCCCCBCBCCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZZZX1XMOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-
+++++++++++++++++++++++++++++++X+X+X++XXXX+XX++++X+++++++++++++++++++++++++XXXXX++         ++XXXXXXXXXXXXXXXXXXXXXXX++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         '''''''''''''''''''''''''''
+.................................................................................         ...........................
+= = =    = =   ==    =========-=H=H==----=--====- ======  = === ==========---H-=          ==-HHHHHHHHHHHHHHHHHHHH--==
+                                C C                                          C               BBCBBBBBCCCCCBCCCCCB
+                                                                                                V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ11XXMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-
++++++++++++++++++++++++++X++++XXX+XXXXXXXXXXXX+++++++++++++++++++++++++++++++XX+=        -++XXXXXXXXXXXXX+X+XXXXXX+++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          '''''''''''''''''''''''''''
+................................................................................          ...........................
+=== ===  == == =    = ===-====H--=-------H----=== === = =  === = ==   ==  ===-H=          ==HHHHHHHHHH---=-=H--H--===
+                              C          C                                    C             CCBBBCBBCC      C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZZ1AAMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-
+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++++++++++++X+XX++-      -  ++XXXXXXXXXXXXXXXXXXXXXXXX++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''          ''''''''''''''''''''''''''''
+................................................................................          ...........................
+= ======= ==   ==   = ==--H-HHHHHHHHHHHHHHHHH----=-======= ======== ======-=HH==            HHHHHHHHHHHHHHHHHHHHHHH-=
+                          C CCBBBCCBBCBBBCBCB                               CC              CCBCBBBBCCCCBBBBBBBCBCC
+                                      V                                                           V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1ZZAAOMOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=
+++++++++++++++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++XX+XXXX++      - - ++XXXXXXXXXXXXXXXXXXXXXXXX++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''           '''''''''''''''''''''''''''
+................................................................................           ...........................
+  === ===== =  ==  =====-=---HHHHHHHHHHHHHHH-----------=  ====== ======--=H---=            =-HHHHHHHHHHHHHHHHHHHHHH-=
+                             CCCCCCCCCBCCBCC                              C                  CBBBBBCBBBCBBBCBCBCBCC
+                                                                                                    V   V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZX1XXMMAZOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+
+++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXX+XXXXX+X+X+++++++++++++++XXXXXX++-         -+XXXXXXXXXXXXXXXXXXXXXXX+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''           '''''''''''''''''''''''''''
+................................................................................           ..........................
+= = =========   =   = ====----HHHHHHHHHHHHHHH-H=-----=-=-==== =====  ===--H---=             --HHHHH-HHHHHHHHHHHHHHH==
+                              CCCCBCCCCCBCBCC C                           C                   BCCCB BBBCBBBBBBBCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXXAAMOXAXMOOOOOOOOOOOOOOOOOOOOOOOOOOOM)
+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXX++++++++++++++XX+XXXX+=     -    +++XXXXXXXXXXXXXXXXXXXXX+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''            ''''''''''''''''''''''''''
+................................................................................            ..........................
+==   =  ===  =  =  =  ==----HHHHHHHHHHHHHHHHH------=-=----==== =========--=-H--=            ==HHHHHHHHHHH-HHHHHHH-H==
+                            CCCCCCBCBBCCBCCCC                               C                 CCBBBCBCBCB BCBCCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAMAAZXZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ
+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXX+XXXXX+X+XXX+++++++++++++++XXXXX++          ++XXXXXXXXXXXXXXXXXXXXXX++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''            ''''''''''''''''''''''''''
+................................................................................            ..........................
+== ==  = =====    ======--H-HHHHHHHHHHHHHHHHH--=H-H-H=-=---=  = === ======H-HHH=            =-HHHHHHHHHHHHHHHHHHHHH=
+                          C CCBBBCBCCCBCBCBCC   C C C                     C CCC               BBBBBCBBBCBBBBBCBBBCC
+                                                                                                V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAMMAAZAZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++++++++++XXXXXXX++          -+XXXXXXXXXXXXXXXXXXXXXXX+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''            '''''''''''''''''''''''''''
+................................................................................            ...........................
+=   = == = == ====  = ===-H-HHHHHHHHHHHHHHHHHHH-H-H------==-= ======= ==-------=            =-HHHHHHHHHHHHHHHHHHHH--=
+                          C CCBCBCBCCCCCCCCCCCC C C                                           CCBBBBBCCBBBBBCBBBBB
+                                                                                                V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXAMMOAAXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+X+X+++++++++++X+X+X+XXX++     -     ++XXXXXXXXXXXXXXXXXXXXX++++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''           '''''''''''''''''''''''''''
+.................................................................................           ...........................
+=  =    == ==== ==== ====---H-HHHHHHHHHHHHH-H-H-HHH=H--=H=-== === ====-=-=-=H-H=            = -HHHHHHHHHHHHHHHHHHH-====
+                            C BBBCBCBCBCBCC B C CCC C   C                   C C                CBCBCBCBCBCBCCCBBBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAMMMAAXAMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+++++++++++++++++XXXX+-          ++XXXXXXXXXXXXXXXXXXXXXXX++=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''           '''''''''''''''''''''''''''
+.................................................................................           ...........................
+=         ==        =  ====-H-H-HHH-HHHHH-HHHH--HH------=--====  ==== ======-HH-             =HHHHHHHHHHHHHHHHHHHHHH-==
+                            C B CCC CCCCC CCCC  CC                           CB               CBBCBCBBBCBCBBBCBCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMOOMAOMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXX++++++++++++XXX+XXXXX++=    --  - ++XXXXXXXXXXXXXXXXXXXXXXX+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''           ''''''''''''''''''''''''''''
+.................................................................................           ...........................
+  = =  =    = =  =  ====--H-HHHHHHHHHHHHHHHHH--=--HHHH--H-============---=--H--=             =-HHHHHHHHHHHHHHHHHHHHH-==
+                          C CCBBBCBBBCBBBCCCC     CCCC  C                   B                  CBCBBBBBBBBBBBCBCBCBC
+                                                                                                    V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMMMAAOMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++X+XXXXX++-  -     - ++XXXXXXXXXXXXXXXXXXXXXXX+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''            '''''''''''''''''''''''''''
+.................................................................................            ...........................
+          ===  =    ======H-HHHHHHHHHHHHHHHHH-------H-H--=-==== == =====-=-HH-H==            =--HHHHHHHHHHHHHHHHHHHHH==
+                          C CCBBBCBCBBBBBCCCB       C C                    CC C                 CCBBBBBCBCBBBCBBBCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOMAXOMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+++X+++++X+XXX+X+X++--  --   - ++XXXXXXXXXXXXXXXXXXXXXXX+++
+' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''            '''''''''''''''''''''''''''
+    .............................................................................            ...........................
+      = ==  ==  = =  ===--HHHHHHHHHHH-HHHHH-H--HH--------=-=-===-=====-=---=H=-==            =--HHHHHHHHHHHHHHHHHHH--==
+                          CCCBBBBCBCC BBBCB C  CC                           C                   BCCCBBBBBCBCBBBCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMMMAXZAAOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXX+X+X+++XXX+X+X+++++++++++++++X+X+XX+=          -=++XXXXXXXXXXXXXXXXXXXXX+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''             ''''''''''''''''''''''''''
+. . .............................................................................             ..........................
+  = =   = = =       ====----H-HHHHHHH-H-H----=-=-===---=-=-==== == =======-=-=--              ==H-HHHHH-H-----HHHHHHH==
+                            C CCCCBCB C C                                                       C BBBCB B     BCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMMOAAXAXMOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXX+XXX+++X+++++++++XX++X+XXX+XXXX+=    -      =++XXXXXXXXXXXXXXXXXXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''             ''''''''''''''''''''''''''
+... ... ... .....................................................................             ..........................
+             ==       ====--HHHHHHHHHHHHHH--H----=---===-==== === --==-=---=----              ==--HHHHHHHHHHHHHHHHHHH--
+                            CCCCBBBCBCCCCC  C                                                     CCBBBBBCBBCCBCBCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMOMMXAXMOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++XXXXXXX+XXXXXXX+X+++X+X+++X+++++++++++++++X+XXXXXXXXX++=    -      =++XXXXXXXXXXXXXXXXXXXXXX++
+    ' ''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''             ''''''''''''''''''''''''''
+              ... ...............................................................             ..........................
+                      ====-------=----H--=-===-=-===- ===== = ======-=-----H---=               =--HHHHHHHHH-HHHHHHHHH-=
+                                      C                                    C                      BBBBBCBCC BCCCBBBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXMMMMOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXX+XXX+XXXXX+++++XXX+XXXXXXXXXXX+++-------     +++XXXXXXXXXXXXXXXXXXXXXX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''             ''''''''''''''''''''''''''
+. ...............................................................................              .........................
+= =   =     =  == ======--HHHHHHHHHHHHHHH-H-H---H=--H=-----=====---=-----HH-HHH==              ==-HHHHHHHHHHHHHHHHHHH-H=
+                          CCCCBCBCBCCBCCC C C   C   C                    CC CCC                   CCBBBBBCBBBCBBBCBCC C
+                                                                                                              V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMMOOMMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXX+++++X+++X+XXXXXXXXXX++-   --    - ++XXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''             ''''''''''''''''''''''''''
+.   .............................................................................              .........................
+              =    == ===-HHH-H-H-HHHHH-H-H-------HH-===---=====-===-=--HHHHH-H-=              =--HHHHHHHHHHHHHHHHHHHHH-
+                          BCC C C BCCCB B C       CC                    CCCCB C                   CCBBBBBCBCBBBBBCBCBCC
+                                                                                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAOOOOMAOMOMOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXX+-  ----  - - -+++XXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''              '''''''''''''''''''''''''
+. ...............................................................................              .........................
+    =  = =     =======--HHHHHHHHHHHHHHHHHHHHHHHHHHH----------===------HHHHHHHHH-=               ==HHHHHHHHHHHHHHHHHHHHH-
+                        BBBBBBBCBBBBBCBBBCBCCCCCBCC                   CCCCCCCBC                   CCBCBCBBBBBBBCBCBBBCC
+                                  VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAMMMMOAOMOOMOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+X+XXXXXXXXXXXXXXXXX++-      - - -- +++XXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''              '''''''''''''''''''''''''
+.................................................................................               ........................
+    ==  = ==  = ====-=-=HHHHHHHHHHHHHHHHHHHHH-H-H-H-H---==-=-=------H-H-HHHHHH-=                 =--HHHHHHHHHHHHHHHHHHH-
+                        BCBCBCCCBBBBBBBCBCBCC C C C C               C C CCCCBC                      BCBBBBBBBBBBBBBBBCC
+                                    V                                                                   V         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAMAMOMMMMOMAOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+++X+XXXXXXXXXXXXX+=      -    -  =++XXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                ''''''''''''''''''''''''
+................................................................................                ........................
+   =  =  =  = =  ====---HHHHHHHHHHHHHHH---HHH-H-H-H------=---===-=--H-HHHHHHH--                 ==--HHHHHHHHHHHHHHHHHHHH
+                        CCBCBCBCBCBBBCC   CCC C C C                 C CCBBBBB                       CBBBBBBBBBBCBCBBCBBC
+                            V                                             V                               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOMMOOOOOMMXMOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXX+++ - -  -----    ++XXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                ''''''''''''''''''''''''
+................................................................................                ........................
+==  = =       = ====-=-HHHHHHHH-HHH-HHHHHHH-----H-H--------== ==----H-HHHHHHHH=                  =--HHHHHHHHHHHHHHHHHHHH
+                       CBCBBBCC BCC CCCCBCC     C C                 C CBBBBBBB                      CCBBBCBBBCCCBCBCBCCC
+                                                                          VV                            V           V
+                                                                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMOOOOOOOMMAOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX++XXX+XXXXXXXXXXX+-     --===--   +++XXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                 '''''''''''''''''''''''
+................................................................................                 .......................
+=======  = ==== =====-HHHHHHHHHHHHHHHHHHHHH-H-HHHHHHHHH-H=H-H-==---=HHHHHHHHH--=                  =-HHHHHHHHHHHHHHHHHHHH
+                      BBBBBBBBBBBBBBBBBCCCB B CCCCBCCCC C C C       CCBCBBBBB                       BCCBBBBBBBBBBBBCBBBC
+                         VVVV V V                                         VV                                        V
+                                                                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMAMMOOOOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+XXXXXXXXXXXXXXX+=      =-===--   -++XXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                  '''''''''''''''''''''''
+...............................................................................                  .......................
+-====  =    === ====--HHHHHHHHHHHHHHHHHHHHHHH-HHHHH-H----=----=-H---HHHHHHHHH-                    =-HHHHHHHHHHHHHHHHHHHH
+                      BBBBBBBCBBBBBBBCBCBCCCC CCBCC C           C   BCBBBBBBB                       CCBBBBBBBBBBCCBCBBBB
+                        V       V V                                     V VV                            V   V       V
+                                                                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAAXMMOOOOOOMMOMMOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+XXXXXXXXXXXXXXXXX++       --===-  -  =++XXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                   ''''''''''''''''''''''
+...............................................................................                   ......................
+- ==   ==== ======= HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=H-H--=H---H-HHHHHHHHHHH=                    ==-HHHHHHHHHHHH-HHHHHH
+                    CCBBBCBCBCBBBBBCBCBBBCBCCCCCBCC   C C   C   C CCBBBBBBBBB                        CBBBBBBBBBBB BCBBBC
+                              V V   V                                   VVVV                                V V
+                                                                        AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXAXAOOMOOOOOOOMOMMOOOOOOOOOOOOOOOOOOOOOOO
+XX++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+     -- =====-- -  -++XXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                    ''''''''''''''''''''''
+..............................................................................                    ......................
+--== ===  = = ======HHHHHHHHHHHHHHHHHHHHHHHHH-HHH-----H-------------HHHHHHHH-                       --HHHHHHHHHHHHHHHHHH
+                    CCBBBBBBBCBBBBBBBBBBBCCCB BCC     C             CBBBBBBB                          BCCBBBBBBCCCCCBCBB
+                        V V   V VV                                    VVVVV
+                                                                      A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOMMMMOOOOOOMMOMMMMOOOOOOOOOOOOOOOOOOOOOO
+XX+++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+XXXXXXXXXXXXXXXXXX++  -    ---=-=  -    +++XXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                    ''''''''''''''''''''''
+.............................................................................                     ......................
+--=======     = = =HHHHHHHHHHHHHHHHHHHHHHHHHH-H-H----=-=-=----HHHHHHHHHHHHHH=                      ==-HHHHHHHHHHHHHHH-HH
+                   CBBBBBBBCBBBBBBBBBBBBBCCCC C C             CCCCBCBBBBBBBC                          BCBCBCBCBCBCCCB BC
+                                V VVV                                 VVVVV
+                                                                      AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMOMMMOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX+XXXXXXXXXXXXXX+     -   --=-=-- --=-++XXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                      '''''''''''''''''''''
+............................................................................                       .....................
+H-==    = =  =====HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H---H=-----=HHHHHHHHHHHHH-                        --H-HHHHHHHHHHHHHHHH
+C                 CBBBBBBBBCBCBBBBBBBBBBBBBBBCC C C   C       CBBCCBBBBBBBB                           C BBBBBCCBCCBCBBBB
+                    V         V V   V VVV                             VVVV
+                                                                      AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+      ------=------=+==+XXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                       '''''''''''''''''''''
+............................................................................                        ....................
+-===============HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-HHH-H-H-H-HHHHHHHHHH-                         --H-HHHHHHHHHHHHHHHH
+                CCBBBBBCBBBCBBBBBBBBBBBBBBBBBCCCC C C CCC C C C CCCBBBBBBC                            C BBBBBBBBBCBCBBBB
+                   V VV V       V   V VVV V V                       VVVVV                                 V V
+                                                                      AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMXMMOMOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+=       - -   =-==--+-+==+++XXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                         '''''''''''''''''''''
+..........................................................................                          ....................
+=========== --HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-H=--H-HHHHHHHHHHH=                           =--HHHHHHHHHHHHHHHH
+              CCBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBCBBCC CCB C   C CCBCBBBBBBC                               CBBBBBCCBCBCBCBB
+                   V  V   V V V   V VVVVVVVVV                       V VV
+                                       AA                             A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMAMMMOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+X+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++--        --  ---==+-+===+++XXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                           ''''''''''''''''''''
+.........................................................................                           ....................
+-=-==== ====H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-----HHHHHHHHH=                            =-HHH-HHHHHHH-HHHHHH
+            C BBBBBBBBBCCCBBCCBCBBBBBBBBBBBBBBBBCCCCC C C     BCCCCCBCC                               CCC BBBBCBB BCBBBB
+                V VVV           VVVVVVVVVVV VV
+                                    A  AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMMOMMOMAMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++    -  -    - --===-=-====+=++XXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                             ''''''''''''''''''''
+.......................................................................                             ....................
+-===-=------HHHHHHHHHHH-HHHHH-HHHHHHHHHHHHHHHHHHHHHHHH--------HHHHHH-=                              ==-HH-HHHHHHHHHHHHHH
+            BBBBBBBBBBC CCBCC CCCCBBBBBBBBBBBBBBBCBCBC        CCBCCC                                   CB BCBBBCCCCBCCBB
+                V V               VVVVVVVVVVV V
+                                    A  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOMMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=  -----  -  ---===-+===+==++-=+XXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                               '''''''''''''''''''
+......................................................................                               ...................
+-=-=H-H-HHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHH-==                                -HHHHHHHH-HHHHHHHH
+    C C BCBBBBBBBBBBBBB BBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBCC C CCCBBCC                                    CBCBCBBB CBCCCCBB
+          VVV V V V             VVVVVVVVVVVVVVVVV V
+            A                        AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++==+===--- --= --=-=========++ -++XXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                             '  '''''''''''''''''''
+.....................................................................                                ...................
+HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=                                  =-HHHHHHHHHHH-HHHH
+CCCCC BBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCCCBCCB                                      BCCBBBBCBCC CBBC
+        VVVVV      VV V V V     V  VVVVVVVVVVVV VVV
+          AAA                       A A AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++===-=-=====---=-===++===++++++=--=+XXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                        '         ''''''''''''''''''
+...................................................................                                   ..................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-- =                                   =-HHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBCBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBCCCCBCCCBCCCC                                         CCCCBBBCBCBCBCBB
+  VVVVVVVVVVV       V   V V     V  VVVVVVVVVVVVV
+    A   AAAAA                       AAA AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++X+X++++++++=--===-=-=======-=-  =-+==-======+- =++XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                      ''''''''''''''''''
+...............................................................                                       ..................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-= = -=-==== =                                        =--HHHHHHH-HHH-HH
+BBBBBBBBBBBBBCCCBCCCBBBBBCBCBCBBBBBBBBBBBBBBBBBBB                                                         BCBCBCC CCC CC
+V VVVVVVV V V             V       VVVVVVVVVVVVVV
+    A                                 A AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAAOOOOOOOOOMOMOMOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++   --==+=--- - - = - --===-=-=-==--=++-=-=-=-===--=++XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''                                                    ''''''''''''''''''
+.................................................                                                     ..................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=                                                      =--HHHHHHHHHHHHHH
+BBBBBBBBBBBCCCCCCCCCBCBBBBBBCCBBBBBBBBBBBBBBBBC                                                           CCBBCCCCCBCCBC
+V   V V                           VVV VVVVVVVV
+                                      AAA A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX)ZMMOMOMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++      - -   - ----==--==+-=++++=+==-+++=+=+==++++-++++XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''                            '   '    '         '  ' ''''''''''''''''''
+.................................................                                                     ..................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=                                                       ==-HHHHHHHHHHHHHHH
+BBBBBBBBBBBBBCBCBCBCBBBBBBBBBBBBBBBBBBBBBBBBBC                                                           CCCCCCBBBCBBCCC
+  V VVV   V       V V V   V V V VVVVVVVVVVVV
+                                  A AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1XMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=       -=-------=-====+=+===+++=+=+=+=+====++=++++++++XXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''                                '     '         ''''''''''''''''''''''''
+................................................                                                    . ..................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--==                                                     =   H-HHHHHHHHHHHHHH
+BBBCBCBCBBBCBCBCCBBCBBBBBBBBBBBBBBBBBBBBBBB                                                             C BBBBBCBCBCBCBB
+V V               V  VV V V   V V VVVVVVVV
+                                    A AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA11AOOOMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=     --- --- --------==+=+==-+++++=+++===+=+=++++++++++XXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''                         '       '     '         ''''' ''''''''''''''''''
+...............................................                                                     .  .................
+HHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-= =                                                        =--HHHHHHHHHHHHHH
+CCCCC C CCCCCCCCBBBBBBBCBBBBBCBBBBBBBBBBBBC                                                               CCBCBBBCBCCCCC
+                          V   V    VVVVVV                                                                     V
+                                    A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1)XAMOOOOMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=-      ----   - =-=-=-=-===-===++=+++++++=+++=+=+++++++++XXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''                                '  '             ' ' ''''''''''''''''''''
+..............................................                                                          ................
+HHHHHHH-H-HHHHHHHHHHHHHHHHH-HHHHHHH-H---H--=                                                            =-H-HHHHHHH-HHHH
+BCBCCCB C CCCBBCBCBCBBBBBCC CCBBBBB C   C                                                                 C CCBCBCC CCBB
+                    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOX)+AMMMOMOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X+++++= -       - --- - ------=-===-==+++=+-=-===+=-=-====++=-==++XXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''                                                     ''    ''''''''''''''''
+.............................................                                                           ................
+HHHHHHHHHHH-HHHHHHHHHHHHHHHHH-H-HHH---==-==                                                             ==H-H-H-H-HHH-HH
+CCBCCCBCBCC BBCCBBBBBBBCBCBCB C CBC                                                                       C C C C CCC CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZZZMMOMMMOOOMOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++==-      -   =-- =  -=++=+++=++++++++==+=+++++=+++=+++++=+-++XXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''                       ' '     ' ''''      ' '   ' ' '     ''''''''''''''''
+............................................                                                            ................
+H-HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH---= = =                                                               --HHHHHHH-HH-H
+C CCCCC CBBCBBBBBBBBBBBCBBBBBBBBBBC                                                                         CBBCBCC CC C
+                V VVVVV       VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAX1XAOMOMMMOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++-      - -   ----- - ==+=+==++++++++=+==++++=+==-+=+=+=+++=++XXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''                                '         ' '               ''''''''''''''''
+............................................                                                             ...............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---==   =                                                              =--HHHHHHHHHHHH
+CCCCCCBCCCBBBCBCBBBBBBBCBBBBBBBBBC                                                                          CCBCCCBCCCCC
+                    V V   V   V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZZZ1MMOOOMOOOOMMMMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++-       --- ----    - --+====-==+=+=+===+=+=+===--+=+=+===+=++XXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''  ''''                                '         '                 ''''''''''''''''
+......................................  ...                                                              ...............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=                                                                    -HHHHHHHHHHHHH
+BCBCBCCBBCBBBBBBBBBBBBBBBBBBBBBBBBC                                                                        CBCBCBCCCBCBC
+                V V V V  VV   V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZ11ZOOMOOMOOOOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++=-     -- -- ----=-  --====+===+++===+=+=+++++++--  -+++==-==-++XXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''' '''                                         '   '                 ''''''''''''''
+......................................  .                                           .                     ..............
+H-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=                                                                    =-HH--HHHHHHHH
+C B BCBCCCBBBCBCBBBBBBBBBBBBBBBBBBCC                                                                        CC  CCBCCCBC
+                    V V V V V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXZ)ZMOOMMMMMMMMOMMMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++=       =-        -     --=-=====-=-==----+-====+-- =-+++++===+++XXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''                                                        ''       ''''''''''''''
+.......................................                                                                   ..............
+--H=H=H-H-HHHHH-HHHHHHHHHHHHHHHHHH--==                                                                     -----HH--H-HH
+  C C C C BCBCC BCBBBCBBBBCCCCCCBC                                                                              CC  C CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ1=MOOOOOOMOMOMOMOOMOOOOOOOOOOOOMOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++--     -+==-- - - - -- -=====-+-=-- =-- --==+=++==+-=-++++==++++++XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''                                                        ''     ' ''''''''''''''
+.......................................                                                                   ..............
+--H---HHHHHHHHHHHHHHHHHHHHHHHHHHHHH--                                                                     ==HHHHHHHHHHH-
+  C   CCCCBBBCBCBBBBBBBBBBBCBCBBBCC                                                                         CCCCCCCCCCC
+                  V V         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX)=MOOOOOOMOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++=-      =+===- --=== --=-===-==+==-====+===+++=+==++===+++++=+++++XXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''          '                                     '       '''   ''''''''''''''''''
+.......................................                                                           .     ................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==                                                                     -HHHHH-HHHHHH
+CCBBBCBBBBBCBBBBBBBBBBBBBBBBBBBBBBC                                                                         CBBBB CCCBCC
+      V       V V   V V V   V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMZZMOOOOOOOOOOOOOOOOMOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++---     =====+---+=----= =-=- -==----=========--=+==-+=++++++++++++XXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''                                                          ' ' ''''''''''''''''''
+........................................                                                                ................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==                                                                      =H-H-HHHHHHHH
+CCBCBBBBBBBCBBBBBBBBBCBCBBBBBBBBBC                                                                          B B BCCCCCBC
+                V       V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA11)ZMOOOOOOOOOOOOOMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++=--      -=-=-+==-=--- -- --=-=---=---=-=-=-+====-=-- +=+++++=++++++XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''                                                               ''''''''''''''''''
+.......................................                                                                .................
+HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH--==                                                                   =  =H-HHHHH-HHHH
+CBBBC BBBBBBBBBBBBBBBBBBBBBBBBBBB                                                                           C CCCCC CCCC
+        V   V V V V     V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOAZ11ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++== -     ====+++===+==----====-=-=-=====-===-====+===+=+=++++++++++++XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''                                                         ' ''' ''''''''''''''''''
+.......................................                                                               ..................
+H-HH--HHHHHHHHHHHHHHHHHHHHHHHHHHHH-==                                                                   = ==HHH-H-HHHHH-
+C CC  BCBBBBBBBBBBBBBBBBBBBBBBBBBC                                                                          CCC C CCCCC
+        V V V V     V V V V V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZZ1ZXOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++--       -=----===++==---- =-=-----=-===---=-==+=+++=+++=++++++++++++XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''                                                       '   ' ' ''''''''''''''''''
+.....................................                                                             .     ................
+H-H-HHH-HHHHHHHHHHHHHHHHHHHHHHHHHH-==                                                                      =-HHHH-HHH-H-
+C C CCB BBBCBCBBBCBBBCBBBBBBBBBBBC                                                                           CBBB CCC C
+          V           V   V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXAXX1XOOOOAOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=        -==- ==+==++++=+==-===--=--= =---=== =-------==+=+=+++=+++++++XXXXXXXX+X+
+''''''''''''''''''''''''''''''''''''''                      '                                     ' '  '' ''''''''''''''
+.....................................                                                                       ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--==                                                                       =-H------=H=
+BBBCCCCCBCBBBCCCBBBCBCBBBBBBBCBBC                                                                             C       C
+                V     V VVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXXZ+MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=-       -+=+-==+=+++++++==-+=+==---=====-=========-=-+=+===+=++++=+++X+XXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''                  ' ''' '                                   ' ' '   ''''''''''''''
+.....................................                     ...                                               ............
+HHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHH= =                                                                       -=HHHHHHHH--
+BCBCBBC BCBCBBBBBBBBBBBBBBBBBBBBBC                                                                            CCCCBCBC
+                V   VVVVV V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXAZ1)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=        -+==-+++++++++++==-+====---+===--+-=-+-=---====+=+=+++=++++++++XXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''                    ''''''                                     ' '   ''''''''''''''
+.....................................                     .....                                             ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=                      = =                                               ==--HHH-H---
+BBBCBCBCCBBBBBBBBCBBBBBBBBBBBBBCC                                                                               CCB C
+                  VVV   VVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXMX11OOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++       ==+=+=+=+++++++++====-=-= -=+=========+==--=+++++=+=++=++++=++++XXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''                  '''''''                             '     '   ' ' ''''''''''''''
+.....................................                   ......                                              ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--==                       =                                               ==--H-HHH---
+BBBBBCCBCCBCBBBBBBBBBBBBBBBBBBBBC                                                                               C CCC
+            V     V V   VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZMMMX)=MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++-        ++++++++++++++++=+=+==---====- =-=-====--==+=====+==-==++++++++XXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''           ' ' '''''''''''                                         ' ''''''''''''''
+.....................................               . .........                                           . ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=                      ====                                               ==-H--H-H---
+BBCBCCBCBBBBBBBBBBBBBBBBBBBBBBBBC                                                                              C  C C
+          V   VVVVVV  V VVVVV V
+                        A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMA1-=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++=-       =++++++++++++++++++++=+==--===+==-=-=====-==+===++==+===++++++++XXXXXXX+XX
+'''''''''''''''''''''''''''''''''''''           ' ''''''''''''' ''                                    ' ' ''''''''''''''
+....................................            . . ...........                                             ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==                   ====  =                                                =--H-HH-=H-
+BCBBBBBCBCBBBBBBBBBBBBBBBBBBBBBBC                                                                               C CC  C
+        V   V   V VVVVVVVVVVVV
+                  A       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMAZ= -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++-        -++++++++++++++++++++====-=-=-===-=-+==--===+===========+++=++++XXXXXXXXXX
+''''''''''''''''''''''''''''''''''''           '''''''''''''''''''                                        ''''''''''''''
+...................................             . ............. .                                         . ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH===             = =   ===     = =                                           ==-H--H-----
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC                                                                               C  C
+V V         V V     V VVVVVVV
+                          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMA1+- ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++ --       ++++++++++++++++++++++=+-======+==-===-++==+======++=+++++=++++XXXXX+++++
+''''''''''''''''''''''''''''''''''''            ''''''''''''''''''''                                ' ' ' ' ''''''''''''
+...................................             ...................                                       . ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH- =                   === ====                                               =--H--=====
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC                                                                                C
+V VV  V   V VVVVV VVVVVVVVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMAMZ+=--+OOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++-          -+++++++++++++++++++++=--= --====--=-=-==+++==-=+==+=+++++++=++X+XXXXXXXX
+'''''''''''''''''''''''''''''''''''             ''''''''''''''''''                                    '  '  ''''''''''''
+...................................             .................                                            ...........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=                        === =   =                                             -=--H-----
+BCBBBCBCBBBBBBBBBBBBBBBBBBBCBC                                                                                    C
+  V         V   V VVVVVVVVV
+                    A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMAZ+-- =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++=           -+++++++++++++++++++++===+==-++=---=-- =-==+====-+=+=+++=+++=+++XXXXXXXXX
+'''''''''''''''''''''''''''''''''''             ''''''''''''''''''''                                  ' '''  '''''''''''
+.................................               ...................                                          ...........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-==                = =========  ==                                               =-H-H-H-H-
+BCBBBBBCBCBBBBBBBBBBBBBBBBBBC                                                                                   C B C C
+  V         VVV V  VVVVVV V
+                    A A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM1+-- -XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++=---         ++++++++++++++++++++++=+===-==+------ --==+====-=-==+++++=+++++XXXXXXXXX
+''''''''''''''''''''''''''''''''''              '''''''''''''''''''''                               ''' '    '''''''''''
+.................................               ..... .............                                           ..........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHH=-=                   ===   =  ===                                                =-------H-
+BCBBBBBCCCBBBBBBBBBBBBBBBBBC                                                                                          C
+                V   VVVVV
+                      A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMZ+=- -AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++-+ -         +++++++++++++++++++++++====-+=+=--=-----+==-===---+++++=+++=+++XXXXXXXX+
+'''''''''''''''''''''''''''''''''''             ''''' '''''''''''''                                 ' ' '    '''''''''''
+.................................               .....  ........                                               ..........
+HHHHHHHHHHHHHHHHHHHHHHHHHHH-H===                 ====                                                         =---HH---=
+BCBBBBBCBBBBBBBBBBBBBBBBBBB C                                                                                     BC
+  V     VVVVV  VVVVVV VVV
+                  A A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOZ)=- -XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++=+== -       +++++++++++++++++++++==+++==+===----=-=-=-- --===-=++++=+=+==+XXXXXXXXXX
+'''''''''''''''''''''''''''''''''''             ''''''''''''''''''' '                               '''       ''''''''''
+.................................               ................  .                                 . .       ..........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHH-= =                  =     = ===                                                 --HHH-H-H-
+BBBBBBBBBBBBBBBBBBBBBBBBBBBC                                                                                    CCB C C
+V         VVV V VVVVV VV
+            A    AAA  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXA11=-  +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++-         -++++++++++++++++++++++=++=-==+---=-+-----=---+=--++++++++====++XXXXXX++
+'''''''''''''''''''''''''''''''''''              '' ''''''''''''''''                                '''       ''''''''''
+................................                    . .........                                               ..........
+HHHHHHHHHHHHHHHHHHHHHHHHHH-=-==                         =  ==                                                 ==--H---==
+BBBBBBBBBBBBBBBBBBBBBBBBCC                                                                                        C
+    VVV V V V V V VVVVV
+                  A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXZ1=- --1MOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++=+=++-           ====+++++++++++++=+== ===-=---=-===-- ----=-=---+++++++==++=++XXXXX+++
+'''''''''''''''''''''''''''''''''                     ' ''''''''' '                                 ''        ''''''''''
+................................                          .....                                               ..........
+HHHHHHHHHHHHHHHHHHHHHHHHHH-=-==                           = =                                                 ==-----===
+BCBBBBBBBCBBBBBBBBBBBBBBBC
+              V VVV  VVV
+                  A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMZZ1)- --=XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++- -=           ==+++=+++++++++++++=+-+==+====+=+=+-=-====+=====+=+++++=++==++XXXXXXXX
+''''''''''''''''''''''''''''''''''                       '''''' ' '                               ' ''  ' '   ''''''''''
+...............................                           .....                                                .........
+HHHHHHHHHHHHHHHHHHHHHHHHH--==                             ==                                                   =----H---
+BBBBBBBBBBBBBBBBBBBBBBBBB                                                                                           C
+VVVVV VVV V VVVVVVVVVVV
+      A   A   A A AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXZ)=   --MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXX++++++=-=-===-           -+++=+++++++=+==++=========+=++=++==-=-+====-==+=+++=+=++++++XXXXXXXX
+'''''''''''''''''''''''''''''''                         ' '''                      '                 '    '   ''''''''''
+.............................                                                                                  .........
+HHHHHHHHHHHHHHHHHHHHHHHHH-=                                                                                     --H-H---
+BBBBBBBBBBBBBBBBBBBBBCBCC                                                                                         C C
+VVVVV V VVVVVVVVVVVVV
+          AAAAA AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOMZ)+=--- -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXX++++=-- ---=-+-           =+++++=+==+=-===-=++++===+=+=+++=+=====+++=+=+=+-+==+++++++++++XXXXXX
+''''''''''''''''''''''''''''                          '                         ' '                     ' ' '  '''''''''
+............................                                                                                    ........
+HHHHHHHHHHHHHHHHHHHHHH--- =                                                                                     ==---HH-
+BBBBBBBBBBBBBBBBBBBBBC                                                                                               CB
+VVVVVVVVVVVVVVVVVVVV
+A A     A AAAAAAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAMMOOOOOOOA1)=--- -1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXX+++++-     =-===--           ++++++====+===+++++==-==+===+++==-=-+===+=++++===++=++++++=+++XXX+XX
+'''''''''''''''''''''''''''                           ' '                         '                     '   ''  ''''''''
+..........................                                                                                      ........
+HHHHHHHHHHHHHHHHHHHHHH-==                                                                                        =H--=H-
+BBBBBBBBBBBBBBBBBBBBBB                                                                                            C   C
+VVVVVVVVVVVVVVVVVVVV
+A A A AAA A AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOMZZAAMMOOOOOMOAX)1=--- =XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXX++=-       ==+-= -           +++=+++=+=+==+++++++++++++++=+++==+=+++++=+++=+++=++++++++++++XXXXXX
+'''''''''''''''''''''''''                               '     '  ''''''   ''' '             ' ' '   ' ' ''''''  ''''''''
+.........................                                         .                                     . .      .......
+HHHHHHHHHHHHHHHHHHHHHH-=                                                                                         =--HH--
+BBBBBBBBBBBBBBBBBBBBBC                                                                                              CC
+VVVVVVVVVVVVVVVVVVV
+A A   A A A     AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOA1)1+ZXMMOMOOOAMAA1+-  -- -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXX+++-         - =-=              =+++=+===+++++++++=+=+++=+++++++=+===+++++++++++++++++++++++++XX+XX
+''''''''''''''''''''''''                                '      ''  '''' '  ''                 '   ' ' '''''''''' '''''''
+........................                                            .                               . . . .   .   ......
+HHHHHHHHHHHHHHHHHHHHH===                                                                                          =-H=H-
+BBBBBBBBBBBBBBBBBBBCC                                                                                               C C
+VVVVVVV VVVVV V V
+A A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOMX)===11XAOOOOOMMXAZ)--   --OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX+X+++          =++==             -=+++++=+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++XX
+'''''''''''''''''''''''                               ' '      '' '''''''   ' '   '   ' ''' ' ' ''' ''' ''''''    ''''''
+.......................                                           . .  ..   .                       . .           ......
+HHHHHHHHHHHHHHHHHHH=-                                                                                             ====--
+BBBBBBBBBBBBBBBBBBC
+VVVVVVV         V
+AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOA1)=++Z)XXMOOOOMAXX1=- -   -XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX++++-           ----              =+++++=+++++++++++++++++++++++++=+++++++++++++++++++++++++=++++++X+
+''''''''''''''''''''''                                ' '       ' ''  ''' ' ' ''' '   ''  ' ' ' ' ' ''''' ''' ' '  '''''
+......................                                                . .                           . .     .      .....
+HHHHHHHHHHHHHHHHHHH===                                                                                               =-=
+BBBBBBBBBBBBBCBBBBC
+VVVVV V V   V
+AAA
 OOOOOOOOOOOOOOOOOOOOOOOMZ+1+)))-ZAMMOOOMMAZ1+-- - --=MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXX++=             =--               +++++++++=+++++++++++++++++++++++++++++=+++++++++++++++++++++++++X
+''''''''''''''''''''''                                ''' ''      ''''''' ''''''''''' ''' '''  '' ''''''' ''' '     ''''
+......................                                  .           . ..  .   ... .   .   .     . . ...   . . .     ....
+HHHHHHHHHHHHHHHHHH--==                                              = =   =                                           =-
+BBBBBBBCCCBCBBBBBC
+VVV
+AA
 OOOOOOOOOOOOOOOOOOOOOOMZ+-==))Z11AA1MMMXMXZ1)=+--   -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXX+++                                =++++=+=+++++++++++++++++++++++++++=+++++++++++++++++++++++++=++++
+'''''''''''''''''''''                                   ''' '   ' ''''''''''''''''''' ''' ' ' ' ''''''''''' ''    ' ''''
+.....................                                              .....       .  .   .           . . . .   .         ..
+HHHHHHHHHHHHHHHHH--=                                                                                                   =
+BBBBBCCCCCCCCBCCC
+V V
 OOOOOOOOOOOOOOOOOOOOOOA)1=----)=ZMMAMXXZAZZ))==---  - AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+XXXXXXXXXXX++=                                 -+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+'''''''''''''''''''''                                     ' '     ''''''' '''''''''''''   ''''''''''''''''''''' '  '' ''
+.....................                                             ....        . . . . .     ..... .  .. .   . .       ..
+HHH----=H-HHHH-----=
+BBB     C CCBC
 OOOOOOOOOOOOOOOOOOOOOOZ++=-  --+ZAMAXZXXZZX)+==-- --- )MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX+++-                                  +++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++=++
+'''''''''''''''''''''                                       '     ''''''''' '   ''''''' '''''''''''''''''''''''''     ''
+.....................                                             ...     .     ... .     ......  ......... . .        .
+HHHHHHH-HHHHHHHH--==                                                                         =       ===
+CCBCCCC BCBBCCCC
 OOOOOOOOOOOOOOOOOOOOOOAZ)===-=))AMOOOOOOOOAZ1++==--   =XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX+++-            =---=---              ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+'''''''''''''''''''''                                   ' ''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................                                           ............. ........  ...........................   ..
+--HHH-HHHHHHHHHHH-==                                              =====  ==   = = =      =  === ===== ===== =   =
+  BBC CCBBBCBCBCC
 OOOOOOOOOOOOOOOOOOOOOOX))=+++)1ZA1OOOMOOOOOXZ)++=--  --+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXX++-            -== =++--             ++++++++++XX++++++++++++++++++++++++++XXXXXX+XXXX+X+++++++++++++
+''''''''''''''''''''                                     '''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................                                     .. . ..........................................................
+==HHHHHHHHHHHHH----=                                      =     ==H-=== =  ==== =  = =  = ====------=---H=-=====  =  ==
+  CCCBCBBBBBBBB                                                   C                                     C
+          VV
 OOOOOOOOOOOOOOOOOOOOOMMZ)=)+)1ZXAAMOOOOOOOMXZ)))=-- - --OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXX+++=              -=-+++=              -++++++XXXXXX+++++++++++++++X+++++++XXXXXXXXX++XXXX+XXXXX+XXXXXX
+''''''''''''''''''''                   ''                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................                                      ..  ..........................................................
+==--HHHHHHHHHHHHH===                                           -HHH--==== = = ======-==== ==---HHHH--==-HH-=-----=------
+    CCBCBCBBBBBCC                                               BCC                            CBCB     CC
+            V
 OOOOOOOOOOOOOOOOOOOOOMX11)+=11ZZXZOOOOOOOOMXZ1Z)+-=-----AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX+++             --==+++-               +++++XXXXXXX+++++++++++++XXXXXX++++XXXXXXXXXXXXXXXXXXXXX+XXXXXX
+''''''''''''''''''''                  ''                 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................                                      ..............................................................
+---HHHHHHHHHHHHHH-=                                       === -HHHHH-====== = = ==--H-H-====--HHH-H---HHHHHHHHHHH=--H-H-
+   CCCCCCCBCBCBCC                                              BBBBB                C C       CCC C   CCBBBBBBBCC   C B
+                                                                V                                         V
 OOOOOOOOOOOOOOOOOOOOOOZZZ11+))ZZMMOOOOOOOOAAMXXZ))+==-==1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX+++-            =-+++++-               +++XXXXXXXXXXX+X+++++++++XXXXXXX+++XXXXXXX+XXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''                 '''                  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................                 ...                  ..............................................................
+HHHHHHHHHHHHHHHHH-==                  =                    =-HHHHHHHH-H=-=========-HHHHH-===----H--=HHHHHHHHHHHHHHHHH-HH
+CBCCBBBBBBBBBBBBC                                            CBBBBBCC C            CCCBB        C   CBBBBBBBBBBBCCCCC CB
+              V                                                VV                                      VVVVVV V
+                                                                A
 OOOOOOOOOOOOOOOOOOOOOOMZ111)Z1ZXOOOOOOOOOOMOMMMXMMA1Z11)1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX++++=          --+++++++= -              ++XXXXXXXXXXXXXXXX++++++++XXXXXXXX+XX+XXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''              ''''''                 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................                ...                    .............................................................
+HHHHHHHHHHHHHHHH-===                  =                    =HHHHHHHHH-H-H---==  ====HHHHHHH-=--=H---HHHHHHHHHHHHHHHHH-HH
+BCBBBBBBBBBBBBBC                                            CCBBBBBCC C C           CCBBCCC     C   CBBBBBBBBBBBBBBBC CB
+            V                                                 V                                       V V    VV V V
 OOOOOOOOOOOOOOOOOOOOOOOAXZX1ZXMOOOOOOOOOOOOOOOOOOMOMAXXZXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX++++-        -+++++++++++++-=== -       -++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''           '''''''' '                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................             ......                   .............................................................
+HHHHHHHHHHHHHHH-H-==                ==                      =-HHHHH---HHHHHHHHH-H-HHHHHHHHHH--====--HHHHHHHHHHHHHHHHHHHH
+BCBCBCBCBBBBBBB C                                             BCBBC   CCBBCCBCC C BCBCCCCBBC        BBBBBBBBBBBBBBBBBCBB
+        V                                                                                               VVVVVVVVVVV
 OOOOOOOOOOOOOOOOOOOOOOMXXZXZMOOOOOOOOOOOOOOOOOOOOOOMMAMAXZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX++++=       -==+++++++++++++++++=-        -+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''           '''''''''''''''             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................            ............. .              ...........................................................
+HHHHHHHHHHHHHHHHH==                 =  = = ==                ==HH-H---H-HHHHHHHHHHHHHHH-HHHHH----=HHHHHHHHHHHHHHHHHHHHHH
+BBBCBBBCBBBCBCBCC                                              CB C   C CCCCCCBCCCCCBCC CCBCC     CCCBBBBBBBBBBBBBBBBBBB
+                                                                                                      V VVV VVV V V   V
+                                                                                                              A
 OOOOOOOOOOOOOOOOOOOOOOOAMXZXOOOOOOOOOOOOOOOOOOOOOMMAXXAXXZXXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX+++=-     =+++++++++++XXX+++++=            ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''         ' ''''''''''''''''              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................            ...............               ..........................................................
+HHHHHHHHHHHHHHHH-- =              = ====---==                 =-HHHHHHHHHHHHHHHHHHHHHHHHH-HHH-H-H-HHHHHHHHHHHHHHHHHHHHHH
+BCBBBBBBBBBBBBCC                                                CBBCBCBCBBCCBCBBBCCBBCCBC CCC C C BCBBBBBBBBBBBBBBBBBBBB
+V   V   VVV V                                                                       V               V V V VVVVV V VVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOAAMOOOOOOOOOOOOOOOOOOOOOOOMAXAA1Z1ZAXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+++++=--   ++++++XXXXXXXXX++++++=-           ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''        '''''''''''''''''''              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................         .................                .........................................................
+HHHHHHHHHHHHHHH--==              =HHH---H--=                   =HHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCBBBBBCBBBBBCC                   CCC   C                       BBBBBBBBBBBCBBBBBBCCBBBBBCB BCCBBBBBBBBBBBBBBBBBBBBBBBBB
+V VVVV  VV                                                       VV V               V V                   V V V V V VVV
+                                                                  A
 OOOOOOOOOOOOOOOOOOOOOOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOMAMAX1Z)))ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+X++++++-  -+++++XXXXXXXXXXXX+++++++-            ++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''      ''''''''''''''''''''''              ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................       ......................              ........................................................
+HHHHHHHHHHHHHHH=-= =          ==-HHHHHH-HHH-===                  =-=H-HHH-H-HHHHHHHH-HHHH-HHH-HHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBCC                  CBBBCC BCC                         C CCC B BCBBBBCC CCCC BCC CBBCCCCCBCCBCCBCBCBBBCBCBB
+VVVVVVV V V                       V                                                                                 V VV
+                                  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAX11)XMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+++++++++++XXXXXXXXXXXXXXXXXXXX+++++++=-           ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''              ''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......................   ..........................                ....................................................
+HHHHHHHHHHHHHHH--==       ==--HHHHHHHHHHHHHH--H-==                   =--H-HHHHHHHHH-HHHHHHH-H-H-HHH-HHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBCB               BBBBBBBCBBBBBC  C                         C CCBCCCCBC CCCCCCC C C CCC BCBCCCBCCCBCBCBCBBBB
+V V VVV V V                     VVV                                                                                    V
+  A A                           AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXXZ1))=ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXX+++++++++XXXXXXXXXXXXXXXXXXXX+XXXXX+++++++=-         -++XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''             ''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................................             ..................................................
+HHHHHHHHHHHHHHH-=========-HHHHHHHHHHHHHHHHHHH=HHH--====                =H---HHHHHHHHHHHHHHHHH---H=--HHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBCB           BBBBBBBBBBBBBBBBBCB CCC                       C   CCBBCCCBBCBCBBBCC   C   CCBCBCCCBCCBCCBCBBBB
+  V VVV VVV                 VVVVVVV                                                                                 V  V
+                            AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMMZ1))++ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++++-          ++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''           ''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................            ................................................
+HHHHHHHHHHHHHHHH-=====HHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=- ==               ===--HHHHHHHHHHHHH-HHH-H-H-HHHH--H-HHHHHHHHHHHH
+BBBBBBBBBBBBBBBB      CCBBBBBBBBBCBCCCBCBCCCCBBCCCC                           CCCBBCBCBBCCC CCC C C BCBC  C BCBCBCBCBBBB
+VVVVVVVVVVVVVVV         VVVVVVV
+A A A A A AAA             AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZZ11)+)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++==          +++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''            '''''''''''''''''''''''''''''''''''''''''''''
+..............................................................              ............................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H--====               ==--HHHHHHHHHHH-H-H-----H-H-HHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB C C                         CCBBBBBCBCC C C     C C CCBCCCBBBBBBCCBC
+VVVVVVVVVVVVVVVV      VVVVVVVVVVVVVVVVV V V VVV
+AAAAAAAAAAAAA A       A AAAAAAA           A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAZX1)+))AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++-          -++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''             ''''''''''''''''''''''''''''''''''''''''''
+.................................................................             ..........................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H--=-====                =-HHHHHHHHHH-HHH-H-H-H-HHHHHHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBC  C                          CBBBBBBBCB CCC C C C CCCCCCBCCBBBCCCCBB
+VVVVVVVVVVVVVV  VVVVVVVVVVVVVVVVVVVVV VVVVVV VV                                       V
+AAAAAAAAAAAAAA        AAAAAAA A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMZXZ1)+=+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++-           ++XXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''              '''''''''''''''''''''''''''''''''''''''
+...................................................................              .......................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=====               =HHHHHHHHHHH--=------H-H-HHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCC                       CCBBBBBCCCC         C C CCCBCCBCBCBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVV VV  V VVV                                 VVV V
+AAAAAAAAAAAAAAA A A A AAAAAA          A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXZ+)=--=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++---           ++XXXXXXXXX+X+XXXXXXXXX+XXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''              ''''''''''''''''''''''''''''''''''''''
+....................................................................              ......................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---- =                =--HHHHH--=-=---------=----H-H-HHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCCCCC                         CCCCC                   C C BCBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVV VVV VVV V V   V   V
+AAAAAAAAAAAAAAAA AAAAAAAAAA         A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZZ1)+=+-+ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+++++=--          ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '             ''''''''''''''''''''''''''''''''''''
+....................................................................  .              ...................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H=--==                 =--HHHHH-H---HHH-H-H---H---HHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCC C                         CCCCC C   CCC B C   C   CCBCBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVV VVV VVV V VVV   V                                                                V
+AAAAAAAAAAAAAAAAAAAAAAAAAAA         A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAM))++==-)XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++---           +++XXXX+XXX+X+XXXXX+XXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''              ''''''''''''''''''''''''''''''''''
+.......................................................................                .................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H----==                   =----=---=-=--H--=------HHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBBBCBBBCBBBCBBBC  C                                       B         CCBCBCBC
+VVVVVVVVVVVVVVVVVVVVVVVVVVV V V V V VVV  VVVV V V
+AAAAAAAAAAAAAAAAAAAAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZZ)1)+=++1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++=-           ++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''               ''''''''''''''''''''''''''''''''
+........................................................................                ................................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--====                 =-=-HH-------H---HHHH--HHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCCC                           CC       C   CCCC  CCBCBBBB
+VVVVVVVVVVVVVVVVVVVVVVVVVVV   VVVVVVV  VV V V V  VV       V
+AAAAAAAAAAAAA AAAAAAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXX1Z) ---)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++-            ++XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''             ''''''''''''''''''''''''''''''
+............................................................................              ..............................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=== =                =--H-H--HH-H-H-H-H-H-HHH-H-HH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCC                         C C  CC C C C B C CCB C CC
+VVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVV V VVVVVVV V VVV     V
+AAAAAAAAAAAAAAAAAAAAAAA A       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAZXZ+=-=-=+MOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++-             ++XXX+XXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''              ''''''''''''''''''''''''''''
+..............................................................................              ............................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-= ==                 =---=--------H-H-----H-H-HH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCCCC C                                   C C     C C CB
+VVVVVVVVVVVVVVVVVVVVVVVV  V V VVVVVVVVV V V V V   V     V V V
+A A A A A A A AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAA1+-=----=1MOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++=               +++++++++XX+XXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                ''''''''''''''''''''''''''
+..............................................................................                ..........................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHH--====                  ==== ===--=------H-H-HHHH
+BBBBBBBBBBBBBBBBBBBBBBBCBBBCBCBBBBBBBBBCBCBBBBBCBBBBBBCCBCBCBCCCC C CCC                                         C C CCBC
+VVVVVVVVVVVVVVVVVVVVVV  V           V V V V       V V
+A A AAAAAAA AAAAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZ11=+=----XOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++=-            +++X+X+XXX+XXXXX+XXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                ''''''''''''''''''''''''
+................................................................................                ........................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-H----====                 ==-=-=---=--H--=H-H-HHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBCBBBCBBBBBBBCBBBBBBBCBBBBBBB CCCCC C                                     C   C C BCBB
+VVVVVVVVVVVVVVVVVVVVV V V     V   V V         V                                                                       V
+AAA AAAAA A AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXAXXZ)=+==--+OOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++             =+X+X+XXXXXXXXXXX+XXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''               '''''''''''''''''''''''
+.................................................................................                .......................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-==-==                 -=-=---HH-HHH--=--HHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBCBBBCBCBBBCBBBBCBBBBBBCBCBBBBBBBCBCCCC C C                              CC CCC     BCBB
+VVVVVVVVVVVVVVVVVVV     V
+AAA A AAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ)+==---=1OOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++=---           ++++XXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''               ''''''''''''''''''''''
+...................................................................................                .....................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH--=-=                  ==----HHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBCBBBBBBBBBBBBBBBBBBBCBCBBBBBCBCC CCC                             CCBCCBCCCCBBBB
+VVVVVVVVVVVVVVVVVVV VVV V V V V                 V         V   V                                                       V
+AAA AAA AAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1Z)+=+---+ZOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++=-            ++XXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '               ''''''''''''''''''''
+...................................................................................                 ....................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=-=                  =----HHHHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBCBCBBBCBCCCCC                            CCBCCBBBBBBBBB
+VVVVVVV VVVVVVVVVVV VVV VVV V   V V   V   V V V V   V     V         V                                             V V VV
+A A AAA AAAAAAA                                                                                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXX11+)++==-1OOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++-            -++XXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''               ''''''''''''''''''
+.......................................................................................               ..................
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---===                 ==----HHHHHHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCBBBBBBBBBBBBBBBCBBBBBBBBBCBCBCBBBBCCBCC                             CCBCBBBBBBBB
+VVVVVVV VVVVVVV VVV V   VVV V V     V   V VVV VVV  VV   V   V     V                                                   VV
+AAAAA    AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOZZ1)+1++=+=+MOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++ -             ++XXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                ''''''''''''''''
+........................................................................................                ................
+HHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-HHHHHHHHHHHHH-H-H-H== ==                ==------HHHHHHHH
+BBBCBCCBBBBBBBBBBBBBBCBCBBB CCCCCBCCBCBBBBBCCBCBBCCCBBBCCCC BCC BCCCCCBCCCBCC C C C                             CCBCCCBB
+  V        VV V
+            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX1=+)+===-=MOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++--              +X+++XXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                '''''''''''''''
+........................................................................................                  ..............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHH-----==                   -===H-HHHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBBBBCBBBBBBBBBBBBBBBBBCBCCBBBBBBCCCC CCCCBC                              C BCBCBBBB
+VVVVV V VVVVVV  VVV V  VV V     V     V       V   V     V V         V                                                 VV
+        A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXX11++-===ZOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++-           ++XXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''             ''''''''''''''
+..........................................................................................                 .............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HH--H-= =                  =-----HHHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBBBBBBBCBBBCBCBCBCBBCCBBBCCBBCBCC C CC  C                            CBCBBBB
+V V V  VVVVVVVVVV V           V         V       V                                                                     V
+A       AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZ))))===)MOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++=-            ++XXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''               ''''''''''''
+...........................................................................................                 ............
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-= = =                  =--H-HHHHHH
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCBCBBBBBCBBBBBCBBBBBBBBBCBCBCCCBCCCBCCCBCCCC C C                           C CBCBBC
+VVVVVVVVVVVVVVVVVVV V V   V                     V     V
+    AAAAAAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1)++--=+-1OOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++-=-           =++XXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                  ''''''''''
+...........................................................................................                   ..........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-HH--== =                     =--HHH--=
+BBBBBBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBCCCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCC C C CC                              CCB
+VVVVVVVVVVVVVVVVV V V V         V         V VVV V          VV
+  A A AAAAA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZZ++=+=-=OOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++==-          -+XXXXX+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''              '''''''''
+...............................................................................................                .........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==== =                   --H--==
+BBBBBBBBBBBBBBBBBBBBBBBBBCBBBBBCBCBCBCCBBBBCBCBCBBBCBBBBBBBBBBBBBBBBBBBBBCBCBBBBBCCCCCB                           C
+VVV VVVVVVVVVVV   V V       V             V       V V V         V V V V
+AAA A AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMX1)++-=-+XOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++==-            ++XX++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''               ''''''''
+................................................................................................                ........
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHH-=====                    =--= ==
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBCBBBCBBBBBCBBBCBCBBBCBBBBBCBCBBBCBCC CCCCBCCCC
+VVV VVVVVVVVVVVVV  VV V V   V V                   V         V
+AA    AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXX1Z)+===1OOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++-           -+X++X+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''               ''''''
+................................................................................................                  ......
+HHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---=== =                   -==-=
+BBBBBBBBBBBBBBBBBBBBBBBBBCC CBBCBCCCBBBCBCBBBBBBBBBCBCBCBBBBBBBCBBBBBBBBBBBCBBBCCCBBCBBC
+VVVVVVVVVVVVVVV V V V V V                             V       V     V
+AAA AAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXX1+=---XOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++--          +++XX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''             '''''
+..................................................................................................  ..              ....
+HHHHHHHHHHHHHHHHHHHHHHHHHH--=-HHHHH-HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---=== ==                   ==--
+BBBBBBBBBBBBBBBBBBBBBCBCBC    BBBCC CCC BBBBBCBBBCBBBBBBBBBBBCBBBBBCBCCCCCCCCBCCBCCCBCCC
+VVVVVVVVVVVVVVVVV V                           V V           V
+AAAAAAAAAAA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1)+=--1OOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXX++++++++++++++=--        ++XX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''           ''''
+........................................................................................................            ....
+HHHHHHHHHHHHHHHHHHHHH-HHH--=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH=H--H---HH-HHH-HH--H--====  ======              =--
+BBBBBBBBBBBBBBBBBBBCC CCC     CCCBBBBCCCBCBBBBBCBCBCCCCCCCCCBCBCC CCC C  C   CC CCC CC  C
+ VVVVVVVVVVVVVVVVV                            V V
+  AAAAAAAAA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1+--)OOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++++++++++-      -++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         ''
+............................................................................................................          ..
+HHHHHHHHHHHHHHHHHHHH-------===-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHH-HHHHH-HHHHHHH----=-=========            ==
+BBBBBBBBBBBBBBBBBBBC            CBBBBCBBBBBCBBBBBBBBBBBBBBBBCCBCBBBCC BCBCCCB CCCCB BCCBBCC
+V VVVVVVVVVVVVVVVV                  V         V
+  AAAAAAAAA AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1=--MO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+X+++++=      +
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       '
+................................................................................................................       .
+HHHHHHHHHHHHHHHHHHHHHHH------=-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-------H--===-=-====
+CCBBBBBBBBBBBCBBBBBBBCC          CBCBBBBBBBBBBBBBBBBBBBCBCBBCCBCBBCCBCCCCCBCCCBBBCCCBCCCBCC       C
+  VVVVVVVVV    VV                         V VVVVV V       V
+    AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)--Z
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................................................
+H-HHHHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--H--HH----H--====
+C CBBBBBBBB C CBBBBBBBBBBBBBBCCCCCBBBBBBBBBCBBBBBBBBBBBCBBBCCCBCBCBBCCCBBBBBBCBCBBCCBCCCBCBCBCB  C  CC    C
+    VVV V       V   V V   V         V       V V       V                       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-=
+X+XXXXX+XXX+XX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++-
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................................................................................
+-=HHHHH=---=H-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHH=-==
+  BCBCC     C   BBBBBBBBBBBBBBBBCCBCBBBBBBBBBBBCCCBBBBBBBBBBBBBBBBBCBBBBBBBCBBBBBBBBBBBBBCBBBBBBCCC BCCCCCBCCCC
+                    VVVVV           VV  V   V V   V V V             V V     V V     V VV      V
+                        A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=
+++XXXX+++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX+++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................................................................................
+==--H-=  ==   =-H-HHHHHHHHHHHHHHH-H-HHHHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHH-=--==
+    C           C CCBCBBBCBCBBBCB C CCBCBBBCC C BCBBBCBBBCBBBBBCBBBCBCCCCCBBBBBCBBBCBBBBBBBCBBBBCCBCC CCCCBCBCB
+                                                    V V     V                   V     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1
+++X+XX+++++++++XXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XX++=
+'''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........  ... ........................................................................................................
+= -=--=    =  =-----H-------HHH-H-==--H--HHHHHH-HHHHHHHHHHH-HHHHHHH-HHH-HHH-HHHHHHHHHHHHHHHHHHHHHHH-H-H-H-H-HHHH-=--==
+                    C       CCC C     C  CBCCCC CCBCCBCCCCB BCBCCCC BBB BCB BCCCBBCCCCBBBCCCBBBCBCB C C C B CCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXX++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........  . ..........................................................................................................
+==---===      =-HHH----HH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH-HHH----=
+                CCC    CC   BBBBCCCCBCBCBCBBBCBCBBBCBBBBBCBCBCBBBCBCCCC CCCCCBCCBBBBBBBCBBBCBBCCBCBCCCBBBCC BBC BCC
+                                          V V V   V                                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX++++++++XXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+--H-H-==  = ==-HHHHH--H=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--=
+  C B          CBCCC  C   BCBBBBBBBCBCBCBBCCBCBCBBBBBBBBBBBBBCBBBBBCCCBCC CBBBBCBCBBBBBBBBBBBBBBBCBBBBCCBCBCCCBBBCBCC
+                             VV               V   V V       V                         V   V       V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++X+++XXXXXXXXXXX+XXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHH-===-===H-HHHHHHH--=--HHHHHHHHH-HHH-H-===-HHH-HHHHHHHHHHHHHHHHH-HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=
+CCBC        C CCBCCCC     BBBBBBBBB CCC C     CCB BCBCBBBBBCBCCCCCB CCC CCCCCCCCBCBCBCBCBBBBBCBCCCBCBBCCBCBCCCBCBCCCCCC
+                          V                           V V                                 V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX++++XXXXXXXXXXXXXX+++XXXXXXXXXXX+XX+X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHH-=  =----HHHHHHH-H-= =-HHH-HHHH--=--=-= =HHHHHH--H-HHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-H-HHHH-HH-
+CCC         CCBCBBC C     CCC BCBC          CCBCCC  C BBBBBBBCBCCCCCC  CBCBCBBBBBCBBCCBCBBBCBBBBCCBBCBB CCCCC B CCBC CC
+                                V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+X++=++++XXXXXXXXX++++++++++++XX+X+++++++XXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....   ................................................................................................................
+H=-=    ==--HHHH---==== =======-H=-= == ==--HHHHHHHHH--=HHHHHHHHHHH-H-H-H-HHH-H-H-HHHHHHHHHHHHHHHHHHHHHHHHH---H-H-HHH-HH
+C           CCCC                C           BBCCCCCCC   CBBBBCCCCCC C C C CCC C C CCBCCCBCCCCCCCBCBCBCBBBBC   C C CCB CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++++++=++++XXXXX+++++++++X+++++++++++++++XXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....   ............................. ..................................................................................
+-===      ==-----===  ====-====== ===   = --H-H--H-----==-HHHHHHHHHHHHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                            C C  C        BBBBBCBCCCBCC C CCCBBCBCBCBBBCCCCCBBBCBCBBBCBCBCBCCCBBCCBCBCCC
+                                                           VVVV V                             V   V
+                                                            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+++=-=++++++X++++++++++XX++++++++++++X+XXXXX+XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....     ........... ..................................................................................................
+---=       = ==-==     ===H-= ==== =  = -=--HHH=--H=HHH---HHHHHHHHHHHHHHHH--HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                          C                 CCC   C CCC   BBBBBBBCBCBCBCBC  CCCCB BCBBBCBCBBBBBCBCBCBCBBCCCCBCBCCCCBBCBC
+                                                            VV  V
 OOOOOOOZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++++- -+++++++X+++++++XXX+++=+XX++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''    '''''''''''''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......    ...................  .........................................................................................
+--====      =  =-=  ====---==   --== =====--HHH-H-H-H---H--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                            CCC C C C   C  CBBBBBBBBBCCCCCBCBCBBBBBBBBBCBCBBBBBBBBBBBBBBBCBCBBBBBCBCBBBB
+                                                                  V                 V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++---++++++++X++++++++XXX++++XXX+++++++XXXXXXXXX+XXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....    ............................. ..................................................................................
+==        ======- =    ==---====--H==   ==HHHHHH---=H-H-H===HHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-HHHHHHHHHHHH
+                                  C       CCBBBC    C C C   CCBBBBBCBBC CCCCBBBBBCCCBBBCBBBBCBBCCCBCB CCCCB BCBCBBBCBCBB
+                                                                V             V                                   V V
 OOOOOOA)MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X++-   +++XXX+XX++++++++XXXX+++XXXX+++XXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....      ..........  ..................................................................................................
+ =-=      ==---=H-=   ====----===HHH-= =----HHHHH=--H-H-HHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHH
+                C                CBB        CCBCC   C C BCC  CBBBBBCBCBCCBCCCCBBBBBBBBBBBCCBBCBBBBBCBCCBB CCBCBCCCBBBCBC
+                                  V                             V V                                                 V
 OOOOOOMXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XX++   -++++XXXX++++++++XX++++XXXXXXXXXXX+XXXXX+++XX++XX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......    ..............................................................................................................
+ =--=       ==--H-=    ===--====HHHHH------=--HH-===--==--===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-
+                C               CCBBB         CC              BBBBBBBBBBBCBCCCBCBCBBBBBCBCBCBCBBBCBCBCBCBCBCCCBCBCBBBBB
+                                  VV                            V                                                 V
 OOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++- -=+++XXXXXX+++++++X+++XXXXXXXX++X+++XXXXXXX+XXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.  ...    ..............................................................................................................
+    ==      =--HHH-== =  =-===HHHHHHH-==-===--HHH-H=--H--H-= =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-
+               CBC            CCBBBCC         CCC C   C  C    CCBBBBBBBBBBBCBCBBBCBBBBBBBCBBBBBCBCCCBCCCBCBCCCBCBBBBBCC
+                                VVV                               V   V                     V                     V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++++++++XXXXXXXXX+++++X+X+XXXXXXXXXX++++++XXXXXXX+XXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+'''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.......  ...............................................................................................................
+H-  ==    --HHHHHH-== ==-=-=-HHHHHHH--=   ==-HHHHH-=--H--=====--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHHHHHH-=
+C           CCBBBC           CBBBBBC         CCCBC    C         BBBBBBBCBCBCBBBBBBBCBCBBBBBBBCBBCCBCBCBC CBCBCCCBBBBBC
+                                VV                                                          V                     V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++++X+XXXXXXXXX+++++X+XXXXXXXXX++++++XXXXXXXXX+XX++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................ ...............................................................................
+-----==  =-=H-HHHHHH-=====-=-HHHHHH-H==  ==---HHH---=-H======  ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-
+            C BBBBBB         CBBBCC C         CCC     C          CBBBBBBBBBBBBBCBBBBBBBCBCCCBBBCBCCCCCBCCCCCBCBBBBBBBBC
+                              V                                     V           V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+XXX+++++XXXXXXXXXXX+++XXXXXXXXXXXX++++XXXXX+X++++X++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+---=H--=====--HHHHHHH--===--HHHHHH--H-=   -----=-====-=====     ==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    C         CCBBBBB       CBBBBB  C                             CBBBBBBBBBBCBBBBBBBBBCBBBCBBBBCCBCBBBCBBCBBBBBBBBBBBBC
+                V             V V                                   V  VV V     V V V       V                   VV  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++X+XXX+X+X+X+XXXXXX++X+++XXXXXXXXXX++++++XXXX++++++X++=+++=+++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................. ..... ...  ...........................................................
+==-=---=-=-=-=HHHHH-==-===-HHHHHHHH-=== ==-H-- == ==-==      ==-==HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+              CCBBC        CCCBBBBC        C                      BCBBBBBBBCBBBBBBBBBBBCCCCCBBBBCCBBBBBCCCBBBBBBBBBBBBBC
+                              VV                                      VVV     V     V       V               V   V VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X+++++++XXXXXXXX++XXXXX+XXXXXXX+++++++XXX++++=++XXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................  .......... ...........................................................
+= ==-==  ===--H-HHH-==--H--=H-HHH--=======H--==   ==--H---    ==H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+              C BCC     C   C BBB         C           C         C BCBBBBBBBBBBBBBBBBBBBCBBCCBBBCCCBCCCCCBCBCBBBBBBBBBBBB
+                                                                      VV  V VV  V VVVVV                     V    VVV  V
+                                                                                                                  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++++++++=++++X+XX++++XXXXXXXXXXXXXX++X+++XXXX++++XXXXXXXX++++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........  .............................................................................................................
+-=  ===     ==-=--====------H-H---H-==-===-HH-====--HHH-H-= ==-=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                            C C   C        CB       CCC C       CCBCBBBCBBBBBBBBBBBBBBBBBBBBBBBCBBCCCCCCBCBBBBBBBBBBBBBB
+                                                                        V V   V V VVV V     VVV           VVVVV VVVVVVV
+                                                                                                                A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++-=+++XXXXXXX+X+XXXXXXXXXXX+++XXX+XXXXX+++XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''  '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........   .............................................................................................................
+==  ====    ==--H----=-=--HHHHHHH--===---=-HHHH===H-HHHHHHH--=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                C         CCBCBCC          CBBC   C CCBCCCC     CCCCBCBCBBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBCBBBBBBBBBBBBBBBB
+                                                                        V V   V  VVVVVV V VVV               V VVVVVVVVVV
+                                                                                  A                             A A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X+X+++++++XXXXXX++++X+X+XXXXXX++++XXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+=  =-=-=    ==--H-H- ===-=-=-HHHH-====--HHH-HH-   --HHHHHHHHH----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                C C          CBCC       CCC BC      CCBCCCBBC    CCCBBBBBBBCBBBBBBBBBBBBBCBBBBBBBCBBBCBCBCBBBBBBBBBBBBBB
+                                                                      V         V V VVV V     V           V VVVVVVVVVVV
+                                                                                  A                           A AAA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++XX+XXXXX++++++++XXXX+++++++XXXXX+X+++++XXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................. ......................................................................
+== ==== =  ==--=H----====== =----=  ====HHHH-=-    =----H-HHH-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHH
+                C                       CCCC            C BCC    CCCBCBBBCBCBCBBBBBBBBBBBCBBBBB  CBCCCBBBCBBBBBBBBBBBBBB
+                                                                                VVV V V V V V V           V VVVVVVVVVVV
+                                                                                                                  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+X++++++++++++X+XX+++++++++X+X+++++X+XXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......... ..............................................................................................................
+-=-=         ==-=--==== ====-=-== ==-=H-HHHHHHH====---H-HHHHHHHH-HHHHHH-HHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                      C BBBBBBC       C CCBCCCCB CCBBCC BCBCC BBBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBBBB
+                                        VVVV                                     V VVVV VVVVVVVV      V V V VVVVVVVVVVVV
+                                                                                    A                         A AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+++++++++++++++++++X+X++XX+++++++XXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..... ..................................................................................................................
+--- =   = = = =====   -=-==--== ====--HHHHHHHHH-==H-H-H-HHHHHHHHHHHHHHHHH---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                      BCBBBBBBB   C C B BBBBBBBBBBCCBCBCC   CBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                          VVVVV           VV                      V V VVVVV   VVV   V   V V VVVVVVVVVVVV
+                                          A A                                       A                         A AAAAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++++++++++++++XX+++++XXX+X+XX+++++++XXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+....    ........... ....................................................................................................
+-==       === =--=   =-H-=-=H-=======---HHHHHHH =-HHH-HHHHHHHHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                       C    C           CCBBBBC   BCC CCBBBBBBBBBBBBCCCCCC  BBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                          VVVV           VV VVVVV V             V V V V VV  V   V   V   VVVVVVVVVVVVVVVV
+                                                            A                                                 AAAAA AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++++++++++++++++++++++XX+XXX+++++++++XXX+XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................   ..................................................................................................
+-=    =    ==  ===    =--=H-H==== = ==H--=HHHHH=--HHHHH-HHHHHHHHHHHHH-HHH-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                          C C         C   BBBBC   CCCCC BBBBBBBBBBBBC BCC C BCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                          VVVV              V VVV V             V VVVVV VVV V       V V VVVVVVVVVVVVVVVV
+                                            A                 A                     A A                   A AAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++X+++++=+++++XX++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................    .................................................................................................
+==    ========- =        =--=== = ==--HHHHHHHHH-H-H-HH--HHHHHHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                      CCCBBBBBB C C CC  CCBBBBBBBBBBBCCCC CBCCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                          VVV               VVV  V                  VVVVVVVVVVVV  V  VV V VVVVVVVVVVVVVV
+                                            A                                       A A A   A A             AAAAA A AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++XX+++X+++++++++++++X+++++++++XXXXXXXXXXXXXXX+X++XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................... . ..................................................................................................
+==    =--===-====     = ==-==     = --H-H-HHHHH-H-H=-==-H-HHHHHHHHHH----=-H-H-H-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                      C C BBBCB C C     C CCBBBBBBBC      C B C BCBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBB
+                                                                                  VVVVVVV V  VV     V V    VVVVVVVVVVVVV
+                                                                                    A                       A A A   AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++XXXXXXX+++++++++++++X+++++++++XXX+XXXXXXXXXXXXX+XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.....................   ......... ......................................................................................
+=== ==--H----==  =      ==-===      ---=-HHHHHHHH----=------HHHHHHH--=--H---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+        C                                CBCBBBCC           BBBCCCC     C   CBCCBBBBBBBBBBBBBBBBBBBCBBBCBBBBBBBBBBBBBBBB
+                                            VV                                    V VVVVVVVV  V VV  V   V   V VVVVVVVVVV
+                                                                                      A A A                       A   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++XXXX++++++++++++++++X+X+++++++++++++XXXXXXXXXXX+++XXX+XXXXXXXX+XX+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+. ............... ..... ................................................................................................
+    ==----======        ==-=-= ==    === =--HHH-H-H--===---=-HH-HH--=--=-==-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                            CCC C C          CC CC          CCBCCCBBBBBBBBBBBBBBBBBBBCBCBBBBBBBBBBBBBBBB
+                                                                                    V VVVVVVVVVV            V V VVVVV VV
+                                                                                        A   A                   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++X+++++++++++++++++++++++++++++++++++XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+   ===-====   ===  === =======  ==== =====HHH-H---HHH=----H-HHHHHHH--H-----=HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                                          CCC C   CCC     C BCBBBCC  C      CCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                  V VVVVVVVVVVVVVVV V     V VVVVVVVVVVVV
+                                                                                    A AAA                     AAA A A AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++X+++++XXX+++++++++++++X+XX+X++++XXXXXXXXXXXXXXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+. ......................................................................................................................
+=   ===== = ======-=====--H== = = ======-=H-=-====HHHHHHHHH-HHHHHHHH-=======--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                          C               C       BCBCBBBCB CCBBBCCC          BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                                                  VVVVVVVVVVVVVVV       VV  V VVVVVVV VV
+                                                                                      A A                     A AAA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++XXX+++XXXXX++++++XXX+++XXXXX+++XXXXXXXXXXXXXXXXXXX++++XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.. .....................................................................................................................
+=   =======   ==---===---H-== = =-H-===-H-H-===HHHHHHHHHHHHHHHHHH-====-----=--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                         C        C     C C    CBCBBBBBBBCBBBCBBB             BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                                                    VVVV                          V VVVVVVVVV VVV V   VVVVV VVVVVVVVVVVV
+                                                    A A                               A A                    AA A AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++++++++++++X+X+++XXXXX+++++++XXXXXXX++XXXXXXXXXXXXXXXXXXXXXX+++XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+... ....................................................................................................................
+-     ===== =  ===-=H===-HH--=======--HHHH-==---HHHHHHHHHHHHHHHHH--= =---=----HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                    C    CC           BBCC      CCBBBBBBBBBBBCCBC             CCCCBBBBBBBBBBBCBCBBBBBBBBBBBBBBBBBBBBBBBB
+                                                    VVVVV   V                       VVVVVV  V V  VVVV   VVVVVVVVVVVVVVVV
+                                                      AA                                                    A A AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++X+++++++XXX+X+XXXXXXXXX+++X++XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+-== == =-== ====---=-=--HHH----===-==-H--=H--HHHHHHHHHHHHHHHHHHHHH-------HHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                        CCC           C   C  CBCBCBCBBBBBBBBCCCCCC       BCCBC  CCBBBBBBBBBBBBBBBBBCBCBCBBBBBBBBBBBBBBBB
+                                                    V   V                           V VVVVVVV   V V       VVVVV VVVVVVVV
+                                                                                      A A                     A   AAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++X++++XX++++++++XXXXXXXXX++XX+++X++X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHH--===-====--===== ==-H-HHH---==--===- =-==-HHHHHHHHHHHHHHHHH-HH----HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCC                     C BCC                 CCBCBBCCBBBBBBCCC CC    BBBBBBBBB CBBBBBBBBBBBBBBBBBBBBBBCBBBBBBBBBBBBBBBB
+V                                                                       VVV         V  VVV          V V V VVVVVVVVVVVVVV
+                                                                                                              A   AAA AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+XXXX+++XXXX+X++++XXXXXXXXXX+++++X+++++XXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHH=--H-= =HHHH=-== =-HHH-HHH--=====-=====--H--HHHHHHHHHHHH-H-HHH-=-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBCC   C    CBCC       BBC BCC               C  CBCBCCBCCBCB C BCC   BBBBBBBBBCBCBBBBBBBBBCBBBCBBBCBBBCBBBBBBBBBBBBBBBB
+V                                                                     V V VVV         V V             V   V VVVV VVVVVV
+                                                                                                            A     A AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX++X+XXXX++++X+XXXXXXXXX+X+X+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHH---HH==-=H---====-=H-HHHHHH-=-=-=======----H-HHHHH-HHH-HHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHH
+BBCCC   CC    B         C BCCCCC                C BCBCC CCC CCCCCCBCC BBBBBBBBBCBCBBCCBBBBBBBBBBBCCCBBBBBCBBBBC CCBBBBBB
+V                                                                       VVVVV V             V               VV     VVVV
+                                                                         A AA                                       AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+XXX++X++++XXXXXXXXXXXXX+++X+++++XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+XXXXXXXXXXXXXXXXXXX+++XXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............................................................................................................  .......
+HHHHHHHHHHH=-H-==-====----H-H-H-H--===-  ===---HH---H-HHHH-=H-HHHHHHHHHHHHHHHHHHH=-HH--H---=H-HHHHHHHHHHHHHHHH-  =HHHHH-
+BBCCBCCCBCC  C            C C C C              CC   C CCCC  C CCBBBBBCCCBBBBBBBBC  CC  C    C CBBCCCCCCCCCBBBB    BCBBC
+V   V                                                                     VVV V                             V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX+XXXX+XXX+XXXXX+XXXXX+XXXX++XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXX+++XXXXXXX+XXXXXXXXXXXXXXXXXXX+XXXXXX++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHH-HHH---H-=----=---=HHH-H=HHH--=----= --HHHHHHHHH-HHH--=--HHHHHHHHHHH-HHHHH--= =--H-H--=--H-HHHHHH--HHHHHHH=-HHH--=
+BCCCB CCB   C           CCC C CCC           CCBBBBCCC CCC     CCBBBBBBCBC CCBCC       C C     B BCBCCC  CCBBBBB  CBB
+V                                              VV                                                           V
+                                                A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
+XXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXX+XXXX+XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX+X+++++XXXXXXXXXXXXXXX+XX++XXXXXXXXXX++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................................................................................
+HH-HH-HHHHHHH--HH-=----HHHHHH---H---=-H--=-HHHHHHHHHHHHHH--=--HHHHHHHH-HHHHHHHH=-=====--H-----HHHHHHH=--==--HHHHHHH-=
+BC CB CCBCBBC  CC      CCCCCC   C     C    CCCBBBBBBBCBCC     CCBBBBCC CBCBCBCC         C     BCBCBCC       BBBBBBC
+V                                             VVVVV
+                                              AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXX++++++X+XX++XXXXXXX+X++++++++XXX+++++==+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '
+........................................................................................................  ..........
+HHHHHHHHHHHHH-H-H-HHHHH-H-HHH-----H-H-H-==--HHHHHHHHHHHHHHH---H-HHHH= ===---H-H-=== ==H=--==--HHH-H=- =     =HH-==
+BBBCCCBBBCBBC C C BCBCC C BCC     C C C     CBBBBBBBBBBCBCC   C CBBC        C C       C       CCC C          CC
+        V                                     VVVVVV
+                                              AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZZ1OOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++X+XXXX++++++X+++++XX+++++++=    =+++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       ''' ' ' ''''
+.....................................................................................................       ..      . ..
+HHHHHHHHHHHHHHHHH-HHHHHHH-HHHHH-HHHHHHH-HHHHHHHHHHHHHHHHH-HHHHHHHHHH-  ===-=H---======H=====--====
+BCBCCBBBBBBBBCCCB BBBBCCC CCBCC CCBBBBC CBBBBBBBBBBBBCCCB BCCCBBBBBB        C         C
+      VVV V                               V  VVVVVVV             V
+        A                                     AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ----)OOM++MXXMOOOO
+XXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++X+XXXXXXX+++++X++++++++++++=       -+       ==+=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................................................................
+HHH-HHHHHHHHHHHHHHHHHHH=-=--HHH-H-HHHHH-HHHHHHHHHHHHH--HHHH-H-HHHHHH-===-=--HHH--=====-=   ==  ==
+CBB CBBBBBBCBBBCBCBCBCC     CCC B CCBCC CBBCBBBBBBBBC  CCCC C BBBBBC        CCC
+      V V V                                   VVVVV
+      A A                                       AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAXA1  -)MO- =1))XXOO
+XXXXXXXXXXXXXXXXXXXXXXX++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXX++XXX++++++++++=           -        -=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
+...............................................................................................
+HHHHHHHHHHHHHHHHHHHHH-H==  ---HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-=-=-H-HHHH---==---======
+BCCCBBBBBBBCBCCCBBBBB C       CCBCBBBBCCBBBBBBBBBBBBBCBCBCBCBCBBBCBC     C CBCC
+    VVV VVV         V           V  VV    VVVVVVVVVVV          V
+                                            A  AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXXMMMOAAX1)))+)- -+1=-=AM
+XXXXXXXXXXXXXXXXXXXXXXX++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXX+X+X+++++X+++-     -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................................................
+H-H-HHHHHHHHHHHHHHHHH--== ===-HHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHH=----H-H---HHH=- - ====-==
+C B BBBCBBBCCCCCBCCBB         CBBBBBBCBCBBBBBBBBBBBBBCBBBC  CCBBBCC     C B   CCB
+     VV                                   V V V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1+)MMMMMXZ)1Z1)    -===AO
+XXXXXXXXXXXXXXXXXXXXXXX+X+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXX++XXXXX+++++X++++=                         -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................................................................................
+HHHHHHHHHHH-H---H-HHHHH=-===--HHHHHHHHHHHHHHHHHHHHHHHHH---H---HHH---==HHHHH-==H----==== -==
+BCBCBBBCCCC C   C BBCCC       CBBBBCBBBBBBBBBBBBBBCCCCC   C   BCB     CCBBB   C
+    VV                          V       V VVVV  V
+    A                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)= -ZAMZ1)1ZZZ))++- - --XO
+XXXXXXXXXXX+XX++XXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX+++XXXXXXXXXXXX++X+++X+X+++=                          -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................................................
+HHHHHHH-H-H=--==H-HHH-H--===-HHHHHHHHHHHHHHHHHHHHHHHHHH=H-HHHHH--===--HHHHHHH-H-==-===-=- =
+BBBBBBB C C     C BBC C      CBBBCBCCCCBBBBBBBBBBCBCCCC C CCBCC       BCBBBCC C
+V V VV                        VV        VVVVV V V                       V
+    A                                       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ11==ZAMX))X1XXZ1XMZ==-=-)M
+XXXXXXXXXX++X+X+XXXXX+XXX+++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXX+X+X+X+++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................................................
+HHHHHHH-H-==-=-=HHHH-=---===-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-- = = HHHHHHHHHHHHH--=-=-=- =
+BBBBBBC C       CCBC         CBBCCCBBBBBBBBBBBBBBCBBBBBCBCBBB       CBBBBBBCBBBBB
+V   V                         V       VVVVVVVVV                       V  V    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+)1)=1ZMAZ1--=)X1XAOA++-=+M
+XXXXXXXXXXXXXXXXXXX+++++X+XXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXX++++X+XXXXXXXXXXXXXXX+++++++++                    -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........................................................................................
+HHHHHH-----------HH=====-=H-H-HHH--HHHHHHHHHHHHH-=-HHHHHHHHHH-== =-=HHHHHHHHHHHHHH-=======
+BCCCBC           CC       C C BBC  CCCBBBBBBBBBC   CBBBBBBBBC       BBBCBCCCCCBBCC
+                                          V   V       V V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZZ1+Z1)))+-  --=++MMX1++XO
+XXXXXXXXXXX+XXX+X+XXX+++++++++XXXXXXXXXXXXXXXXX+X+XXXXXXXXX++++++++++XXXXXXXXXXXXXXX+++++++++                          -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................................................................
+H--HHH--H--=H--=-=-H-== ======HHHHH-HHHHHHH-H-H=-=--HHHHHHH==== =====HH---H---HHHH--====
+C  BBC  C   C      C          CCBCC BCBBBBB C C     CBBBBBB          CC   C   CCBC
+                                        V V           V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZ+=))=-))Z=- -=+-+1X1Z)MM
+XXXXXXXXXXXXXXXX++++++++++++++++XXXXXXXXXXX+XXX+X+XXXXXXXXX+++++XXX+XXXXXXXXXXXXXXXXXX++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''
+......................................................................................... ...
+HHHHHHHHHH--H---= =======  =====HHH-HHHHHHH=--H=-=----HHHH-==  =---=---HH-H-HHH-HHH---==
+BCBBBBCCCC  C                   CCB BCBBBBC   C       BCBC             CB C CBC BCC
+   VV                                   V             V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX1)1)++11XZ1))))- -+XMZMO
+XXXXXXXXXXX++XX+++X+++++++++++++++XXXXXXXXX++++++++XXXXXXX++++++XXXXXX++XXXXXXX++XXXXX++++++++-                        =
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................................................................
+HHHHHHHHH--==--===-=   == = =   ==-HHHHHHH-========---HHH-=  ===------==H---HH-==-H---=   == =
+BCCBBBBBC                          CBCBCBC            CCB               C   CC    C
+    VVV
+    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXZZZ1++XZX11+))1+-  -MMOO
+XXXXXXXXXXXXXXX+X+X+X++++++++++++++XXXXXXXX+++X+++++++XXXX++++++++XXX+X+X+++XX+++++XX+++++++++=                       --
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''
+..............................  ................................................  ............
+-H--HHHHHHH-H-H=-=-=-== =   ==    =-HHH-H--===-== ====-HH-= =    =H--=-=-== H-=   =--    ==
+ C  BBBBBCC C C                     CCB C              CC         C         C
+    V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)OOOOOOOOOOOOOMZ)+-=+XXA1++)++==  -XXMO
+XXX+XXXXXXXXXXXXXXX+X+X++++++++++++XXXXXX+X+++X+++++X++XXX++X+++++XXX++++++++XX+= -++++++++++==                        -
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''''''
+................................................................................   ........
+H-H=HHHHHHHHH---H--=-=-=== ==== ===-HH---=-== -= ===-==---==-=   =HH-====== =--=    === =
+C C BBBBBBBCC   C                   CC                            CC
+      VVV
+      AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ1) -=111+)+111===+-1ZAM
+X+XXXXXXXXXXX+XXX+++++X+++++++++++++X+++++++++++++++++++++XXX+++++XXXX++++++++X++++++++++++==---
+''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................... ..............................................  ..............
+-=H-HHHHHHHHH=H--== ==-===    == ===-==========  == ======---= ===--H-=     ==-==       =
+  C BBBBBBBBC C                                                     C
+     VVVVVV
+      AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOMOOOM)=11111+1)AMMZ++Z))1XO
+XXXXXXXXXXXXXXXXXX++++XX++++++++++++++++++++++++++++++++++XXXXX+++++++++++++++X+++++++= -=+=- =--                      -
+''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''' ' ''''''''''
+...........................  ...........................................    ..........
+H-HHHHHHHHHHH-----====--==    = =    ==  ======  =========--H--=======       =-====
+C BCBBBBBBBBB                                               C
+    VVVVVVV
+     AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAM1--=1OOOOOOOOZ+ZOOOOXZZMAMMZ)1ZZ1XM
+XXXXXXXXXXXXXXXXX+++++++++==++++==+++++++++++++++++++++++XXX+XXXX+++++++++==+++++++       ++---++=   --=-
+''''''''''''''''''''''''''   '''    '''''''''''''''''''''''''''''''''''''   ''''''              '
+..........................          ........... ........................     .....
+HHHHHHHHHHHHH----=                   == = ===       ==  =---=----=== =        ===
+CBBBBBBBBBBBC
+  VVVVVVVVV
+    AAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX)----MOOOOOOOMXMOOOOOOMAXAXXZZ1XAMM
+XXXXXXXXXXXXXXXXX+++++X+++++++++++++++++++++++++++++++++++XXXXXXXXX++++++===+++++=-        -====++   =+++==
+''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''   '''''                     '''
+.........................   ....  .......................................    ....                      ..
+HHHHHHHHHHHHHHH--=====-=      =     = == = ===      = = ==----H-H--   =        =
+CCBBBBBBBBBBBCC                                               C C
+  VVVVVVVVVVV
+    AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMAXX1Z)  +1OOOOMA11OOOOOOOOMZAXZZMMXAMM
+XXXXXXXXXXXXXXXXX+XXX++++-++++++++++++++++++++++++++++++++X+++XXX++++++++-=-- =+-           -==-    -++++++=
+'''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''      '                      '''''
+.........................  .............................................                              ....
+HHHHHHHHHHHHHHHH-=---==     = ==  = ======    =  =      = -===--H===                                    =
+CCBCBBBBBBBBBBBC                                                C
+    VVVVVVVVVV
+    AAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAAMMX1ZAZ1+   )XMMZ1+-+OOOOOOOOOAMAXZMMOA11
+XXXXXXXXXXXXXXXXXXXXXX+++=++++++++++++X+X+++++++++++++++++++++X++++++++++----                       =+++++++-       -
+''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''                            ''''''
+........................   .  ............. .............................                            ......
+HHH-HHHHHHHHHHHH----H-=         ====  -=-=   =    =       ====-===                                    = =
+CCC CBBBBBBBBBBC    C
+      VVVVVVVV
+      AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX)XA1))1Z1X1=- -++Z)X))AOOOOOOOOMAMA1ZMMAZ11
++XXXXXXXXXXXXXXXXXX+++++++++++++++++++XX++++++++++++++++++++++++++++++=++=-                         +++++++=
+''''''''''''''''''''''''  ''''''''''''''''  ''''''''''''''''''''''''''  '                           '''''''
+........................  ...   ..........  ..........................  .                            ......
+=---HHHHHHHHHHH----== =            =  --==      ====    = ===== ======                                = =
+    BBBBBBBBBBB
+      VVVVVVVV
+      AAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMXZX111Z))))))--=+-=1OOOOOOOOOOOZAMAZ))Z)=-+)
+++XXXXXXXXXXXXX+++++++++++++++++++++++XX++++++++++++X++++++++==-+++++++++=                      =+++++++++-
+''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''    ''''''''                        '  ''''
+......................... ..... ..........  .................    .... . .                           ....
+==HHHHHHHHHHHHH=== ====   =  =   = ===--=       ====-========     = =                                =
+  CBBBBBBBBBBBC
+    VVVVVVVVVV
+    A AAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXAZXZZXA11-=-++--+)++XOOOOOOMAZZZXZ)=+)1)1)+)
+++XXXXXXXXXXXXXX++++++++++++++++++++++X++++++++++XX+X+++X+X++--++++++++++-                       =+-++=
+''''''''''''''''''''''''' ''''''''''''''''  '''''''''''''''''   '''''''''                           ''
+ .......................  ....... . .....   .................    .... ...
+  -HHHHHHHHHHHH-= ======  =  =        -==       =--=-===-=-=      =
+   CBBBBBBBBBBC
+    VVVVVVVVV
+    A AAA   A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOMOOM1)--==-XAAZZ1OOOOOMM+))ZZ))==++++))XX
++++XXXXXXXXXXXXXX+X+++++++++++++++++++++++=++=-++++++++++=+++-=++++++++=+++  -- =-              -++--
+' ''''''''''''''''''''''''''''''' ''''''''  '   ''''''''  '''   '''''   ''                       ''
+. ....................... .....     .....       ........  ..    ...                               .
+  =HHHHHHHHHHHH--=-=====   =        =====        == ===   =       =
+   CBBBBBBBBBBC
+    VVVVVVV
+        AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOO--MOOXXMOOOOOOMOOOOOOOOOOOMXX)+=1)MOOOOOOOOOM1111111)ZZ11)Z11=1M
+X++XXXXXXXXXXXXXXXXXX+++++++++++++++X++++-  -=+++++++=+-   ==   +++++- -+=+==+++++         ====-++++
+''''''''''''''''''''''''''''''''' '''''''        '''  '         ' '''         ''''              ''''
+........................ ........ .......        ...                          . .               ....
+-==-HHH-HHHHHHHHHHH-- =           ==-= ==         =                             =                ==
+    BBC BBBBBCCCBCC
+    V   VVVV
+         AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXXOMOOOOOOOOOM- 1)+-- 1MMMOAXMOOOOOOOOOOMAMM)+1=XMOOOOOOOOOAXZXZ1ZZ1AZZ)))11ZX
+++++XXX+XXXXXXXXXXXXX+++++++++++++++++X++=  - +-==+++=+             =   ====++++++          -=+-++++-
+'''''''''''''''''''''''  ''''''''''''''''         '''                       ' '''                 ''
+.......................   . .............         ..                          ..
+====HHH=-HHHHHH-HHH--==      = =   ===-=                                      =
+    CCC  CBBBCB CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+)ZMMOOOOOOOO)-=-     )AAOXZ1AMOOOOOOOMXXMA1+1)))1XMOMOOOOOOAAAXZXZZ11))+Z=-=
+XX++XXXXXXXXXXXXXXXXXX+++++++++++++++XX+++      =-+++++-            =     --==+=-              - ------
+''''''''''''''''''''''''''''''''''''''''''         '''
+.......................   ................         ...
+--==HHH--HHHHHHHHHHHH-=    == =    ==--=            =
+    CCC  CBBBBBBCCCCC
+            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ-  )XOOOOOOOOX)Z1   --)OOO)=+1AMAZXXZ+-=1OX)+ZZ1))1X1ZMOAMOOMAAMMAZXZ11ZXM=--
+XX++++++++XXXXXXXXXXXXX+++X++++++++++++++-      =-++++++          -=+               -             -  --
+'''''''''''''''''''''''''''''''''''''''''          '' ''
+.........................................
+--===== ==HHHHHHHHH---- ==-======   ====
+          BBBBBCCCC
+           VVVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)=  )MOOOAOOOOOOOO   --)OOO+=1AXMZ=++---=+XA11MA)==))11X1)MMMAAAMXMAXZXZXMOX)=
+X++++++++++XXXXXXXXXXXX+X+++++++X+++++X++       ++- =++++=+=      ==-                                               +
+'''''''''''''''''''''''''''''''''''''''''       ''    '   '
+........ ................................             .
+-===  =   =-HHHHHHH----=-=======-=====-=
+            BBBCBCC
+            V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1 +AOOOOOOOOOOO1    +)ZZM+)ZMMOO===-==+1AAAMOOAZ1)Z1Z)))XZMMMM)+)1MZMZMMOMX1
+XXXXXXX++++++XXXXXXXX++++X++++++++++X+X++++=    +==-++++++-               --            --                          -
+'''''''''''''''''''''''''''''''''''''''''''         '''''
+..........................................          .....
+H---H--=== ==HHHHHHH-====-===  == ==-=-===           ====
+B   C        CCCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+1OOOOOOOOOOOA-   -=++1+)ZAZAM)=+-=+1XOOAZ11XAMX1ZZ+=1AAOMAXXZ1ZMAAZMMOMZ+
+XXXXXXXXXXXXX++++XXX++++X+++++++++++XXXXXX+++   -=+++XX++++                         ==                -             -
+'''''''''''''''''''''''''''''''''''''''''''''     ''''''''
+.............................................       ......
+HHHHHHHHHH--- ===-H-= ==- = = ===  =H-H-H-==        =--==
+BBBBBBBCCC        C                 C C C
+VVVVVV
+AAA A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1)AOOOOOOOOOO+    -1MMX11ZXOM)=+)ZZXAOMX)+)1ZA)1ZZ))Z1ZX1)ZOOOXAMOOOOOO1+
+XXXXXXXXXXXXX+++++XX++++++XXXXXXXX++XXXXXXXXX+    +++++X++++              -         -                     ---   =-=-=-
+''''''''''''''''''''''''''''''''''''''''''''''     '''''''''
+..............................................     ........
+HHHHHHHHHHHHH=  ==H-======H-H-HHH-==HHHHH----       ===-==
+BBBBBBBBBBBBB     C       B C CBC   CCCCC
+VVVVVVVVVVVV
+AAAAAAAAAAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO=  - -+OOMZXOO1++XX+=--)+X111)+1=1)+)1)==Z11AOMAMOOOOOOOMX1
+XXXXXXXXXXXXXXX+XXXXXXX+XXXXXXXXXXX++XXXXX+XXXX+-=++X+X+++X+-       ==   --                               =   --++++-
+''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''                                                    ''''
+................................................  ..........                                                    ...
+HHHHHHHHHHHHH--=--H----=HHH-HHHHHH-==-HHH-=-H--=   =-=-== -=                                                     =
+BBBBBBBBBBBBB     C     CBB CBBBBB    CCC   C
+VVVVV VVVVVVV                VVVVV
+A A   AAAAAAA                 AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ- -- -MOOOOOZ===)+=+  +1Z1MA11)===--1Z=+11ZMOOOMAMOOOOXZXZ
+XXXXXXXXXXXXXX+XXXXXXXXXXXX++XXXXXXXX++XX+X+XXXX++++XXXXXXXX+        ==-=-                                --=   ++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''                                                   '''
+.............................................................                                                    ..
+HHHHHHHHHHHHH-=-HHH--------==-HHHHH--==-H=-=HHHH= = --HHH-H-                                                      =
+BBBBBBBBBBBBB   CBC           BBBBB     C   BBBB      CBB C
+VVV VVVVVVVV                  VVVVV           V
+      A AAA                   AAAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOM)--=MOOOOOX)++ZXAM)-ZXXMMOAX1+- --+11+=+1MOOOA1XOOOO)-==
+XXXXXXXXXXXXXXXXXXXXX++X+X+++XXXXXXXXXXXXX+XXXXXX+++XXXXXXXX+ -      +++++               -                ---   +++-
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         '''                                        ''
+................................................... .........         ...                                         .
+HHHHHHHHHHHHH-HHHHH--==-=-= =-HHHHHHHHHHH-=-HHHHH=  -HHHHHHH=
+BBBBBBBBBBBBB CCBBB           BBBBBBBCCCC   BBBBB    CBBBBBB
+V   V V VVVVV   VV            VVVVVVV       VVVV      V V V
+      A  AAA                  AAAAA           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZAOOOOOOX11ZOOOOO1XOOOOOOMA- -==+AMX1--+XAMZ))OOMA1---
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXX+X+++XXXXXXX++   +++++-    -+++=  --=++=                     --
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''       ''      '
+................................................................    ....        .
+HHHHHHHHHHHHHHHHHHHH--H-H-HHHHHHHHHHHHHHH-==HHHHHHH=-===-HHHHHH=
+BBBBBCBBBBBBBCBBBBBB  C C BBBBBBBBBBBBBBB   CBBBBBC      BBBBCC
+V     VVVVVVV V VVV         VVVVVVVVVVVV      VVVV       VVV
+         AA     A A           AAAA  A A       A           A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1XAMOOOOOO1+XOOOOOOO+==++1OOOM= -=1A1Z11Z11Z)=+
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXX++=+XXXXX++++XXXX++     -+++++   --+=++=      -++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''' ''''''''      '''''     ' ''        ''
+....................................................... .......  ......         ..
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH==--HHHHHHH=   -HHHH=  =--H-=
+BCBBBBBBBBBBBCBBBBBBBBBCBBBBBBBBBBBBBBBBBB    BBBBBBB     BBBC      B
+    V VVV V     VVVVVVV   VVVVVVVVVVVVVVV     V VVVV      VVV
+                  A A     A AAA AAAAAAAAA        AA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAAOOOOOOOOOOOOOOOOMMOXZ1)AOOOOOZ--)1AXZ)))XZ1Z1)
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXX+=+XXXXX+   =+++++++++--===-  -     ==++=
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''    '''' '''                 ''
+............................................................... .......     ... ...                 .
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--HHHHHHHHHH-===HH-  =-HHHH      ==   ==
+BCBBBBBCBBBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBB  CBBBBBBBBC    CB     BBBC
+  V     V     V V V   V VVV VVVVVVVVVVVVVV    VVVVVVV             VVV
+                              A AAA A A A       A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOMMOOOOOOOZ1X1XAX+)ZOMMXZA
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX++=+++++++++X+++++= -===+  -+++++-          -
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    '''''''''''''            '''
+.......................................................................    .... ..... .
+HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHH--=-HHH=     ==   =-=
+BBC BCBCBBBBBBBBBCBCCCBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCB CCC    BBC
+                                V V VVV V V  VVVVVV                 V
+                                  A               A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAOOOOOOOOMOMXX1+1ZOOOAZX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXX++++++++++++++++++==++X+  =+++++=- -       ===
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''  ''''   '''''
+.........................................................................  ..............   ...   ...
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH===HH-=    ==  = ==  ==    =-    ==
+BBCCBBBCBBBBBBBBBCBCBBBCBCBBBCBCBBBBBBBBBBBBBBBBBBBBCCCBBBBCBBBBC   CC
+          V V                     V V VV    VVVVVV           VVV
+                                              AA              A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1ZMZXZAMOMAM
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXX+XXXXX++++++++++++++++XX+++XXXX+++++++++++         =
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   '''''''''''''''''''''''''''''''
+.........................................................................   ...............................
+HHHHHHHHHHHHHHHHHHHHHHH-HHH-HHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH-=-H--=-HHH-=      = = == ==--   HHH-=======  =
+BCBBBBBBBCBCBCCCCCBCCBC BCC CCC CCCBBBBBBCBBBCBCBCBCBBBBBCC   B    CCC                      BBC
+    V                                   V V         VVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMZZXMOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++X+XXXXXX+++++++XXXXX+++XXXXXXXXXXXXXXX+++X++-=       ==+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''
+............................................................  .............................................
+HHHHHHHHHHHH--H-HHHHHHH-H-HHHHHHHHHHHHHHH-HHH-HHHHHHHHHHHHH=  = -=HHH-HH=     =-HHH-= =-HHHHHHHHHHH-H-===-=
+BCBBBCCCBCBC  C BCBCBBC B CCBCCCBCBBBBCCC BBB CBBCBCCCBBBBB       BBB CC        BCC     CCBBBCCCBBC B
+    V                                                   V         V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1ZMOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++XXXX+XXXXXXXXXXXXXXXXXXXXXXXX++++++X+++++XXX++++    =+=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................................................   ..............................................
+HHHHH-HHH-H---HH-HHHHHHHHHHHH-HHHHHHHHHHHHHHHHH-H-HHHHHHHHH=    =----=HHH-----HHHHHHHHHHHHH-H-=  ===-== ==---=
+BBCCC BCC C   CC CCCBCBCBCCCB BCBCBCBBCCBBBBCCC C BCCCCCBCB           BCC     CCBCBCCBBCCBB B
+                                    V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZXOOOOOOOOOOOOOOOOOOOX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++=++++++++XXXXXXXXXXXXXXXXXXXXX+XXX+++  ++++++XX++++++--+++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''  ''''''''''''''  ''
+............................................................  ....................................  ..............   .
+HHH-HHHHHHH---HHHHH-H------HH-HHHHHHHHHHHHHHHHHHHHHHHHHHHH-=    =   = H-HHH-HHHHHHHHHHHHHHH=-HH==    ==   --= = =
+BCB BBCCCCC   CCCCC C      CC BCBCBBBCBCBCBBBBBCBCBCCCCBCC            C CCC CCCCBCCCBCBBBBC  CB
+V                                   V       V                                           V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++=++++++XXX+XXXXXXXXX+XXXXXXXXXXXXXXXX++++X++XX++++++++++++=
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................................................  .............................................. .........
+HHHHH-H=H-H-H---H-H-H-H-----H-HHHHH-HHH-H-HHHHHHHHHHHHHH--=     ====---=H-----HH-=H-H-HHHHHHHHHHHH= ==-==--== =  ======
+CCCCC C C C C   C C C C     C BCCCC CCC B CCBCBCBCBBCCBC                C     CC  C C BBBBBBBBBBBC
+                                                                                        V V  VV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXX++++XXX+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHH----H----H-HH-HHHH---H--=--HHHHH-H-HHH-HHHHHHHHHHHH==  = ==HHHHH-HHHHHH--HHH---H--HHHHHHHHHH--= =----HHHH--=  =-HH
+CCCCC    C    C CC CCCC   C     BCCCC B CCC CCCCBCBCBCCC        CCCBB CCBCBC  CCC   C  CBBBBBCBCB         CCBC       BB
+                                                                        V               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOO
+++X+XXXX+XXXXXXXXXXXX+XXXXX+X+XXXXX+XXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXXXXXXXX++XXXXXXXXXXX++ =++XXXXXXXXX++++XX+
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''
+...................................................................................................   ..................
+==-=----=-------H----=-----=-=-HH-H=H-HHH-H---HHHHH-HHH--===--H-HHHHHHHHHHH---H-H-H--==-HHHHHHH-H-=   ==----H-HH-=  =HH=
+                C              CC C C CCC C   CCCCC CCC       C CBBCCCCCCCC   C C C     BCCCCCC C           C BB     CB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOO
+++++++++++++X+X+X+X+XX++X++XX+XX++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+X+X+XX++X+X++++++++= =++++++XXXXXX+++XXX
+''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''''''''''''''''''
+. . ...............................................................................................   ..................
+     == ====-=-=-=-=--==-==--=H-==H-H-HHHHH-------HHH-----HHH---HHHHHHHH--H=---=-=-=--==-=-=   ===     == ==H-HHH-===-H-
+                              C   C B CCCCC       CBC     CCC   CCCCBBBC  C                                 C CCC     C
 OOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOO
+==- ++++++XX+XX++X++++++++X+++XXXXXXXXXXXXXXXXX+XXXXXX+XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++- +++++++++++XXXXXXXXX
+      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ''''''''''''''''''''
+      ............................................................................................  ....................
+       ===--=--==-===== ==-===----H-HHHHHHH-H--=H-HHH-=----=-HHHHHHHHHHHHHHHHHHHHHH-H-H-== =   ===  ==    =====---H-HHHH
+                                  C CCCCBCC C   C CCC        CCCBCBBBBBBBCBBBBBBBCC C C                           C CBCC
+                                                                V VVVVVVV   V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++=++++X+++X+X+X+++++++XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX+++++X+XXXXXXXXXXXXXXXXXXXXXXXXX+++++XXX+XXXXXX++++++++++++XXXX
+  '   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      ..................................................................................................................
+        ==-===-=-=-=======H----HHHHHHHHHHHH-H-HHHHHHH=---=====-=HHHHHHHHHHHHHHHHHHHHH-H--=====---=--HH--===  ==== ==HHHH
+                          C    CBCCCCCBCBCC C CCCCCCC           CCCCBBBCBCBBBBBBBBBCB C             BC              CCBC
+                                                                        V VVV  VV
+                                                                            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++X+++X+X++++++++XXXXXXXXXX+XXXXXXX+XXXXXXXXXX+XX++++++++XXXXXXXXXXXXXXXXXXXXXXXX+++++X+XXXXXXXXXXX+++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+. ............................................................................................................  ........
+    = ====-===-=- =   = =-----H-H-H=-------=--H-------=--==== ===----HHHHHHHHHHHHHHHHHHH- ====-=--H-HHHH---=    = = ====
+                              C C C           C                      CBBBBBBBBBBBCBCBCCC          C BBBB
+                                                                          V V  V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X+X+XXX+++++++++++++++XXXXXXXXX+++++++X+++XXXXXXXXX+X+XXX+++++X++X+XXXXXXXXXXXXXXXX+++++++++++XXXXXXXX++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''
+............................................................................................  ..........................
+= ==-=-=H--======= =  ====--H-H-H--=======-===------H-H=-=---== ==-==-=-HHHHHHHHHHHH-H-== =     ==--HHH-H-===     ==  ==
+        C                   C C C                   C C                 CCBBBCCCBBCC C              CCB C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++X+++++++++++++++++X++XX++XXXX+X+++++X++X++XXXXXXX+X++++++++XXXXXXXXXXXXXXXXXXXXXX++++++==+++++X+++XXXXX+++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    ''''''''''''''''''''''''
+............................................................................................      ......................
+= = ==-====    =  =   ==-==--==-H-H=-=====-==-==H-HHHHH=-===  ===-------H-HHHHHHHHH----====         - = --HHH==   = ===
+                                C C             C BBBCB                 C BBBCCBBCB                       BCC
+                                                   V                      VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++++++++++++++++++++++X+++X+++X+XXXXXXX+XX++XXXXXXXXXXX+++++++++XXXXXXXXXXXXXXXXXXX+++++++++++++++++++++X+++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........... ................................................................................. ..........................
+-== = ==    =     = ======-===-===-=-------=--==HHHHHHHHH--=========-HHHHHHHHHHHHHH-H--==        = == = ====-=     ==
+                                                CCCBBCBBC            CBCBCBCBCBCCCB C
+                                                                        V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XX++++++++++++++X+X+++++++X+++XX++XXXXX+X++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX++++++X+++XXXXX+++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................................................................................. . . ..
+-=--=== = = ======-=-=======-===--==H-H--=-==----HHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-H-H-H-==--= =  =-===H-H--====== =
+                                    C C          CCCCCCCBBCCBBBBCCCCBCBBB CCBCC C C C               C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+X+XXXXXXXXXXXX+X++++++XXX+XXXXXXX+X+XXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++X+++XXXXX+++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+H-H-H-H-H=-=H-H-HH-HH-H-=-======--H=-HHH--H=-=--HHHHH-H-HH-=HHHHH---H-H--HHHHHHHHHH-H-HHH---====-===--HHH== ==      == =
+C C C C C   C C CC CC C           C  BCC  C     BCCCC C CC  CCCCC   C C  CBBBBCBBBB C CCB             CCC
+                                                                               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXX+XXXXX+XXXXXXXXX++++++++XXXXXXXXXXXXXXXX+XXXX+++++++++++XXXXXX+++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHH-HHHHH-H-H-H---HHH-H----===-HHHHHHHHHH-H=H-H--=---------==     =-H---HHHHHHHHHHH=HH-- ======   =-HHHH-  == = == ==
+BCBCB CCBCC C C C   BCC C        CCCBBBBBCB C C C                     C   CCBBCCBCBCC CC              CCBC
+                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+X+++++X+X+XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++XXXXXXXXXXXXXXXXXXXXX+++X+X++++++XXXXXXX++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+........................................................................................................................
+HHHHHHHHHHH----=-=====-=-=--H=HHH-H---HHHHHHH-H-HHH-H-H-H----== ====-HHHHHHHH-H---------H===-=-==    -H-----====    =
+BCCCBCBCBCC                 C CCC C   CBBBBCC C CCB C C C            CCCCCCCC C         C             C
+                                        V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX++++++++X++++++XXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXX++X++++XX+XXXX++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''
+...................................................................................................................   ..
+H-HHHHHHH---===== ==-== ===-H-H-HHH-=--HHHH-H---H-HHHHH-H------=== =HHHHHHH-HH--H---H-H-H-H-H-H-==-====--=----= ===   =
+C CCCCBCB                   C C CCC    CCBB C   C BCCCC C           CCBCCCC CC  B   C C C C C B
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+XXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXX+XXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+++++X+++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''
+.................................................................................................................... ...
+HHHHHHH----=H-H-H=-=H-------H-HHHHH-HHHHHHH--=----H-H=H-H--------=-HHHHHH-H-----HHHH----HHHHHHHH-=-== ==-==== = ==
+BCBBBCB     C C C   C       C CCCCC CCCBBBB       C C C C          CBBBCC C     CCBC    CCBCBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+XX++++XXXXXXXXX+XXXXXXXXXXXXXXXXX+++XXXXXXXXXXX++XXXXX+XXXXXXXXX+++++++XXX+XXXXXXXXXXX+XX++++++++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  ' ' ''''
+.............................................................................................................     . ....
+HHHHH-H-H-=--====-----H---=---H-HHH-HHH-H-H-===---H-H-H---==--H--=----H-H-- = ====---=--H-HHH-H--=--=======           =
+CCBCC C C             C       C CCC BCC C C       C C C       C       C C               C BCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+X++X++++++X+X+XXXXXXXXX+XXXXXXXXX+++++++++XXXXXXX+X+XX+XX+XXX+++++X+X+++X++++++XXXXXXXXXXXXXX+X+XXX+++++++++++++++
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''
+..................................................................................................................    .
+HHHHH=H==-=== ==-=-=---HH-H--=---------======   ----H--=-=--=--=---=====-=-===-== = =-----HHH---H--=-=---= =   ===
+CCBCC C                CC C                         C                                     CCC   B
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+XXXXXXX+XXX+++XXXXXXXXXXXXX+XXXXX++++++++++++++XXXXXX+X+X+XXXXXXX++++++XXXXXXXXX++XXXXXXXXXXXXXXXXX+X+++++++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   ''
+...................................................................................................................   ..
+-=--H----=---===H-H---H------=--H--== ========= =---H--=-=-=-------= = ==-H---H-H-==H-HHH-HHHHHHHHH-H=-===== ===  =
+    C           C C   C         C                   C                     B   C C   C CCC CCCBCCBBC C
+                                                                                                V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X+++X+XXXXXXXXXXXXXXXX+XX+++++++++++++X++++++X+XXXX+++XXXXXXXXX++++++XX+X+XX+XX+++XXXXXXXXXXXXXXXXX+X++++++++++++=++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................... ...............................................................................
+====-===-=----H---H-H-H-H-=-H=======  = = -======-=-H--===--HHHHH--======-H=-=H-=--===-HHHH-H---HHH---H=-==== ======
+              C   C C C C   C                       C       CBBBC         C   C        CCCC C   BCC   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++X+X+++++XX+++XX++++++-- -==++XXXX+X+XX+XX+++++XXXXXXX+XXX+XXXXX+X+X++++++++XX++++XXXXX++XXXX+++++++++++=--
+'''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................       .........................................................................
+= ===    =====H=-=====--===--=====        =----=-=--=--=====--H--H-=--H=-----=-=-==== = =--====-H---==H---=====
+              C                                               B  C    C                         C     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++++++++++++++XX++X+X++++++++++++++XX+++++++++XX++XXXXXXXX++XXXXXXXXXXXXXXXX++++++++++++XXXX++X+X+++++++++++++++
+''''''''''' ''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''
+..........  .......................   ...........................................................................   .
+=====         ====  ==--==-=-====         =--==== = ==--==----H---==--HHHHHHHHH-H---= =  =======----==-=-===  ==
+                                                              C       CCCCCCBBC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++==++X+++++++++++++X+XXXX++X+++XXX+X+X+XX++++++++++++++XXXXXXXX+++XXXXXXXXXX+XXX+X+++++++++++++++XX+XX+X+++++++++++++
+' ''  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+       ............ ....................................................................................................
+        -=== = ===   =-=----==-===---=-=-=--==============--H-----===-HHH-HHHHH=---=-==== =    =====--=--=-== ====  =
+                                                            C         CCC CCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++=+++++++XX+X++X+++++++++XX+++++++X+++++++XX++++++++++X+X+++XXX+XX++XXXXXXXXX+X++++++++++++++++++++XX+X+X+XX++++++++++++
+'     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+      ..................................................................................................................
+       ==--=-==-=========--==== = -=======--= ========-=-===---=--==----H-H-H=-==========  =  == ==--=-=-=--== =
+                                                                        C C C
1
 MAMMMMMAAZZZXXZZZ)+=+=1)1))+111ZXZ1))++==----------    - -  -   --  -   ---- ----=)-++)+)))))))+)))+Z)111ZXZX
 MMMAOMMAOMMAMAMAAXZ1ZZXZAXZ1ZZAXXXZZXZ111)+++))++++==---=------ - --  ----- ----=+)))+)+)))++)))))1)Z1ZZZ1XXX
+    -   -
 MAOAMMMAMMMMOMAMMXXZXZXAAXXXXAAAMAAZXZXZXXXZX1111Z1)1))+)++===- -    -  -- -------++--=---===+)++=))11XXXXMMA
+  -         -
 OAAMOMAXAMOMOOAAMXXZXXXXXZXXXXAXAAMXX1X1ZZZZA1ZZ11Z)1)11)))++==--     -- -  ----------- -- -------++11Z1Z1Z1Z
+-   -     - --
 MAOMMXXAXXAAMAMAXZZZX1ZZXZ11ZZXZZ1Z11)+=++++)+++1)1+=++=)=-===---   - --    -- ---- - -   ---  -=-==1+)=Z))++
+  -
 OMMAMAMMOMMMMAOOOAMAAXXZX1Z1111)+=))+=- ----=-=-=----------  ---------- - - ------=------ ---  ---===-=-=-=-=
+-       -     ---
 OOOOMMOOOMOOOMOMMAXZX1Z)1++=+==-=-=---- ----- ----  -   -   ---   ----=-+=+-==+=)))==-------- ----=-----=----
+----  --- --- -
 OOOOOOOOOOOOOOOMOMXX11)+====--=-=---- --  - -----   -             - ===+=++)1)ZZ11Z11)1))+==+-------=---=====
+--=-=---------- -
 OOOOOOOOOOOMOOOOOXAZZ1)==----=========----------------- ---     -  ---+==-==+)Z1Z1ZZZZZ1Z)1+))=+===-- --=-+=+
+=---=---=-= -----
 OMOOOMOOOOOMOMOOMXZZZ11+====))Z1Z1ZZX1X11)11))1)1)111+)+)+)=--    - - -- -- ---++)1111Z1)11111)))=+===+=++)+1
+- --- ----- - --
 MMOOMAMMMAOAMMMOMXX1Z)1)++))1ZAAMAOMMXMAAAMAMZMXAMMAAXMXAMXZ1))=+=--=---- ----  --===-=)1+)))))+)++=)+++)))+)
+  --      -    -                  -
 MAAAAXAXMXAAXXAZX11))+)+++111XMAMAOMMMMMMOMOOMOOOOMAMMMOMOOMMAMXXZ1))++---  --    ------===+==+))=++1)1)1)1+1
+                                  -      - -- ----     - --
 Z1ZZXZ111)1)+=))+====-+=+))111XZZXAAOXMXMAOMMMOMOMOMMXMMMMMOMOMMMXAZAXXZ1==-=--  -------===---=--=)11)XZZ1111
+                                    -     -   - - -        - -
 11Z11ZZ)1))+++)=)=======+=++)1Z11ZXAMXX1XAMMOMMMOMMMMAMMMMOMMOOOOMMXMMAXXZZ)))==---- -- --------=-=-+=+))=)+)
+                                            -   -         -  ----
 11Z)Z)1))))=))1+)+++)++=++)+)+111ZXXMXXZXMMAOMOMOMMOOMMMOOMMMOOOOAAAOAMAMAAZXZZZ1)+-==-------   --------=---=
+                                            - - -  --   --   ----   -
 AXX1Z)1)1)))1)))+))))+++1)))1)Z1ZZXZMXMXMAMMMMOMOMOMMMOOOMMOOMMMMAMMMMMAMAAXMMAZZ))))==----   -  -- --   - --
+                                              - - -   ---  --
 AMMXX1Z11)))))1))=))))1)Z)1111ZXAXAZXXZZAXAMMOMMMMOMMMMMMMMOOOOMAXXAMXXZXXXXXZZZZ1)+)=----- -   -  ---  -----
+                                             -    -        ----
 MMMAAXXZXZZZZ111Z)111)1)1)ZZXZXXXXAZXZXXAXMAMMMMOAOMOOOMOMOMMMOMMXXXXZX1XZZZZ1Z)+==-==--- -       ------- ---
+                                                - - --- - -   -
 Z1XZXZZZZ1Z1Z111Z))+1)ZZ11ZXMMAAMXAXXXXXXZXXAAMAAAMMMMMMOMMOOMOMMXXZXZX111)))=+-=---- - --- - --------==-=+==
+                                                        -  -- -
 )))+)+)=))+)Z)1ZZ1))Z1ZXXZXXMAMAMXXZ1ZZZZ)Z1XZAAAXMAOMOMMMMAMMMAAXZ1Z1Z1+=----=-- --   --- ------+++)+1)Z1Z11
+                                                    - -
 +==-=---=-==++)=++1))111XZXZXZAXAXAZZ)1)Z1Z1XZZZZZZZAXAZAXXXXZZZ11)++=+==--- ----   -  ---- ==)+++))ZZZ1ZZXXX
 ++===-==+=-=+-)++=)+)+)11ZZZZZAXAXX1ZZ1)11XZXZXZXZAZAAMAAAAAAXXZ1)+=+====+=-=-===-=+)+)11)1111MXAXAAAXMAAAMMM
 )++)+++=+=+)+=+++-+=)=)))+1111XZAZZ1111)1111Z1Z111Z1ZZZ1ZZZ1)))==-=-=-=-+=++1)Z1X)11AXAXXZAXAAMMOMMMOMOMOMOMM
+                                                                                                -   - - - -
 1+)+++)+1+11)))+)=-===+++++=)+++))++)=+===++1)1)111)1))+))+++==----=--=-1)1ZZZXXAXMAOOMMMMMXAAOMMMOMOMMOOAMXA
+                                                                                    --        -   - -  --
 1)))1)1111Z11)Z)1))==---=-------==----  --------=-=----- - ---   -- ----++++Z))ZAXXXMMOMMOMMOMMMOMMAAAAXMXAXA
+                                                                                      -  -  -   -
 111)11Z1Z1Z11))+===-------- - -   ------ - -------- -- -  - --=--=-=-===+=+)1ZZZAXXXMMOMMAMMMMMMAXMAAAAMMXMMA
+                                                                                      -
 ))Z)111)1))++=+-- - - ---     - -   --- ----     --     -  -=-=-+=)+)+)++===))))ZZZXAZMAMAAAMMMMAXAAMXAAXXAAX
 ))1))+))+++==-----  -     - -------     ---   - -  - -  -- ==-)+)))))+)===--==--+=)1Z1ZZXZZZAZZ1ZZZZAXAXXZZ1Z
 ++==+-+=-=--=-=---       - ---- --=-- -     -- -- --------+=++-==-=-=-==-=--- - ---+)+))1+))Z)1)Z1XZZXZ1ZZ1))
 ===-===-=-=---  -       -   --------- --  - -----  -- ---++=+=)+--- =----- - -  -------==-=-======)+)++===+-=
 =========--------   - - -- -- - --- --- ---  -      -  -------+=--=-=-- - -     -- -   ------ --- ----- -----
 +===+=+========-   -------- - - ----- - -  -  -            -- --===---==---   -  -  -- ---==-  -  ----------=
 -=+++-=-+==== =--  - ----- --   - -   -  --                 - ----=-==+===------    --- -- --  -- --------==+
 +=)))))=++)=+===--=--------------- -  -                     - --   --- ---- --- - --  -   - -- - ---=-=-==++1
 1)1++++=+++=)====-------- --------    -  - -                      -   -- -  -----      -  -   --=-=-++1)11XXX
 )++=+=+=+-==-===--------------=------  -- -- -         -    -         -  -----=--------    -- --==+)Z1XZAAAXX
 +=------------=-=--- -  --  ----- -----  -- -   -----   -- -- -            --------     --   -  -=)+1)11XXXZX
 ++=---=----- ------   ------==))+++++=+==-==-=--==----- --- ----           -------- ---- -    --- ----=====-+
 ++-- -=-- ----- -  ------=+)11XXAAMAXZZZZ1Z1Z11)11)))=+====--   -         - - -----   - --       -   --------
 ==---   ----=-----------=+1+ZXAAMOOMMOOMMAMXMAXZZ1Z)Z)1))1Z++--             ----------- ----    - --     ---
+                                 --  --
 +=+==-  ----=--=----- +-+111XXMMOMOOOMMMMMOMOAAXXZXZX11+1+)++==--     -        --     - -          -  -    -
+                                - ---     - -
 ZZ11)+=---- --=--- ---=-))Z1ZZAAMAMAAXXAAXXZXZZZ11)+1+)++-+=----- -  -  --       ----  -  ----  ----- -   -
 XXA1Z))====------- -- --=-===+1)11Z111))1111Z11)11++)++=- ---   - - -       --- -     --------- ---  -- - -
 MMOMMAA1AZ11==+-= - - -------=====++=-=--====-==---------     - -   -- -- -   --- ----  ------=--   - --    -
+  -
 MMOMOAMAXMAZZ)1==---   -  - --- -----   - - -  --  --               ---- - -----=---=-=-====+=+--         - -
+  - -
 Z1Z1ZZZZZZAXAA11)==-= -    ---- --- =-- -  ---                     - ------ ===+==+===)+)++++-==+==----------
 +==-+===+++)11)))+=-----  - ----------  --         -      - - -- -----=-=-=-+=)++=+=+-+==-==-==-==+++-+======
 ==--==------==--=-----  - - -- ---------- - -  ---  -   -   -     --=---=---=======--==-==---=+=))111)11Z)Z1+
 +-====--=-=--=------- ------  ----=---- -  - -      -           - - - --  - ------===-====++)+Z111X1XXAAXXAX1
 1))+)++++=+===+==------ ----------- -----        -- ---  -  -- ---- -- - -  - ---===)))))))1ZZAZXXAZXXAXMXAXA
 )++=+==+--===-=-=-- --- ------======- ---- -    - ----    ---  - --   -- -  -  ---=-)++++=)11111Z1ZZZ111XZZZ1
 +==-=====-=-=-=---- --------=-)=+-===---- - -- --- --     --==- ----=------  - -----=-=---=---=--=+-++)++++=+
 -- --- -  --------------- --=-==+++====-- ---               ----  --+++- -------   -              - - - - -
 =-=-=-----+-===-------------==))1)Z1))1)111)1+)=-----   - --- - --==+=+-+-------- -  --- --         - -----
 -------=====++)))=+=+=++++++))))11AZZ)111)111)1+===--     -     ------------ -- --    - -----  -----------==-
 =-----=-=+++)+Z11)1+11Z1)+1)))1)))1)1)+)))1)))))+===----- ----   -- ---  -  --  - --- -- - - ---=----===)+))=
 --------=-++11)+)+)++++)+==-)===--)+)-+===++)+==--=-======--- -     -  -- -  -------------==)=))))1))+Z111ZZ)
 =---=-===-====+-==-=+-===----=----- - ------------=-----===-= -   -  --   - - - --  - ------==+++))+)))+)))+=
 +-======--===---------=-=------    --     --- --------- - ----  --        - - - - - --  ----=-===-=-----==---
 +===+=--=-=====--   =----=--=-- - ---     -- --   - -   -----   -                 --- - -- ----------- -- ---
 +-+=+===-==--=--- --- ---------   - -     - - - ---     -    -                    - --      - -- -      --- -
 ++)++=+=)++====---  ------- - -  - --- ---- ------  --          -                    -        - -      -
 ++))++)+))+=++==--  -- -- - -   - ------   -- ----            -     -          - -           -  -     --- -
 =+)))))))++=+++-----------  ---- ------ --  -- - --                          ---    -   -   -   -  - -
 ----=--=--=---=------ ----- --------=-= --      -             - - -                                 - --
 -====-+-=====-=---- ---  ---- - ------=----                                               -  - -- -    - - -
 ====+=+-+==-=-===-- ----------=-=-= ---   - ---                                        --     -     -   -  --
 )+)+1)+++===+-+=----- -----=+++===-=------ ------  -  - -     -               -     -       --- - - -   --=--
 11))++))+===--+-=-  --- --==+)))+=+==---  ----=--  -   ---     -   -    - -   -   -   -    -------- -   --= -
 ++==+++====-==)==-- ---- ---+=+++++==-----  ---- - -   ---  --       - -- -- -              ---   ------- ---
 ===-----+-=====-= ------ -- --=-= =----------- -      -- -- ------   - ------ -     - - - --- --  -- -  --  -
 ===---+===--==--= ---  ---------=--=-------- --   - -   --------    ----- ---           ---    --- --   -   -
 =-=======-----------------= - ------- - ----- - ----     - --------- ---  --                        --
 ==)+)+))+==-=--==-=-=-=--=----=------ - --- ---------- ---  -- -    -                              ---
 =-=-+=+=++)=)+=-=-=-----=------ =----- -----====))+)))11X1)1)==-- ---- -   -                         -------
 ==--==+=)+)+)++==-====--=-==-======---===-++11ZXXZXXOXMMMMAXZ11)+=-=----  -           --        - - ------- -
+                                                    -
 =-=-=--===)+1)))+++-==+=-=--====))1)1)Z)1ZZZZZAXAZZ1XZXXAXXZXXAXXZZ)1)--                           -- - ---=+
 =-====+===+)))1+1))+)++==----==-++11Z1ZAAXXZAXAZZXXZX11ZXZAXMAMAAXAAMAA1=----      ---- -   - - -    - ---===
 ====+=)))+))))11Z1)++++=----=-----+=)=))Z11)1)1)))Z1Z111Z1Z1ZZXZXXXXAAMX1)+==  - -     -  - -- -    ----  ---
 +=++))))1+1)1ZZ1X1++)=+==-=-=-=-------====-=------==++=+)+=))))))111XAAZXZZ11))-------------- --   ---    ---
 =-==)+1))1ZZXZXAOAZ1)))111Z))))=+==-----=- -- -    -----------=))++)1)Z1ZZZ1Z1Z))++=+-=-+=)==-    ------- - -
+                -
 ))))AAMAMMOOOOOOOMOOOOOOOOOOOMMMXZZ)1++=--- -     -- ---------- +=--))ZZ11ZZZ1XZX1XZZZXZAZAZZ+--- ----    ---
+          --=+==+ -----------
 )+Z1MMOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXXZZ))===    - - -   -- ---- -- ---)11)+))+)))1XZAXAXAXAXX1+=------ ---  -
+      --==+=+++=+-=-+-=+=-+===---
 ++11AMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOMAAAZX11++--   -- ---------  --------)++=+-+==))1Z1XZAXAXZ11)+=--- -==---
+      - ==+++++++=+=+=+=+=+++++==--
+                '   '       '
 =-+=)1XXOMOOOOOOOOOOOOOOOOOOOOOOOOOOMXXZ1)1)+==-------=----=-----    ---==)+==----==+-++)+)=1+))1)=-=---=-- -
+        - +=+=+++=+=+-=-=-====+-=-=-
 ---===))ZZMOOOOOOOOMOOOOOOOOOOOOOOOMMAX1Z)))=+===-===-+++++===--===+)))))))))+)+)))))))=+=====))11)+--- =---=
+           ---=-=-- -------====----
 --------==1ZAAOMMMOMMMOMMMMMOOOOOOOOOMMXMXZ1))1))===++Z1ZZZ)++=+++))1ZXZ1111ZZXAX1AXXZXZZZZ111AXMAA1Z1Z))1))Z
+              -   -   -     ---------
 =-=---- --++11ZZAZAMMAMAMMMAOMOOOMOOMMOMOAAXXXXXXZ11XZAAMAMXZZZ1ZZXZAZAAAXZXMMMMOAMMMMMMOMMMMMOMOOOMMMOMOOOOO
+                            - --- --  - -                                       -       -     - ---   - ----=
 --=-- ------==+=+))1XZXXXXAAMAMMMMOOOOOMMXMMMMMMOAMXAXMMMOOMAXAXXZMXZZMOOAMXMXXAAAMXAAMAMMMMOMOMOMOOOOOOOOOOO
+                                  -----         -        --            --                   - - - ----===----
 +++==-+=====-==-=-==++)1ZZXXAAAXOMOMMOOMOOOMMOOMMMMMMMMAOMOMMMOMOOMMMAOMOMOMOMMXXZXZMMMAMMOMOMOOOMMMOMOOOOOOO
+                                - -  -- ---  --         - -   - --    - - - -             - - ---   - --=--=+
 )+)+1)1)+==--=-=-----===++11XZAAMAAAMXAAMAMMMMMAMAMAMAZZAAAXAAMAAXXZZ1X1ZZZZZ11)1)11ZZAXXXMAMMMAOMMMMMMOOMOMO
+                                                                                                -      -- - =
 =))1AAMZ+=++Z111+=--=-=-==++1)ZZZZZZ))Z)1)ZZZZZ111Z)))))++)+)+)+++====+========---==+))))+))ZZXXAAAAMMOMOOOOO
+                                                                                                      - ----=
 )ZZXMOOOX)1XOOOMM1+-=+))+==-=++)1)1++-=-==+=1)1)+))-=--    -=  -   -- ---  ---   ----------=1))+1ZZZXXMAMAMAO
+     -+-    -=+                                                                                             -
 OOOOOOOOOMMOOOOOOX)+)+1)Z1Z11)ZZAXZZ1))+))1111ZZZ))+)===--======- ----  -  --       - -  ---=-+)11ZZXAAAMOOMM
+----++++=  -=+++=                                                                                        --
+    ''''      ''
+    . .       .
 OOOOOOOOOOOOOOOOOOXZ)---1AMMMMOMOMAXXZZZZ1ZZAAMAMAX1)++==-=-=)1))+=-=- -  -     -          - - ---++11AAMAMMM
+++++++X++++++++++-            - -
+'''''''''''  ''''
+..........   ...
+= = = -==     =
 OOOOOOOOOOOOOOOOOOOX)=--XOOOOOOOMXZ1AXMXAAMMOMMMOOMX)==--=--=+==1ZX111)+--  -      -       -      --=+))11Z1A
++++++XX++++++++++=-      -+==-+-            -   --
+'''''''''''''''''
+.................
+=====--===
 OOOOOOOOOOOOOOOOOOXZ1=-=MOOOOOOOMZ+)ZAMMMMMMOOOOOOOMOX)=---=====1AMMAXZ11=--  - -   --    -     --- - --=-==+
+++X+XXX++++++++++=       ++++++=            --+===- -
+'''''''''''''''''         '''
+................          .
+==-=---=== =
 OOOOOOOOOOOOOOOOOOAMOMOOOOOOOOOOOMAAMMOMMMAZAMOOOOOOOOOZ=-=+MZZ1MMOOOOOOMZ)+++==-   -   - - -- ----   --- - -
+++X++++++++++++++-  - -=++++++++=     -       --=-+===-           +==---
+''''''''''''''''        '''''''
+...............         ......
+==-===========            =
 OOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOMOOOOOMOMMAMMOOOOOOOM1=)1MOOOOOOOOOOOOMAZXXZ)=-- -   ----  - - ---- ---=--
+++++++++++++++++=  =+++++++++++++=+ ----- -     ----===      -==++++++++=
+''''''''''''''''      '''''''''                                 '''''''
+...............         ......                                  ......
+===========             ==
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMMMOMOOOOOOMMOOOOOOOOOOOOOOOMMOOOA)-=-- --- - ----==+)111)ZZZZZ
+++++++XX+++++++++=+++++++++++++++++++==-===-     - -=-==-  -+++++++++++++=  ---
+'''''''''''''''''   ''''' ' ' '''''''                         '''''''''''
+...............         .   . . ...                           .........
+======--======                                                  ==== =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOAMMOOOOOOOOMMOOOOOOOOOOOOOA+)OOOOMZZ11+++++--- ==ZZXZAAOMMMMOM
++++++++++++++++++=+++++++++++++++++++++++=+=- -   -=--===-  +++++++++++++   =++-                      -    -
+'''''''''''''''     ' '   '''''''''   ' '                     ''''''''''
+.............               .....     .                       ..........
+  === ===                   =   =                             =   =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOAOOOOOOOOOOOOO1--OOOOOOMMMXAXAXZ)=--=))ZZXAMMOMOAM
+++++++++++++++++++++++++++++++++++++==++++++=-  --===-=-=-- ==++++++++++=   -++++-                      - -
+''''''''''''''''''''' '   '''''''''   ''''''                  ''''''''''      ''
+............              . ......     ....                     ........      .
+====== =  =                                                     =     =
 OOOOOOOOOOOOOOOOOOOOOOOMXZAMOOOOOOOMOOOOOOOOOOOZAOOOOOOOOOOAMMOOOOOOOOOOOM1ZOOOOOOOOOOOMMAAZZ)))+==++)XAMAAZX
+++++X+X+++++++++++++++=     +++++=+ --+++++++--  -+=+++++--   --==+++++++   +++++++==--
+''''''''''''''''''' '        ''''     ''''''        ''''            ''''     '''''
+............. .              ....      ....         .               . ..     ....
+ ===-=-==== =
 OOOOOOOOOOOOOOOOMMMAX1+-- --ZMOOOM1-)1OOOOOOOA)=))OOOOOOOOOAXAMMOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOMZ+--==1ZAAAXA
++++++XX+++X++++=              =--     =+++++-     --+++++--     --+=+++++=+++++++++++=+==-  ---
+'''''''''''''''                        '''''        ''''                  ' '''''''''
+...............                         ..          ....                    ..... .
+ ====--===-  =                                        =                        =
 OOOOOOOOOOOOOOO1===             -    -+1MOOMX=-==--+OOOOOZ---+XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMX)=++)ZMMOMO
++++++++++++++++                          --         ++++=       =-=-=======+++++++===++=+=+++==-          - -
+''''''''''''''                                       '''                   '''''      '   '''
+..............                                        .                     ..
+= ===========
 OOOOOOOOOOOOOOM+---                    -=+++--=-+- -=1MO+    -=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMXXZMOOOOOO
+++++++++++++++                                         -        --=++++===++++++++==+++++++++++==      -==+++
+''''''''''''''                                                      '       ''''     '''''''''             ''
+..............                                                               ..       ......                .
+========== =
 OOOOOOOOOOOOMZ+ -                           --)1Z1)- -))      ==XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMOOOOOOO
++++++++++++=                                                     -=++++++++++++++++=++++++++++++=-    ----+++
+'''''''''''                                                        ''''   '''''''    ''''''''''           ' '
+..........                                                          ..      .....     .........             .
+ ========                                                           =                    == =
 OOOOOOOOO1+-                              - --)1ZZ1-  ---   -----=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMOOMOMO
+++++++++=                                                         -+++++++++++++++==++++++++++++++=    -- - +
+''''''''                                                            ''''   '''''''    ''''''''''
+........                                                            . .     .....     . ........
+== =  =                                                                                   = =
 OOOOOOOO=                           --          ----  ==-=--- -   -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMAMXM
++++++++-                                                            +++++++=++++++++====+++++++++++=-
+'''''''                                                             '''''   ''''''      '''''''''''
+.......                                                             ...       ....        ........
+                                                                                             ===
 OOOOOOM+                        -  --             -       --  --   -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAMMMXX
+==++++                                                              -++++++-+++++++++-=+++++++++++++==-
+   ''                                                                         ''''''    '''''''''''
+                                                                              .....     ....... ...
+                                                                                              =
 OOOMX1-        -                -                             --   -)1ZXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMXX
+--=                                                                     +++=-=+++++++===+++++++++++==--
+                                                                               ''''''     ''''' '
+                                                                                ....      ....  .
 OOX-                           ---                ---           --------MOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMA
+--                                                                       -=-  =++++++==-+++++++++=+=-===---
+                                                                                '''''     ''''''
+                                                                                ....        ...
+                                                                                  ==        =
 OO=                              -                --            --==+=--+1AZ1+ZOOOOOOOOMOOOOOOOOOOOOOOOOOOOMM
+=-                                                                             =++++++- --+++++++++=====+=-
+                                                                                '''''       ''''
+                                                                                .....       . .
+                                                                                  =
 OM=   --                        -   --          --=---  -         --==----==- =XOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++                                                                               +++++++---==+=+++++++++==----
+                                                                                ''''''              ' '
+                                                                                 .....
 OM- ---- --                     -               -=1)-                  - -     =OOOOOOOOOOOOOOOOOOOOOOOOOOOMO
+-                                                                               -++++++++-----=-+=+++++==-- -
+                                                                                 ''''''            ''
+                                                                                  ....
 )=        --                                     -+==-                          1MOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                  +++++++-------==++++===----
+                                                                                   '''''           ''
+                                                                                    ...
+                                                                                    =
 -        --                          -              --                          )MOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                  ++++++++------=-+===+++---=
+                                                                                  '''''''             '
+                                                                                   .....
+                                                                                    ==
             -                     -  -  -                                       )OOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                                                                 -+++++++++++=--=++=+++++=--+
+                                                                                  '''''''''       '  ''''
+                                                                                  ........            .
+                                                                                   =  =
              -      --          -   - -               -   -                     +OOOOOOOOOOOOOOOOOOOOOOOOOMZM
+                                                                                 -++++++++++++--==+=+++++-
+                                                                                  '''''''''''
+                                                                                  ..........
+                                                                                   ==== =
   ==    ==- =-     ---           -                        - -                   =AOOOOOOOOOOOOOMMOOOOOOOOOA1M
+                                                                                  =++++++++++--  --=+++==-
+                                                                                    ''''''''          '
+                                                                                    ........
+                                                                                      = =
 -+11+--=ZXMZ1XZ= ---=-        -   -                         -                   )XOOOOOOOOOOOOOOMAOMOOOOOOOOO
+                                                                                  -=+++++++++++=  - -===+=+=+
+                                                                                     '''''''''
+                                                                                      .......
+                                                                                      =
 ZXAZM1==ZXMMOMOOXZXZX)=---    -    -- -                                        -1AMMOOOOOOOOOOOOOOOOOOOOOOOOO
+            - +-                                                                    ==+=+=+++++=+---==+=+++=-
+                                                                                                        '
 OMXZAA1+ZXOOOMOMOAXZZZ1ZZ)-  ---   -=---  - --                                -)MMMMOOOOOOOOOOOOOOMOOOOOOOOOM
+-         --- - -                                                                   =---=-+===+++- ---+++===
 MX1ZAZX1MOOOMOOOMAZ+)+)ZOMX+)+11    ----1)- -=                            -   -)OMOOOOOOOOOOOOOOOOOOOOOOOOOZ)
+         --- ---        -                                                       - --==+-+++++=++++=----===-
+                                                                                          '   '''
 ))Z)Z1MMOOOMMMOMOMX)+-+1AAA111MX+  -----1=  -=-                           -    -)1MMOOOOOOOOOOOOOOOOOOMMAZ-
+        ---   = -                                                                   --====++++++++==--
+                                                                                          ' ' ' ''
 +=111XOMMOMAMOOOMMX1++11ZZZ1=)X)+--   --=-                                    -===))11AMOMOOOOOOOOOOOOMZ-
+      =  -   -+=                                                                        - +++++++==-=-
+                                                                                            '''
 =+)+ZAOOMZZZXAOOOAXZ11MX111+))1=-=-----  -                                     ---++)=1)ZZMOMMOMX1Z1AA1=
+      --      ---                                                                          -  -
 11ZZXOOOM11)1)ZMMAX)))XAZ)Z1Z)+=)1)== ---                                      ----+AXAAZ))+))1+- - ---
+     ---
 MOMXXZMXAZXM)))+11X1++ZZZ)1+)+==++)=--==-    -==                      +-            )XOMA)   ---            -
+ -                                                                                    -
 MOOOA1)=))XMMZ)===+==+))++1)= --==  ----    =)AM=                               -   -=ZXZ-    ----
+ -=-
 OOMAA111ZZXAA11++-=--+1)))1)=-- = ----     -1XMA+-                          -    ---- ==-      -
+--
 MAXZOOOOOOA1Z))+==----))XXZZ=---==-- -     -))+)=---                        -     1111)-
+    ------
 1)+)XMOOOOXZZ1+++=  --=+11X11-- -          -+--- -                         --    -XMOM+-   ---
+      --=-                                                                          -
 ==))AMOOOOXZAZZ11=-   --+++++-             - - -   -                    --=)+- --+XAAZ)--   --   -    -+X=
+      =---
 )+XMOOOMAMOAMMA1)+=   - =--=+--               -=+---          --       --)Z1)---=)Z))==-              -1MZ=-
+    ---   -
 XAOOOOOA)1MMOOMX1+)=----- --==+-=-            -)+=--           -- ---=+++)11+=++1)+-=--   - ---        =ZZZ-
+  =-==-     =-
 OOOOOOOOZ1AXOOOAZ)ZZZ+--    =+1+== -  --      ==+=--            - --)))))+=-===+++=-=- -- ))1+--        -+1=
+--=--==-    -=-
 OOOAOOOOAAMOMOOMMAMMX))-  --=))---  -  -=-=---==1)=-    -      - ---1ZXZZ1+=======------++1))=-           ==-
+==- =+=-   - ==
 OOOMOOOMAMOMOOOMMMOAZ))-  - =)=----- --=1)))-  -1= -    --     -++=-+)ZZZ1+=-====-=-=----==----   -       ---
+==- ++=   = =--   -
 OOMOOOOMAMOOOOMMOMMMZ1Z1--  +)=-- - --+1AA1+    =- -- - ---=- =++==--=))=++===++1+=-=--    --               -
+-- -===   --=-  -
 ZZXAOOOMXMOOOMXXMOMAX1MA1+==)+1+=      -XXMA+=--==))XZZ)+ -==-----+++--=--=-=-==----   -    -             - -
+    =-=   =--    -
 =+11MOX1AOOOOX)1X1Z)111XMA1+1+ZX1+--    -)ZXMZXZ)+)1ZZAZZ+=-------++)++---------- -- -      --              -
+     -   ----
 --==11)+ZXAZZ1)++=----+1XZ+=++XXMZ)=--- -=+)Z)ZZ)+==ZZAXA1+- -=- ----=--=---==----     -----=-
 - =-))11AAZ))ZAZ+=----)ZZ)=--=ZZXZ)-=---)))ZX)+)Z1)=1ZXAMZ1=++)=----- --==+)1)-  -    -=1++=)=--            -
 =---==))AAZZZXOMXZ1==-=++==---====--+-+)XXAAM+-)ZA)-+)XZXZX)=-1)=     -- -=+=--      -=)AZ1+=--=- -
+              -
 Z1+---=+ZXMAMMOMOMZ1+=-=--=-  -  ---+)ZZXMMMOX1)XZ1==+)1))Z)+==+)----  -=-----    -  -)XMM1)= - -----
+              - -                           -
 XZ)-----+1AMMOMOOMXZZ= ---- -     --=)))11MMOMAZZ=--+=-=1)++=---=====- -=-----       -=)Z11)+-        -
+             - --                           -
 ZZ1+++++)1AMOOOOMMAXX)- -     - - ---++++)MMOOMX1- -+===1)--- - -+1ZZ)=-==------= -   -=1)------
+            =-=-                            --
 1+Z11++))+AAOOOOOAZ))-----  - ------  --)+1XMMMX)-  -+)))+--     =XAX=--- -=----=-- ---===- ----
+            --=--
 AZXZZ1Z)))AMMOOOMZ)==---=---  - -==-=   ++1XOMAX+=--=)+=+)=--     +1)=----=+- - +--- -==+--
+             ---                            -
 MMX11)11XXOMMMMA1+----=---  - --- ---   -)ZZAAX1--+)A1==+))+)=-    -))++)+11- --=-  ---- --- -
+          -
 AAX))=))XAMAMAA1)-------=-   -----=-+=--=+1)ZX)=- +ZA)=-+++)1)=-   -+11)XZZ1--===-----    ==++-     -
 )ZX1)+1XMOOMMMA1))--=---=--  -=--- -=-==)+Z11Z1=- )ZX+=+)+=-1)=---  )XAZ1XZ)+=1))--==--   --=-      -
+         --
 ))11)+1ZOOOMXZXZ))+-=-=--=+---=-----+))=))Z)ZZZ+==)1)=++)+=-)1)+= --1ZXXZ)1+=+ZZZ))++-- - --==       -
+        ---
 ++)++-)ZMAZ1))1)))+======++- --=--==+)1+))++1)+-  ------=---=+1)))11XXZZ)==---ZXXZZ1+==-=-  ==-
 ===-=-+)Z1)=++)=++=-=-+-==--  --=-===+111Z+-+-=-- --- - - ----))))ZZXXXZ+==--=1ZAXZZ1=++==-  --=
 =-==+-==Z)=+=++=+==-=-----=-----)=--=+)1XZ)=+11)--- -- --- ---+=))ZZXAX1)===--)1ZZZZ1==-=== --=)-     --
 =++=+==+1+==)++=+------- -=+)==+)+=-====1)))1ZZ)+-===--   - --=+)))+11)=+=+=+===+))+----==+---==)-   -----
 )))=+==-+----====--- ---- -==-==+++=1)+==-+=11A1+====--   - - --++==+=====++)=--===-- -- -=---==1)- ---  ---
 Z)++)))+)-=--==-==--=---= --=-==+=)+))+=====)111+====-=--   -=------+=+=++)+)+====)=- ---  ---+)X1+-==+--====
 )+++1+++))+==--===- ==+-==--=-+=+=+++)1)+==+)))=+==-==-==  --===   -+++)++))))+---+=----  -   +)ZZ+-+-)+)1++-
 +++=++)+1+++==+---  -==-==+-==)+))Z+1+1++=-=+=+-=-=-=-===-- =+)=- -=)1Z1Z1111)==--+=---=- --  +)1+))++)1)111)
 ++)+1+++1++=+-+--- -==1++)1++=))1)11)=+=+===--==-====-------==)1+-==)+1))111X1)+=-==+-=---    ===-==)))))111Z
 ==))Z+++))))+=+==--=))XZ1ZA1Z)1ZX11+=-=+++===-=+)++==---=-=-=+XXZ)))=-)))=11ZZ1)+-=+))+       =-====+=)11ZZZZ
 +=+)1+==1+-=+==----=1ZX1+=++))11)+======)=+-=--+1++------=----)1)=--=-=+++++)1Z++===)+=   -  -- =-=---=+11AXA
 ==1+Z1)+1++=+===+-==+1Z11))))+))1)=-==+=+=+==-=+)==-----===----+=---+-+1Z))))+))++==++=-  - -   -==---=+11Z1X
 )111Z1)+1))===+==--=)1X)ZZZ)Z1))Z)=++=)=++)+++-=+====---=-===-------=-+)ZZ1+)+)++====-=---    - -==-   -==+)Z
 )+))1))+1))+)+)++=-=11Z1XAZ)X1++1+++)+)===+=+======+)+====+====-=--=+++)XZ1)+)+==-+==-=------ --++)--  -=-==)
 )+)111)++=++++)=+===111ZX11)111+++)=+===+====-===-==))+=+======-=---====1))=)1)))====-- --=  ---===   - - --+
 )))1Z1))))+===)++=-=)+)1ZXZ)111+)++))==-++++======))ZZZ))-+=+=+==-----===--=))Z)++=+==--=---  ---==---- -- -+
 )+Z1ZZ)))++=+))++===+=)1Z11)1+1)====+=+=-===-=++++)+1))==--=+=+-=-------=-==)1Z1+=+=+======- -------  --=---+
 11XXAZ)))+1+)))))=+=+++))+++1))+++++)==+=-=-=-=+1))+)+)=---=+==---=-- --===++)Z11))+))+=)++===---=-  ---=--=)
 1)X1XX1)++)++)+++---+=+==-==1)1+)++=------===---))+====-=---=+- =-=----=+=)=)+))1)))Z)ZZ11)++-=-==----- ---=)
 ZZAXXZ1))))+)))++===+=+==-=+1))))=1)+-=+=-+===+=+++-+-==-===+++-==-=+-++))++++1))))+11111)1++++++=-       --=
 11XZZZ1)+++)))+++-++)++--===+++))))+=-----+===+=====--====)+++==+=+++=+))+)+))))Z++++))+))+++)1)+--     -- --
 111))))==--+)+=-=-===-====+-==)+++)-====+++---------=-=-==)1)++=+=+))=)=+=====)+)==- -=-+=)+++))- --  -   - -
 1ZXZAZ)====)XZ1))1)1)=+=+=++==)=++))=++)1++=-=---- -----=-==)++=+=+++=----++1+)++)=---===++++)Z1+=-   -   ---
 )ZZ1XZ1))-=)XXZ111X1)++-==+===+=++)+)+)))---- ---   - ---- ---==++)+))1)11))1+)+))==----==+)1+)))=+=--   --
 -1XZAXAZ)=-+ZZXZXZ1)+=+=+=+===+=+=+++===+=----=--------=++)+)+==+-==+=))+=+=)+=-++==-   --=+)))=+++==-- - --
  =ZZAAOA)+=)X1XAOXX)+=))++)))+1+++1+)))++====-==+=+==--=++)))++++===++)))+))Z))+1)+---- ==++111))))++-=-   --
+      -         -
  -ZAAXMA1++1Z1AMMZZ)+==-==)+11)+++1)++)++=)=)++=)++-=--=++)))+)+)+++1)1)Z1Z11+)=)+++-- -++X1Z1Z111Z1))=------
   1AMMMXAZZ)1)XMA1))=-=-+++)Z1Z)))111))+)+)+)=))1)+=-=+=))1)))1)))+=)))11))+))+)++))==---+Z1XZZZZ)Z11++=-=-==
   +ZXXXAAXZ)ZZXZ1+))+-=-=+1ZZ11)Z1Z11+))))1))=++)+=-==)+)+)+))Z))===1+1)))))++11)))+==--+)ZZZZXZ11111)+)+=+++
   -)ZZXZXZZ11ZZ1+===----==))11Z11)Z1)+)))))+)+)=+====-+++)))1ZZ)+=))1)1++=++)+)Z1)1))==-+)Z1ZXXZX1))1))+++11)
    +Z1Z1ZZZ1ZZ1++=+=+--=-=))Z1Z1Z11))+111)++++1++-=====-++)ZZ1Z)Z)))))++1))+)11))+11))====1)XZ11Z+++1)1111XZX
    -Z1XXXXX1AA1))+===-==++++1ZAXXXZ11)))Z)11Z)+====-==--=+11XZZZZ1)+1)++))))111)1))+)+)+))1Z1)Z1ZZZ1Z1)+1)ZZ1
    -)ZZZXZX1Z1))+=-----==+1)11XZZZZ))+1)Z1Z)1)+++=+=-=--==)1Z11)11)11)))))1))1Z)))++)+)+1)ZZX1Z1Z111Z1+=+)))1
     )1XZAXZ1Z111)++++=++)1AZXAMXAXX11+11ZZXZ111)11)=+-===+)1Z1Z+)1)1Z1)+1)1)+)1+)+++)1Z)11Z1Z11ZZ1Z111+=+))=+
     ))ZZXZZ1Z)1))+111+Z)11XXXXAXXAMZ)+)+1Z1Z111)Z11+)==-+-Z)1Z1)+)))XZ1)11)+)+)++)++111))))+1)X11)11Z)+-++))=
     =)Z1XZX11+Z)))11111+)1ZXAAAXXAAXZ)1)Z11)))1)111)1++-))1))11)1)+)XZZ)Z1Z11))=)+1))111))))111)111)1)+=++))+
 -   -)1ZZZ11)+1))+))1)+=))11ZXXXXXAZ1))))++++)ZZZZXZ11)))1Z1111)1)++ZZX1Z11111))11Z11)1+1++=)+1)Z11)Z1)=++)+1
 -    )XXAZAXZ1ZZ11111)1)1ZXZXZAXXXAXA1Z)1))+11AXAMOOMOAZXZXZ1)1)1)=+Z11ZZ1Z))))=1)))1)++++)+)))1))1+11+=))1+1
+                                                  -- -
      1AXAAMAXZ11Z))11)1111XXAXZXXZXZXZZZZ11)ZZAAOMOOOOOAXXXZXZXZ111ZXZZZZZ)11ZX1111111Z+)+++)1Z111X111))ZZX1X
+                                                - +++--
 -   -ZMMMMMMAAAAMZXZ1)ZZXXAXXXXZAXXZXZXZ1)1)1)ZAOOOOOOMXZ)1=))++))1ZZ1Z1Z1Z)11)1111)1)1)1)111ZZ11ZZ11ZZ1ZZZZX
+                                                --++++
+                                                   ''
+                                                    .
 --  -1MMMMMAMMOMOXXZXZZZMAAZXZZXMAAAAXAZZZXZX1XMOMOOOOOAXZZZXZZ1))1)X1XZZZZ1Z1Z11111Z)1)1)))11ZZZ1Z1Z11111Z1Z
+              - -                               - =+++-
+                                                    '
+                                                    .
 =-  -)MAMXAAOMOMOMAXXZ1ZXXXZZZXAMAAAXXAXZZXXAXXAOMMOOOAZZZZZXZZ1==))Z1XZZ1XZZ1Z1ZZXZZ11+1)))Z1ZZZZ1ZZZ1111Z1Z
+            - - -                               -  -=-
 -   -=XXAXAXAXZXAZX1Z1Z1ZZ1111ZZAAXZAXAZZZXXX1XXMXAMMAXZX1Z1ZXZ)+-11XZZ1ZZZ1Z111Z1X1Z1)))+)+1)11Z11111111111Z
 )-  -)MMMXXXAXXZXXAXAZXZXZXXXXXXAXMAMAAZZ1XZXXAAXZAZXZ111))1ZZZ)+-11XZXZ1ZXZZZZ1Z1Z1Z1)+)+))1ZZZZZZZZ1ZXXZZZX
 +-- -)AAMXAZZZX1ZZAXAXAAAXXXAXAAMXAXOAAXXXXZXXMXAXAZX1Z)1))1Z1XZ1)ZZZ1X1Z1ZZZ)11Z1Z))1)++=))1)))Z111Z)Z1Z)11Z
+                                    -
 )=--=1AAOMMMMOMOOMOMOAMMMAMAAAMMMAOMMMMMXXXZXXMXXXXZXZXZAZZZXZXXXZXXZZZZA1X1Z1Z)11ZZ11))++1)Z11111Z11)11Z1111
+        -    - -- - -             -
 )-- =1AMOOOMMOOOOMAXMXMXMMMMMMMMOMMAOAOAMXAZXZX1ZZXZAXAAXZXZXZAAAXAXXZXXZ1Z111Z11)11+==+Z11Z11)+1ZX1111ZXZXZ1
+        ---  -+--               -   - -
 1=--=+AMOOOMOOOOOMMAMAMXMXXAMMMOMMOMMAMMOAAXXZAXXZZZA1ZZZZXXZZXXMAAXXZXZXZAZZZZZZ)11)=+1ZZ11Z)1ZZ1XZXZZ1XAXAX
+        --- -----              -  -     -
 1=--+1OMOMOOOOOOOMOAMAOXAAZXMMMAMAMMOMMMMAAXX1XZAXXXAZZXZZZZZZXZAZXXXXXZXXXXZ1ZZ1)1)==)1111)1+11ZZXZXZAZXAMAA
+      - - =-----= -   -             -
 1=--+ZOOMOOOOOOOMMOAMAMXAXXXAMAXAXMAMMAXMXXXX1ZZAZXAXZZZXXAZXZXZX1XZXZZZZZAXXZXZZZZ)++)ZXZZ1ZZZZXZAXXZXZAXAXX
+      -- ---=-=-  -
 )---+XOOOOOMOOOMOMMZXXAAMXAXXAXXMAMAMAXXAXXZZ1Z1Z1Z1XZZZZXAAXXAZ1)Z111Z111ZZZZZZZ)Z1+)Z11)Z11)1111X1ZZXXXXMZX
+      ----- --- -
 )---+AOOOOOOOOOMMMMZXZMAOAMXMMOMOOMAMMMAMAAAAZZZZZXZXZZZXZAXXZZZZ)11Z1XZZZZZXXAZXZZZ1111Z1Z1XZZ1XZZZZ1ZXAZAXX
+      +=+======         -     - --
 =-- +AOOOOOOOOOOMAMZZZMAOMMXOMMMOMMAMAAXMMMAXZZZZ1XZXZXZXXXXXZXZZ1ZZZ1ZZA1XXXXAXAXZ1))+)Z1ZZX1XZ11Z1X1ZZZZZZX
+      ==++===-=-        -   -   -
 -  -+MOOOOOOOMOMMAAXAXMAMAMAMOOMOMOAMXXXMMOMAXXZZXZZAXXZXZXXZZX1X1111)Z)11XXAXAXXZZ1111))+111ZXZZZZZZ1Z1ZZXZZ
+      ==++==- -              -- - -       -
 - --=AOOOOOOOOOOOOMAMXMXMMAMMAOOOOMMMMAAMMMAA1XZX1ZZXXXXXXAXZ1XAXZZ11)11Z1XXAXXXZ)))11Z11111Z1XZX111))Z1ZZXXX
+      =-+==-------            ----
    -+XMMOOOOMMOOOOMMMAAXMAMXMMMMOMMAMAAXAAAXXXXZZXXXAXAZXZXXZ1ZAXXXZXZXZXZXZAXXZZ1ZZZ1Z1ZZZZZZX1X1ZZ1111ZZXZX
+        ===-  ----              -
     1AOOOOOOOOOMOMMMMMMMOAMXMMOOOMMMMAAXOAMXAAAXAZXXMAAXAXAXZ1ZXXZXXAXXXAAMXAZXZXXXXZZXZZZZZXXXZ11ZZXZXZAXXXA
+      --===---- -       -     ---       -
    -1MOOOOOOOOOOOOMMMMMMMAMXMOOMOMMAMAAMOAAAOAMMAXXZAXAXAZAXZZZZMXXAMMAAAXAXAXXZZZXZAZZZXZZZZXAA11Z1XZAXAXXZA
+      --=-=-=---=-           -- -       -   -
     ZMOOOOOOOOOOOMMMMMMMMAXXMMMMOAOAMAAAMAAAAZXAAZXZXXXXXZXAAAAZAMAXMAAXAAXZXZZ111ZZZ1Z1Z111Z1XZX1XZXXXXMZXXZ
+      +-=-=---=-=               - -
     1AOMOOOOOOOOOMMMOAAAAXXXMMMAOMMMMAAXAXAXMZAXXXAZXZXZAXXXXZZZXZXXAAAAAXX1XZAZZ)ZZXZZZXZZ1Z1X11)1ZZZZZAXXZZ
+      - =-=-=-=--   -           -
     )MOOOOOOOOOOOOMMOMMAAZAAMMMMMAAXAAMXMAMAAAAXAAAXXZAXAXXXXZXZXZZXAXAAMXXZZZAZX1XZZZAXXXZZZZX11ZZ1XXZZXZXZA
+      --===-+-=---  -
     +AOOOOOOOOOOOOOAMAMAAAMAOAOMMMMMMXMAAMMAMXMAAXMXXZXZMMMXXZZZZZZXAXAXX1ZZ1ZXZZ1Z1ZZZ1XZXXXZZ1Z)1ZXZXZAXX1Z
+      =-+====-=----         - -
     =AOOOOOOOOOOOMMMAMAXAMOMOMMMOMMAMXMMAXXXAZXZXXAXXZAXXXAXXZXZ111ZZZX1X11111X1X)ZZZ111Z)XZXZZZ1ZZ)11ZZXZZ1Z
+      +-=---==---         - -   -
     -ZOMOOOOOOOMOMMAMAMXAMOOOMMMOOOOOMMAMAAAAXAAXZXZZZZZXZMAAXZZZ1ZXZ1X1Z1Z11ZXZZ1X1XZZZXZXXXZAZZZZ11ZZZXZXZZ
+      - ==--==- =         ---   -----
     -)OOOOOOOOOOOOMAMAAAMAOAMMMMMMOMOMOAAAMAAAAXXZ1ZZ111XZAXMXAZXZXXXZZ1Z)1111ZZX1XZZZXZXZXXMZZZZZZ1XZZZXZAZA
+      -==-------=-        -       - - -
      +OOOOOOOOOMOAOAMAOXMAMMMMOMMAMMOMMAAAMMXXAXXZ1ZXZZXAZMAAAAXZXZ)XZZ)))11ZZAZXZAXXXAZMZXAAZZZ11Z1ZZZ1ZZA1X
+      -===----- - -   -       -     -
 -    =MOOOOMOOOMOOMAOAOAMXMMOMOMOOOOOMMXXAAAMZ1ZX11ZZZ11ZZAXAAAXX1Z1ZZ1))+)+1Z1ZZZXZAZZ1ZZXZZ1111111XZXZ11Z1X
+       ==-- --- --  - -     - - -----
 =     AOOOOOOOOOOOOOMAOAOAOMOMMMOMMMOMOMAXMMOAMMAZZXXZ11AXXXMXAXXZ11XZZ1X)Z1ZZXZXXXZXXAAXZAXAXX1ZZXXXZZZX1XZA
+       -+==-=-------  - - - -   -   - -     -
 )-    ZOOOOOOOOOMOOAMAOMOMMMMMMMOOOMMMMMAAMAMAMMAXXXXZXXAZXXAAMAAXZZ1)Z1ZZZZXXMAAXXZXXXXAXAZAXZZAXXZXZXXXZXXA
+       -+==-=--- --   - -       ---
 1-    =MOOOOOOOOMMOAMAMMAAMMOMMOOOOMMOOMAMMAAMMMMXZZAXXXXZAMAAMMMAMAZ111A1XXAAMAMAAZZXAAMAMAMMAXXXXZAZXXXXXXM
+        +=+=----  -         -  ---=  --
 Z=     ZOOOMOOOOOMMMAMAAMMOAAMMOOMOMMMMAMAMAMXAAAZXXXXXXMXAXAXMMAZXZX1XXZ1ZZXXAAMAXZXXXXAXAAAXZZXZXZXZXZAXAXX
+        === --=--         -    -- -
 M)-    )OOOOOOOOOMMMOAMAMXAAOMOMOMOOOMOMMAMAMXMMOAAXAXZZXXAAMAMMOAMXZ1Z1Z1XZAXMAAXXZXXAAXZXXAXAAAXXZXXAXAAAXM
+        -=+-=-+--   -       - - - --- -         -               -
 OZ=    -OOOOOOOOOOOMOMMAMAAAOMOOOOOOOMOMMMAXAXMOOMMAMXXXXXAAMAMMMMMMAXZ1XXXXXXAAAZXXXXXZXZAZAXXZAZXZZXAXXXMXA
+-       -=+======-- -       - ----==- -        --
 OX=     ZMOMOMMMOAXZAZMAAMMAMOOOMMOMOMMMAXAZXXAAMMAAXXX1XZMMMAMMMMMMMAX1XXAXAXAAAZXXXZAAAXAMMAAXAXAZXXAXMXMAM
+=         - -   -            ---  - -
 OX+     )MOOOMOOOMOXXMMXMAAXMMMMMAMOOXMXXXAZXXMMMMMXXZZ1XXAXAAMAMAXXXZAZZXXZXZZ111XZZ11Z11XZZZXZ11ZZZ111ZZ1)Z
+=         =-- --- -                --
 OM1-    -XOOOOOOOOMMOOMAMMMMMMOMMMMMMAMOOOOMMZMMMMOMOAXXAAMMMMMMMAMXXXOXAAAAAXX1Z1ZZZXX1XZXZXXAXXZXXXXAAMAMAA
++         --=-==+-  --        -        ----       - -                 -
 OOM)    -1OOOOOOOOOOMMOOMAMMMOMOMMMMMMOMMMMMMAMMMMOMOXMAMAMAOOOMOMMAAXMXAXAAAXXZZ1ZZZ11)111ZXXXZZ1XXAXAXAAAAA
+++        --+-=-+---  --     - -      -           - -       --- -
+'
+.
 OOOM=-    MOOOOOOOOOOOOMMMMOOMOMMMOMOOOAOMMOMMMMOMOAMMAAMXMMMMOOMMAXAXAXAAMXMXXZZ1Z1111)))Z1ZZZ)1)XXAXAAAZAAA
+++=        =+---===----    -- -   - --- -  -    - -           --
+''
+.
 OOOZ=-    AMOOOOOOOOOMOOMMMAMAOMOOMMOMMAAXAXXXAXXXAAX1Z1AZAXMAAXAZXXMAMMOXXXAAXZ111)111))1Z1Z1X1))ZAAAMXXZXAX
+++-         +-==----- --      - --  -                                   -
+''
+..
+=
 OOOO)--   )MOOOOOOOMOMOOMMMMOOMMOMOMOMMAMOMMMAMMMAMXMAXXAAMMOMMAMAMAMAMMMMAAAAAAZZXZXZXZZ1Z1ZZAZ11XZMXAXAXAXX
++++-        =====-- - --    --  - - -    -                  -
+''
+..
+=
 OOOOZ+--  -ZOOOOOMOOOMOMMMMAOMMOOMOMMMMAOMMMMMMMOMMAMAXZMAMMMMMMMAMMMAMMMAMXMMMMMXAXAZAXXZXZZZAZ1ZAAAAMAAXMAA
+X++-        ===-= --= -     -  -- -     -       -
+'''
+...
+-=
 OOOOX1--   =OOOOOOOMOOOOMMOMOMMMMMOMOMMMMOMAMMOMMMOMOAMXMMMMOOMMMAMMMMMAAXAXMAMMMAAXXXMAOXXZXXMAXXMAMAMMMAMAA
+X+++        -=+-=-- =---  - -     - -    -    -   - -       --                          -
+'''
+...
+-=
 OOOOOA+-   -OOOOOMMOOOOMMMAMMMMMMAMOMMMMOOOAAMMMOMMMOMMMAMOMMMMMMXAMMXOAMMMAMAMMMMMMMAMMOMMXXXMAOXXZZZXXAXMAX
+X+++-       --=--  ----            -    ---     -   -     -           -                 -       -
+''''
+...
+-==
 OOOOOA)-    ZMOMOOMMOOOMMMMOMMMMOOOOOMMMOMOMOAOMOMMMOAAXMMMAMMOAMAMAMMOMOOMOMMOMMAOMMMMMOMMAAXAAOMMXAZXAAXMMM
+X+++=         = --  ---    -    -----   - - - - -   -         -       - -- -  -   -     -       -
+''''
+....
+H===
+C
 OOOOOOZ)-   )AOOOOOOOMOMOOMMOMMOMOOMOOMMOMOOMMMMOMMAMMMOOMOMMMOMMAMAOMMOOOOMOOMMMAMXMMMAMMMAAAAMMAAXAAMAMAOOM
+XXX++-        --=---- - --  -  - -= --  - --    -      -- -   -     -  ---- --                            --
+''''
+....
+H--=
+C
 OOOOOOM1-   =1OOOOOMOMOMOMOOOMOOOOOMMOOOOOOOMMMAMAAXMAMMOMOOOMOMOMMMOMOMOMMAOMOAAXAAOMMMMXAXXXAAMMAAAXMAMAMAM
+XXX++=        ----- - - - --- -----  -------            - --- - -   - - -   - -     -
+'''''
+.....
+H--=
+C
 OOOOOOOX)-   -MMMMMXOOMMOOOMMMOOOOOMOMMMOOMMMAMOMAXAMAMMMMOMMMOOMMAMMOOMOMOOOMMMAXXZXAOAAAAXXXXAMMMXAMOMAAMMM
+XX++++-             --  ---   ----- -   --     -          -   --     -- - ---         -               -
+''''''
+.....
+H-==
+B
 OOOOOOOM+-    ZMOMMXMAOMMMMMMOOOOMOOMMMMOMOMAAMAMXAXAXAXMAMOMAMMOAAAMMMAMAMOMMOMMAMAAMOMAAAZXZAZAAAAXAMAMAOAA
+XXX+++=         -     -      ---- --    - -                -    -          -  -       -                   -
+''''''
+......
+H--==
+C
 OOOOOOOOZ=-   1MOMOAMMMMOMOOOMOOOOOOOOOAOMMMOAMMOMAAMAMAOMOOMMMMOMOMOMMMMMOMMMMMOAMXMAAAAAMAMXAXAAMAAXMAAZAAM
+XXXXX++-        - -     - --- --=------ -   -   -       - --    - - -     -     -
+'''''''
+.......
+H-HH-=
+B CC
 OOOOOOOOMX=-  -ZOMOAOMMMMMMMOOOOOOOOOOOOOMOOMMMMOMMMOMMAMOOOOMOMOOMOOOMMMOMMOMOOOMMAMMAAOAMAMMMMMMMAMAAAAAMAM
+XXXXX+++        - - -       =-+-===-=---- --    -   -    -=-- = -- ---   -  - ---       -
+'''''''
+.......
+HHHHH==
+BCBCC
+V
 OOOOOOOOOA)-  -+OOOMOMAAMMOOOMOOMOOMOMOMOOOMOMMMMMOMMMMAMAMOMMOOOAOOMMOOMMMMMMMMMMOAAAXAMMMMMMMAMMMAMAMAMXMMO
+XXXXXX++-       --- -     --= =- -- - = --- -     -        -  =-- --  --          -                         -
+''''''''
+........
+HHHHH-=
+BCBBB
 OOOOOOOOOM1     MMOOOMMMMMMOOMOMOOOOOMMOOAOMOMMMAAMMMMMMMAMMMMOAAAAXMMMMOMMAMAMAMAMAMAAAMMMMMMMMMMMAAXXZMAMAM
+XXXXX++++         ---      -- - --=--  -- - -                 -         -
+''''''''
+........
+HHHH-==
+BCBC
 OOOOOOOOOOZ-    ZMOOOOOMOMMOMMMMOMOOOOOOMOOMMMOMOMMOOAAXMMMMMMMMMAAXOMOMOOOMMMAAMAAAMXXXMMOMOMMAMAMMMAMXAAAOM
+XXXXXXX++=        ===-- -  -    = ==---- --   - -  --               - - ---               - -              -
+'''''''''
+.........
+HHHHHH-=
+BCBCBC
 OOOOOOOOOOX+-   -ZOOOOOMMAOAMMMMOOOOOOOOOOOMOOOMMMMMMMMMOMMMOMOMMAAAMMOMOMOMMMMMMMMMMAXXAAMMOMMMOAMAMMMAAMMMM
+XXXXXXXX++        -==--   -     --+==-----= ---         -   - =       - = -                 -   -
+'''''''''
+.........
+HHHHHHH-=
+BBBCBCC
+    V
 OOOOOOOOOOMZ-    1OOOOOMMOMOOMOMOOOOOOOMOOOOOOMMMMOMOOOOMMMMOOOOOAMXOMMOOOOMOOOMMMOOMMAZAAMMOMMMOMMMOMMAOAAMO
+XXXXXXXX++        --=--  - -- - --=+=-= =-=-=-    - ----    --=--   -  -+-- ---   --        -   -   -   -   -
+''''''''''
+..........
+HHHHHHH-=
+BCBBBCC
 OOOOOOOOOOOX=-   =OOOOOMOAMOOOOOOOOOOOOOOOOOOOOMMOOMMMOMOMOMOMOMMAAAMOOOOOOMMMOMOMOMOMMXMMMOOMMAOMMAAXAXAAMAM
+XXXXXXXX++-       ----= -  -----------=-----=--  --   - - - - -      -==+==   - - - -      --   -
+''''''''''
+..........
+HHHHHHH-=
+BBCBBCB
 OOOOOOOOOOOM)-    XMOOOMOMOMOMOOMOOOMMMMOOOMOOMMMOOMMMMAMMOMOMMAAXXAMMOOOOOMOOOMOMMMOMMAMAMMMXAXAMMXMXAZXAMAA
+XXXXXXXX++=         ==- - - - -- ---    --= --   --       - -         --=== --- -   -
+''''''''''
+..........
+H-HHHHHH=
+B CCBCCC
 OOOOOOOOOOOOX+    )AOOOOMMMMMMOOOMOMOMMMOOOOOOOOOOMMMMMAMAOMMMOMOMMMOOOOOOOOMOOOOMMMMOMAAAMOMMMXMOOAMXX1MMMMM
+XXXXXXXXX++-        =-=-      --- - -   --=-------        -   - -   ----+=+- ----    -     -     --
+'''''''''''
+...........
+HHHHHHH--=
+BCCBBCB
 OOOOOOOOOOOOAZ     ZOOOOOOOMMMOOMMOOOOOOOMOOMOOOOOMMOMMOOMOMOMMMMMXXMOOOOOOOOMMOOOMAAAMXAAMMMAMAOAOMMMXXMAMMA
+XXXXXXXXXX++        -=+----   --  ------- =- -=---  -  -- - -        -==++==-  ---              - -
+''''''''''''                                                            '
+............
+HHHHHHHHH-
+BBCCBBBCC
 OOOOOOOOOOOOMZ=    =MOOOOMOMOMOMOOOOOOOOOMOOOOOOOMOOOOMMOOOMOOMMAXXXMMOOOOOOOOOOOMMMMAMMAMMXMXMAMMOAMMMXAMMAM
+XXXXXXXXXX++         -=-- - - = --=-=-=-- ==--=-- =---  --- --        -=+++==----                 -
+''''''''''''
+............
+HHHHHHHHH-=
+BCBBBBBCC
 OOOOOOOOOOOOOA)    -MOOMOMMMOMOMOOOMOOOOOOOMOOOOOOOOOOMMOMMMOOMOMMAXMMOOOOOOOOOMMMMMMMAAMMAXAXAXAZXZAXAZAXMMM
+XXXXXXXXXX++-        -= -   - - --- ------- --=----==-  -   -- -      --==+=---
+''''''''''''                                                              '
+............
+HHHHHHHHH-=
+CCCCBBBCB
 OOOOOOOOOOOOOOZ=    )MOOOOOMMMOOOOOOOOOOOMMMMMOMOOOOOOMAOMOMMMOOOOOMMMOMOOOOOMMAMAMMMMMOOMMAAAMMMMXXAAMMMMMOM
+XXXXXXXXXXX++-        =----   ------=-=--     - ---==-  - -   -----   - --===          --                  -
+'''''''''''''
+............
+HHHHHHHHHH-
+CBCCBCBCCC
 OOOOOOOOOOOOOOA)-    ZOOMOOMOOOOMMMOOOOOOOMMMMMOOOMMMMMAMMMMMMMOOOOMMAOMMMMOMAXZAXMAMMOMOOOZAXAAMXXXMMOOMMMAM
+XXXXXXXXXXX+++        -- -- ----   -------     -=-             ----   -    -          - ---           --
+''''''''''''''
+.............
+HHHHHHHHH--=
+BCCCBBCCC
 OOOOOOOOOOOOOOOM)-   =MOOOOMOOOMOOOOOOOOOOOMMMOOOOOOOOMMOMMMMMMOMOMOOAMOMMMOMAMMMXMXMMMMMMMAAAMMMAAXAAMMMMOOM
+XXXXXXXXXXX+++=        ---- --= =-=---=-=--   --=-----  -      - - --  -   -                              --
+''''''''''''''
+..............
+HHHHHHHHH-H==
+BCCCCCCCC C
 OOOOOOOOOOOOOOOMX+-   AMOOOMOOOOOOOOMOOMOOOOMMMOOMMMMMMOOOOMMMMMOMMMOMMAMXOMMAMAOAMAMMOAMMMAMAOAMAMMOMMMMMOMM
+XXXXXXXXXXXX+++         --- =====-=- -= ----   -=      ----     -   =     -     -     -       -     -     -
+''''''''''''''
+..............
+H-H-HHHHHH--==
+B C CCBCCC
 OOOOOOOOOOOOOOOOOZ=   +AOMOOOOOOOOOOOMOMOMOOOMOOOOMMMAMMOMMOMMMMOMOOOOMAAXAXAXAMMAMMAAMMOOMMMMOMMAOOMOMMOMOOM
+XXXXXXXXXXXXXX++-       - ----===-=-- - - =-- ----      -  -    - -==-                  --    -   -- -  - --
+''''''''''''''''
+...............
+HHHHHHHHHHHHH-=
+BCCCBCCCCCCCC
 OOOOOOOOOOOOOOOOOO)=   +OMOMOOOOOOOOOOOOOMOOOMMMOMMXMMMOMMMAOMMOMOMOOOMXAMAXXZMMMMXXAXAXMXAMMMMMOMMOOMMMMXMMM
+XXXXXXXXXXXXXXX++-      - - -====-===---- =--   -      -    -  - - -=-                          -  --
+''''''''''''''''
+................
+HHHHHHHHHHHHH--
+BCCCCCBCCBBCB
 OOOOOOOOOOOOOOOOOOX=-  -1XMMOOOOOOOOOOOMMMOMOMMMOMOXMAAMOOOMMMOMMXZZOOMAAXMMAAAAMMAXAXAXMXMOMMMMAAMAMMMAAZAXA
+XXXXXXXXXXX+XXX++=          ----=---=-=   - -   - -     ---   -     --                     -
+'''''''''''''''''
+.................
+H---H-HHH--=-H-=
+B   C CCC    C
 OOOOOOOOOOOOOOOOOOOX+-  -1MMOOOOOOOOOOOOOOOOMMMAOAMAMMOMOMMAAMOMMX)1MMAAMAMMAMAMMAMXAZAZAAMAOMMAOAMXAAMAAAMAA
+XXXXXXXXXXXXXXX+++-         ----=-=-=-=---=-    -     - -     -                             -   -
+''''''''''''''''''
+..................
+HHHHHHHHHHHHHHH==
+CCBCCCCCCCCCCCC
 OOOOOOOOOOOOOOOOOOOOX+- -=MMOMOOOOOOOOOOOOOOOOOOOMMMOMOOOOMAMMMMMX1XOMOMMMOMMOOOOOOMMMOMMMMMMMMMOMMXMAMAMAAXM
+XXXXXXXXXXXXXXXX+++-        - --=-==========-----   - --=-          - -   -  ------   -         -
+''''''''''''''''''
+..................
+HHH-H-HHHHHHHHH-==
+CCC B BCCCBBBCC
 OOOOOOOOOOOOOOOOOOOOOM+-  XMOMOMOOOOOOOOOOOOOOOOOOOOOOOOOMXAMOMMOMXXMOMAOOMMMMMMOMMXMMMAOMMMOMMAAXMXMXMMMZZXA
+XXXXXXXXXXXXXXXXX+++-       - - --=-=-=---==----=---=---=    -  -    -  --      -       -   -
+''''''''''''''''''''
+...................
+H-HHH-HHHHHHHH---==
+C BCC BCCCCCBC
 OOOOOOOOOOOOOOOOOOOOOOX+   1MMOOOOOMOOOMOOOOOOOOOOOOOOOOOOAXOMMMOMAAOMMXMAMAMMOMMMMAAAOAOMOMOAAAAXOMMAMAAXZXX
+XXXXXXXXXXXXXXXXXX+++-        =-==- +-= +++=----=-+==-----  -   =   -         -       - - - -     -
+'''''''''''''''''''''                     '
+....................
+HHH-H-H-H-HHHHHH--==
+CCB B C C CCBCCC
 OOOOOOOOOOOOOOOOOOOOOOO1-  -AMOOOOOOOOOOOOOOOMOOOOOOOOOOOOMAMOOMOMMAMMOAMAMAMMOMMMMMMMOOMOMOOMAAMAMMMAMMAXAXA
+XXXXXXXXXXXXXXXXXX+++=-       ====------=++== ===-=-====--   -- -     -       -       -- - --
+'''''''''''''''''''''                     '
+.....................
+HHH-H-HHH-H-HHHHH-==
+CCC C CCC C BCCCC
 OOOOOOOOOOOOOOOOOOOOOOOM1-  1MOOOOOOOMOOOOOOOOOOOOOMOOOOOMMAMMOOOOMMMMMAMAMMOMMOMMOOOOOOMOOMOMMMMMMAMAMMAZMMM
+XXXXXXXXXXXXXXXXXXXX+++       --==--- -=+=+=--===-= -===-     --=-          -  -  ------ -- -
+''''''''''''''''''''''
+......................
+H-H-H-HHHHHHHHHHHHH-=
+C C C CCCCCCBCBCCCC
 OOOOOOOOOOOOOOOOOOOOOOOO1+- -1OMOOOMMOOOOOOMMOOOOOOOOOOMMMMXXXMMOOOMMAAAMAOMMAMMMMOOOOOOMMMMOAMMAAAXAXXZZXXXX
+X+XXXXXXX+XXXXXXXXX++++-      - =--  ---=--  -=--------         ---       -       =-==--    -
+'''''''''''''''''''''''
+......................
+H=--H---H=H-H-HHH--===
+C   C   C C C BCB
 OOOOOOOOOOOOOOOOOOOOOOOOOA+- -AOOOOMMMMMOOOOOOOOOOOMMOMMMMMAAZAMOMMAMMAAMAMMMAMMOMOOOOOOOMMMMMOMOAMMAZXXAZXAX
+XXXXX+XXXXXXXXXXXXXXX+++-      -=--     ------===--  -          -               - -=+=---     - -
+'''''''''''''''''''''''
+.......................
+H----=H-H-H-H-HHHH---=
+C     C C C C BCBC
 OOOOOOOOOOOOOOOOOOOOOOOOOOZ+  )AOOOMMMOMOMOMOOOOOMOMOMOOOMOAX1XAMAMAMMXXMAMMAXMAMMOOOOOOMMMOMMMMMMMMAAMXAXAAA
+XXXXXXXXXXXXXXXXXXXXX++++-      ---   - - - --=-= - - --- -                       ===-=-   -
+'''''''''''''''''''''''''
+........................
+--H-H----H--HHHHHHH--==
+  C C    C  CCCCBCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOM1=  )MOOMMOMMMMOMOMOOOOMOMMMMAAAAAZXXMAAAMMMAMMOMMOOOOOOOOOOOOMMMMMMMOOMMMMMXAMOMO
+XXX+X+XXXXXXXXXXXXXXXXX+++       --  -    - - --=- -                      -  -----=++==--       --        - -
+''''''''''''''''''''''''''                                                          '
+.........................
+---=H=--H-H-HHHHHHH-H--=
+    C   C C CCCBBBB C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOM1- -XMMMMMMAMAMAOMOOOMOAMMXZZXMOMZAZXZXAMAMXMOOMMAOMOMOOOOOOOMMMMMOMMMMMMAAMMMOMM
+XXXXXXXXXXXXXXXXXXXXXXX++++                 - --= -        -             --   - - =====--     -           -
+''''''''''''''''''''''''''
+..........................
+H---------H-HHHHHHH----=
+C         C BCBCBBB
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOM+- =ZMAMOMMOMMMOMMOOOOMMXAXAXMMMAMAA1ZZAXAXMMMAMOMMMOOOOOOMOMOAAAMMOMMMMAAXMMOMM
+XXXXXXXXXXX+XXXXXXXXXXXXX++-         -  -   -  -=--                          -   ---=-- - -     -         -
+'''''''''''''''''''''''''''
+...........................
+--------HH-=-HHHHHHHH-H--=
+        CC   CCBBCCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ- -=AMMMMMMOMAMMMOOOMMOAAAAAMAAMMAAZZ1XZAAMMMMAAMMOMOOOMMMMMMMMMOMMMMMMMMMOOOMM
+XXXXXXXXXXXXXXXXXXXXXXXXX+++             -     -=-  -                           - ---         -         ---
+'''''''''''''''''''''''''''
+...........................
+H---H---------HHHHHHH-H--==
+C   C         BCBCCCC C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1   XMOMOMOMMMMMOMOOOMMOOMMAAXAMMZMAXZAAMAMMOOOMOOOOOOOOOMOOOMMMOOOMMOOAOMOOOMM
++++++XXXX++XXXXXXXXXXXXX++++=       - - -     - ---  --                   --- --------- ---   ---  -- - ---
+''''''''''''''''''''''''''''
+............................
+=====----==-H-H-H--H----===
+            C C C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=  =XOOOOOOOMOMOMOOOMMMMOMAXZMXMXMAAAMXAAMMMMMOMMOMOMMOOMOMOOOOOMOOMAOOMOMMMOM
+XXXXXXXXXXXXXXXXXXXXXXXXX++++-      -==-=-- - - ---    -                     -  - -  -- - ----- --  -- -   -
+'''''''''''''''''''''''''''''
+.............................
+----H-----H-H---HHHHH----==
+    C     C C   BCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)---=MOOMOMOMMMMMOMMMOMOMOAMXAAMMMAOAMXXAAMMMMOOMMOOOMMMMMOOOMMMMMMOMOMMAMMMMO
+X+XXXXXXXXXXX+XXXXXXXXX+X++++=       -- - -     -   - - -         -          --  ---     ---      - -       -
+'''''''''''''''''''''''''''''
+.............................
+-=H--H-----HH=HHHHHH---=-==
+  C  C     CC CCCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)-  XOOOOOOOOMOOOMMMOMOMOMMMOMOMMMMMMXXXMAOMMMOMOOMMMAOMOOOOOOMOMMMMMMMMMAMMO
+XXXXXXXXXXXXXXXXXXXXX+X+XXX+++-      ---=---- ---   - - -   - -           -   - --    - ------ -            -
+''''''''''''''''''''''''''''''
+.............................
+----------H---H-H--H-=-=---==
+          C   C C  C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1=- =XOOOOOMOMOOOMMOOOOMOMOMMMOMMMAMOXAXMMMMOMMMOMOMMMMMOMMMOMOOMOOMOOMMMMMMO
+++XXX+XXXXXXXXXXXXXXX+XXX++++++       ---=- - ---  ---- - -   -     -       -   - -     -   - -- -- --      -
+'''''''''''''''''''''''''''''''
+..............................
+==--H=H-H-H-H-H-H-H-H=---=====
+    C C C C C C C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ1-  -OOOOOOOMOMOMOAMMMAOMMAMMMMMAMMOOMMMMOXAAMMMMMMMMMAAMMMOMMOMAAAMAOMMAAAM
+XXX+XXXXXXXXXXXXXXXXXXX+XXXX+++       --=---- - - -     -           --    -                 -  -      -
+'''''''''''''''''''''''''''''''
+...............................
+H--=--HHH-HHHHHHHHHHH--=--H-=
+C     CCC BCBBCCBCCCC     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZ+   XOOOOOMMMMOOMAMAMMOMOMOMMMMMOMOMOAMAAXMAMOMMMMAXMXXZAXMAMAMMMOOMOAMMMAM
+XXX+XXXXXXXXXXXXXXXXXXXXX+X+X++-       -=-=-    --      - - -     - - -        -                   -- -
+'''''''''''''''''''''''''''''''
+...............................
+---=-----HH-HHH----------=-=-=
+         CC CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)-  +MOOOOOOOMOMMOMAMMOMOOOAMMOAOMMMMMMAAAMAMMOMOMMAMAAXAAMAMAMAMAMAMMOAMXX
++++XXXXXXXXXXXXXX+X+X+X+++++X++=        =-=---- =  -    - ---   - -             - -                     -
+'''''''''''''''''''''''''''''''
+...............................
+===--------H-----=-=-=-=====-==
+           C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1+- -ZOOOOOOOOOOOOOMMMOOOOOOOOOMOOOMOMMMMAOOMMMMMMMMOAMMMAOMAAAAMAMMMMOMOMM
+XXXXXXXXX+XXXXXXXXXXXX+XX+X+X++++       ===---=-+=+==   --------- --- -     --        -     -           - -
+''''''''''''''''''''''''''''''''
+................................
+H-----HH-=H-H-HHH-----=--=-=-==
+C     CC  C C CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)-   OOOOOOMOOOOOOOMMOOOOOOOOOOOOOOOMOOOOOMMMOMOMMMOMMOMMMAMXAAXXMMMMOAMMM
+XXXXXXXXXXXXXXXXXXXXX+X+XXXXX++++=      -=+=== -==+==-  --=-==+==----=- -----   - -   -  -              -
+'''''''''''''''''''''''''''''''''                 '
+.................................
+----------H-----H----=-=-----==
+          C     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=   AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOMOOMMOMMMMMOMMMOMMMOAAAMMOMOOOMMMM
+XXXXXXXXX+XX+XXXXXX+XXXXXXXXX+++++-      -+-=-=-====+-----===-=-=-----= - - --  -     -   -   -     - =--
+'''''''''''''''''''''''''''''''''
+.................................
+H---H----=--=------=H--------===
+C   C               C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)-  1MOOOOOOOOOOOOOOOOOOOOMOOOOOMOOOOOMMMMMMOMMMOOMMMMMMOOOOOOMAOMOOMMMMM
+XXXXX+X+XXXXXXXXXXX+XXXXXXXXXXX+++-       ==+=====+=+++-=-=-=- ----- -----      -   --      ------  - --
+''''''''''''''''''''''''''''''''''                  '
+.................................
+-----=-=-------HH--=H-H-H-H-H--=
+               CC   C C C C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ=- -XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOMOOMMOOOMOOOMMOOOOOOMOMMMO
+XXXXX+XXXXXXXXXXXXXXXXXXXXXXXXX+++-       --==+=+++=++===---=---===---=-=-- - ----- --  --- ---  -----= -   -
+''''''''''''''''''''''''''''''''''
+..................................
+H-H--=----H-HHHHH-H-H-H-HHH-HH-===
+C C       C CCCCC C C C CCC BC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ+-  )OOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOMMOOMOOMMMOOMMMOMOOMMOMMAAMOMMXMMM
+XXXXXXX+XXXXXXXXXXXXX++XX+XXXXX++++       -=====+=+-=====-- =-===-=---=-=--  -- --   --   - --  -     -
+'''''''''''''''''''''''''''''''''''
+..................................
+-------=H---H--------==--=-----===
+        C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-- -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOMOMMOOOOOMMMOOOOMMMMMOMMMO
+X+XXX+XXX+XXXXXX++X+XXXXX+X+XXX++++=       -+======-=+======+++==-==--=------ --- - -  -----   ----     -   -
+'''''''''''''''''''''''''''''''''''
+..................................
+-=---=---=------==-=-----=-=H-H==
+                            C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1=   XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMMOOMMOMMMOMOOOOOOOMOOMMOMOMOMOMM
+X+XXX+XXXXXXXXXXXXX+X++X+XXXXXXXX+++       -==+===--=-=-=-=======-------= --  --  -   - --=---- --  - - - -
+'''''''''''''''''''''''''''''''''''
+...................................
+-=---=--H-----H----=-==-=--------=
+        C     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ=   =AOOOOOOOOOOOOOMOOOOOOOMOOOOOMOOOMOMOMOMOMMMOMOMOOOOOMMOMMMMOOOMOMM
+XXXXXXXXXXXXXXXXXXXXXXX+++XXXXX+++++        ==++===-==--- --=---= ----- --- - - - -   - - -----  -    --- -
+''''''''''''''''''''''''''''''''''''
+...................................
+H-H-H---H---H-H--------===----H===
+C C C   C   C C               C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)-  -1OOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOMOOOMOMMMOMMOMOOOOMMMMOMMOOOMMMM
+X+XXXXXXXXXXXXXXXXX+X+++XXX+++X+X+++-       ===-+++====-=-- - =----==-=-===-- --- -   -  - ----    -  ---
+''''''''''''''''''''''''''''''''''''
+....................................
+-=----H-H-------H--=-===---===-=-==
+      C B       C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+-  =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOMOOOOOMMOOOOMOMMOOOOMM
+XXXXXXXXXXXXXX+XXXXXX+XX+XXXXXX+X++++-      =++++=+==-=-=-==+=+=+=+=+=+=+-+=-==---- --- -----  ---- -  ----
+'''''''''''''''''''''''''''''''''''''         '
+....................................
+--H-----H---H-=-H----=--=------=-= =
+  C     C   C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ+-  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOMOOOMMMOOOAM
+++X+X+XXXXXXXXXXXXX++XX+X+++XXX++++++-      -=+++-=+=---==+=+=++++==+=+=+==-===-=-- --=-+===+==-- ---   ---
+'''''''''''''''''''''''''''''''''''''                           '
+....................................
+==-=-=-------------==--=-===---=====
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-   XOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOMOOOOOMOMOOOMOOOOOOOOOOOMMAMMMAA
++++XX+XXXXXXX+XXX+X+X+X+XXXXXXXXX+++++       -+==-==+-=-==+=+=+=+==++==-+ - - =-=-- - ++= =+++++++=--
+'''''''''''''''''''''''''''''''''''''                           '                           '''''
+.....................................                                                       ... .
+ ==--=------H=---=-=-=-=---------====
+            C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)+-  -AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMO
+++++X++XXXXXXXXXXXXXX+XXXXX+XXXXXX++++        =++=+=+===+++++++++++++++++=+=+===+++++++++++++++++++++=+---  -
+''''''''''''''''''''''''''''''''''''''          '       ' ' ''''' ' '''''       '''''''''''''''''''''
+.....................................                          .                 .. . ... .........
+====-==-H-HHH---H----=-----=H-----==                                                  = = === ====
+        C CCC   C           C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)-  -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMM
+++++++++XXXXXXXXX+X+XXX+XXXXX+XXX+X+++=       +++++++=+++++++++++++++++++=+=--++++++++++++XXXXXXXXX+++++=--
+''''''''''''''''''''''''''''''''''''''        ''''  ' ''''''' ' ''  ''''       '''''''''''''''''''''''''
+......................................          ..      ....        . .         .......................
+========----H---H=-=---=-----=---=-==                    =                       = ==== ==---------== =
+            C   C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ=-  =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+++++X+XXXXXXXXXXXXXXXXXXXXXXX+X++++++       +++++++++++++++++++++++++++++-- ++++++++++XXXXX+++XXXXXX+++==-=
+''''''''''''''''''''''''''''''''''''''         '''''''''''''''''''' ''''''      '''''''''''''''''''''''''
+......................................         ..............   .   .....       ........................
+H=====-=--------H---H----------=H=====           =     =====                    ========-----===--HH--=
+C               C   C           C                                                                 CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+-   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX++XXXXXXXXXXXXXXXXXX+X+X++XXXXX+++=      =+++++++++XXX++++++++++++++++---++++++X++++++++++++XXXXXX++++++
+'''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''      '''''''''''''''''''''''''''''
+......................................         ...........................      ............................
+HHH--==---------------H--=-=-==-----=          ==== ====H--==== = == = =         ===-============-HHHH-==
+BBB                   C                                 C                                         BBBC
+V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXX+++XXXXXXX+X+X+X+X+X++XX+XXX+++++      =+XXXXXXXXXXXX+++++++++++++++=--++++++++++++++X+++++XXXXXXX+X++
+'''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''      '''''''''''''''''''''''''''''
+......................................         ...........................      .............................
+HHHHH--===--H----=-=-=-=-=-==--=---===          ----HHH-HHH-====== =  ===         ====== == -=====HHH-H--=-==
+BBBBC       C                                       CCC BCC                                       CCC C
+V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=-  MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXX++XXXXX+XXX+X+XX+++XXXXXXX+++++=-      +XXXXXXXXXXXXX+X++++++++++++===++++++++++++++XXX++XXXXXXXX+X+X
+'''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''    '''''''''''''''''''''''''''''''
+.......................................        ...................... ...     .   ...........................
+HHHHH---==--H--=---=-=--===---H---===           -HHHHHHHHHHH-=-== =                == =  ===H--==-----HH-=H=H
+BBBBB       C                 C                  CBCBBBCBCCC                                C         CC  C C
+VVV
+A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA+   +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX++++XXXX+X+XXXXXXX+X+XXXXX+X+++=      +XXXXXXXXXXXXX+X+++++++++++++++++++++++++XXXXXXXXX+XXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''' ''''    '''''' ''''''''''''''''''''''''
+........................................        ................... . . .         .   .......................
+HHHHHHH--====---H=-=H------=-=-----=-==         -HHHHHHHHHHHH=-===                    ==--HHHHH--=--H-H-H---H
+BBBBBCC         C   C                            CBBBBBBBBBCC                             CCBCC     C C C   C
+VVVVV                                               V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)=- -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXX+++++XXXX++XXXXX+++XXXXXXXX+++++-      XXXXXXXXXXXXXX++X++++++++++++++++=+=+++XXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''' ''    ' '    ''''''''''''''''''''''''
+........................................        .....................                ........................
+HHHHHHHHH== ==----==-----===----H---===         HHHHHHHHHHHHH-==-==                   =-HHHHHHH-----H-HHH-HHH
+BBBBBBBBC                       C               CCBBBBBBBCBCC                           BCBCBCC     C CCC CCB
+VVVVV V                                           VVVVV V
+                                                    A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-  ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+++X+X+++X+XXX+++++X+XXX++X+++-      +XXXXXXXXXXXXXXXXXX+++++++++++==--=+++XXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''       '''''''''''''''''''''''''
+........................................        .......................   . .       .........................
+HHHHHHHHHH-===-=-===-=---=====-=---==-=         =HHHHHHHHHHHH-H----== =              =HHHHHHHHHHHHHHH---HHHHH
+BBBBBBBBBC                                       CBBBBBBBBBCC C                       CCCCBBBCCCCCBCC   CCBCB
+V V V V V                                         V VV                                                      V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)-   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXX+++X+X+++++X+++++++XXXX+++++++=      +XXXXXXXXXXXXXXXXXXXXXX+XX+++++++++++XXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''  '''''''''''''''''''''''''''''
+.........................................       ..............................    ...........................
+HHHHHHHHHH-===-=-=====-== = ==----======         -HHHHHHHHHHH-HHHHHHH--=--= =     ===-HHHHHHHHHHHHHHH-HHHHHHH
+BBBBBBBBBB                                        BBBBBBBBCCC CCBBCCC                 CCBBBCCCCCCCBCC CCBBBBB
+V V                                                 V                                     V             V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=-  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXX++++++++++++X+XXXXX+X+XX++++++-     -+XXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.........................................        ............................ ...............................
+HHHHHHHHHHH-= ==========-=-----=-=--====          HHHHHHHHHHHHH-HHHHHHHHHH-     ===-HHHHHHHHHHHHHHHHH-HHHHHHH
+BBBBBBBBBBB                                       BCBCBCCCBCCCB BBBBBBBBBC          CCBBBBBCBCBCBCBCB CCBBBBB
+VVV V                                                             VVV                                   V   V
+A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)=- =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+++XX++X+X++XX+XXXXXX+X++++++-      ++XXXXXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........................................        ...........................................................
+HHHHHHHHHHHH-===--==-=-==--=------=H======        =-HHHHHHHHHHHHHHHHHHHHHH-=  = -HHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBBBBBBBCBC                       C                CCCCCBBCBCCCBBBBBBBBBB       CCBBCBCBCCCCCCCBCBCBCBBBBBBB
+V V VVVV  V                                                        VV   V                               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+   1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXX+X+X+++++X+X++XXXXXXX++X++++++-      ++XXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........................................        ...........................................................
+HHHHHHHHHHHHH=-=-=====-=-==-----H-==-====         ==--H-HHHHHHHHHHHHHHHHHHHH-=--HHHHHHHHHHHHHHHHH-H-H-H-HHH--
+BBBBBBBCBBBCC                   C                     C BCBBBBBBBBBCCCCCBCCC    BBBBBCBBBBBBBCBCC C C C BCC
+  V V   V                                                 V   V V       V               V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)-  =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXX++++++++X+++++XXXXXXXXXXXXX++-      +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..........................................        ...........................................................
+HHHHHHHHHHHHH-========-=====--H------H---=        =-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BBBCBBBBCCBCC                 C      C              CCCCBBBCBBBBBBBCBCBBBBBCCCCBBBBBBBBBBBBBBBBBBBBCBBCCBCBCC
+    V                                                   V     V       VVV         VVV VVVV  V
+                                                                                      A A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ+   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+++++X+X++XX+XXX+XXX+XXXXX+++      ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...........................................        ..........................................................
+HHHHHHHHH--HH--=====-=-==--=--H=---=H-H--==        =HHHHHHHHHHHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+BCCBBCBBC  CC                 C     C C             CCCBBBBBBBBCB CCBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCBCC
+    V                                                   V V             V V        VV VVVV    V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-  XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXX+XXXXX++++++X++X+XXXXXXXXXXXXXX+++=      +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................       ..........................................................
+HHHHHHHHH-=-HHHH======-==-=--H--H-H-H----=         =HHHHHHHHHHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHH-HH-
+BBBCBCBBC   BBBC             C  C C C               CCBCBBBBBCBBCC  BBBBBCBBBCBBBBBBBBBBBBBBBBBBCCC BCBCC CC
+V             V                                          VV               V V       V V VVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ=  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+++++++++XXXXX+XXX+X+X++++++      =XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++
+'''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+............................................        .........................................................
+HHHHHHHHHHH-HHHHH=  ======--H--=--H=-=-=====        -HHHHHH--HHHHHHHHHHHHHHHHHHHHHHHHHHHH-HHHHHHHHH-HH--H--==
+BBBBCCBCBCC CBBBC           C     C                  CCCBBB  CBBBBCBBBBBBBBBBBBBBBBBBBBBC BCBCCCBCC CC  C
+              V                                         V                 V V     V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO)-  ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXX++++++X+XXX+XXXXXXXXXXXXX+++-     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X+X+XX++X
+''''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.............................................       .........................................................
+HHHHHHHHHHHHHHHHH-  = ==-=---=H-------H----==       -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H-HHHHH--=-=-=--==-
+BBBBBCCCCBBBBBBCB             C       C              CBBBBBCBBBBBBBBBBBBBBBCBBBCBBBBCCB   C CCCCB
+V V       V                                             V     V V     V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+XXXXXXXXXXXX+++++++X+X+XXXXXXXXXXXXXX++-     +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+
+''''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................      .........................................................
+HHHHH-=-HHHHHHHHH--   ====-=-=H-H-------H---==       -HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH---H-HHHHH-H---------=
+BBBBC   BCBCBCCBB             C C       C             BBBBBBBBBBBBBBBBBBBBBCBCBCBCBCBCC   C CCCCC C
+                                                        VV  V   V   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-  MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX++XXXXXXXXXXX+++++++X+X+X+XXXXXXXXXXX+X++      +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+..............................................       ........................................................
+HHHHH-==H-HHHHHHH--==   ==-=-=-=HHH---H----=-        =HHHHHHHHHHHHHHHHHHHHHHHHHHH-H-HHHHHHH---HHHHH-HHHHH-HHH
+BCBBB   C BBCCCCB               CCC   C               BCBBBBCCBBBBBBBBBBBCBBBCCCC B BBBBBBC   CCCCC BCCCC CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=- -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+XXXXXXXXXXXX+++++++++++XXXXXXX+X++XXXX++-      +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''''
+...............................................       .......................................................
+---HH-=-HHHHHHHHHH-= = == ====-HH---H=-==----         =HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH-H-H-H-H-H-HHHHHHHHH
+   CC   CCBCCCBCBC             CC   C                  CCBBCBCBBCCCCBBCCCCBCBCCCCCBBBBBCB C C C C C BCCCCCCCC
+                                                                                   V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-  )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXX+++++X+XXXXXXXXXXXXXXXXX+++      ++XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................      .......................................................
+H--HH---HHHHHHHHHHH--=  ==-=------H----------==       ==HHHHHHHHHHHHHHH=H-HHHHH-HH--HHH-H-H-HHHHHH-----HHHHHH
+B  CC   CCCCBCBCCCC               C                     CCBCBBBCBCCCCCC C BCBBC CC  CCC C C BCBCCC     CCCCBB
+                                                            V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXX+X+X+++++++++XXXXXXXX+XXXX+X++++     ++XXXXXXXXXXXXXXXXXXXXX+X+X+X+XXX+XXXXXXXXXX+X++XXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''''
+................................................       ......................................................
+HHH-H-H-HHHHH-H-H=-=-=  = ====----H---=----=-==        =--H-H-HHHHH-H-H-----H=-=-=-=---=--H-H-H---=-==----H--
+BCC C C CCCCB C C                 C                       C B BCCCC C C     C             C C C           C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-  MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX++++++++X+XXXXXXX+X+X+XXX++      +XXXXXXXXXXXXX+XXXXXX++XX+XXXXXX+XXXXXXXXX++++++XXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''      ''''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................      ......................................................
+HHH-HHHHH-HHHHHHHHHHH-= ==  ==-=-------=-=-=---=        --H-H-H-HH--H=H-H-H-==--=---HHH=---HHH---======------
+BCC BCCCC BCBCCBCCCCC                                     C C C BC  C C C C         CCC    CCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=  =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXX++++++XXX+XXX+X+XXXXXXX+++     =+XXXXXXXXXXXX+XXXXXXX+XXXXX+XXXXXXXXXXXXXX+++++XXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................       .....................................................
+HHH-H-HHHHH-HHHHHHHHH-H-= ====---=---=-=--H-H--=        =---HH--H-H--=H-HHH--=-----=HHH-H--HHHHHHH=====-H-HHH
+BBC C CCCCC CCCBBBBCC C                   C C               BC  C C   C BCC         BCC C  CCCBCCC      C BCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1   1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXX++++++X+XXXXXXXXX++XX+X+++      ++XXXXX+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X++++XXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''
+.................................................       .....................................................
+HHH---HHHHHHH-HHHHHH---- =  ==-=--------H==--=-=         =-----=-=----HH--H--H-------HH---H-H---H=-  ==-H----
+BBB   CCBCCBC CCBBBC                    C                             CC  C  C       CC   C C   C       C
+V
+A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+- -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX++++++++++++XXXXX+XXXXXXXX+++     ++X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''''
+..................................................       ....................................................
+HHHHHHHHHHHHHHHHHHHHH-== = = =====----H=HH--H---=        =-=H------HH--HHHHHH-HHH-H-----HHH---H-H--=--HHHHH-H
+BBBBBCBBBBCCCCCCBBBCC                 C CC  C               C      CC  CCCBCC CCC C     CCC   C C     CCCCC C
+V VV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=  MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXX+++++++++++X+XXXXXXXXXXXXX+X++-     +X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''      ''''''''''''''''''''''''''''''''''''''''''''''''''''
+...................................................      ....................................................
+HHHHHHHHHHHHHHHHHHH--==  =    ==-=------HH--H--=-         -=-HHHH-HHH-H-HHHHHHHHHHH-----HHHHH=HHH-HH--H---H--
+BBBBBBBCBBCCCBBCBCB                     CC  B                CBCC CCC C CCBCCCCCCCC     CCCCC CCC CC  C   C
+VVVVV
+AAA
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)  +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+XXXXXXXXX+XXX+++++++++++++X+X+XXX+XXXXX+X++X++     =++XXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXX+XXXX++X
+'''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''''
+....................... . .........................       ...................................................
+HHHHH=-HHHH----=---====        =-=-=---=HH---=-==-        ==--HHHHHHH-HHHHH-H---HHH-H--=H-H-H---HHH-H=----==-
+BBBBB  CCCB                             CC                    CCBCCCC CCCCC C   CCC C   C C C   CCB C
+VVV
+  A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-  MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+XXXXX+X+X+++XXXX++++++++++++X++++XX+XXXXX+XX++      ++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++XX+XXXXX+XXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................      ...................................................
+HHHHH=-HHHH=-=-===----=== =  = ===-====--=---HH=H-=        =--HHH-HHH-HHHHH-HHH-HHHHHHH---H==--=--H--=-------
+BBBBC  CCCC                                  CC C             CCC CCC CCCCC CCC CCBCCCC   C       C
+V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXX+++XXXXX+++++++++++++++++++XXXXXXXX++=     -+++++XXXXXXXXX+XXXXXXXXXXXXX+X+X+++XXX+X+X+XXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................        .................................................
+HHHHH-HHH-H-H--===--H--=  = =   = ========--HHH---==        = ==HHHHH-H-H=--HHHHHHHH---=-=-===---=-=-=-------
+BBBBC CCB C C       C                       CCC                 CCCCC C C   CCCCBCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1-  XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++X+XXXXXXX+X++-     -++++XXXXXXXXXX++XXXXXXXX++++++XXXXXXXXX+++X+XXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''
+....................................................        .................................................
+H-----HHHHH---H-H-H-H-= = == =     =====-=-------=-           ==-HH-H-HHH-==H-H-H---======H--HH---- ==-=--H-H
+B     CCBCC   C C C C                                            CB C CCC   C C C         C  CC           C C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX+  +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXXXXX+XX++++++++++++X++XXXXXXX+X++-     -+++++XXXXXXXX+++XXXXXXX+X+X+++XXXX+++++++XXXX+XXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................       .................................................
+==---HH-HH----HHHHHHH---=--=====  =  ==-==----H--=-=         == =--------===HHHHH--=-=-===----=======----=-HH
+     CC CC    CCCCCCC                         C                             CCCCB                          CC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)- -XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++XXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++++X+XXXXXXXXX+++      ++X+++++XXXXX+XXXXXXXXX++++X++X+XXXX+XX+XXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''''''''
+.....................................................       .................................................
+==H-H-HHH---HHHHHHHHH-H---H--==== = ====-=H-H-HHH-H=        ==- ====-----=H-H-H-H--====-==-=----=--=----H---H
+  C B CCC   CCCCBCCCC C   C               C C CCC C                       C C C C                       C   B
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=- -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++++++++XXXXXXXXXX+++=     ++X+++++++X+XXXXXXXXX++XX+++X+X+XXX+X+++XXXXXXXXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................       ..... ..........................................
+--H-----HHHHHHHHHHH---H---------==   ====---H-H-H--==         -==   ==-=----HHH--==--===-=-=---=-===----H----
+  C     CBBBBBBBBBC   C                     C C C                           CCC                         C
+          V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX++XXXXXXXXXXXXXX+X++XXXXXXX+++++++++++XXXXXXXX+X++     -+X+++++++++X+XXXXXXXXXXXXX+X+XXXXXXXXXXXXXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''      ''''''''''''''''''''''''''''''''''''''''''''''''
+......................................................       ................................................
+HHHHH==-HHHHHHHHHHH--=-==-H-H-H-= =  === ==-HHH-H-H=-=        -==== =  =-=H-H-H--------=-=--H-H-H-HHHHH-H-H--
+CCCCC   BBBBBBBBBBB       C C C             CCC C C                       C C C             C C C CCCCC B B
+          VVV V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1+- -MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX++XXXXXXXXXXXXX+++++X+XX++++++++++++++XXXXXXXXX++=      ++++X+++++X+X++XXXX+XXX+++++++XXXX++XX+XXXXXXXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''
+................................... ...................       ....... .......................................
+-HHHH-==-HHHHHHHH----= = =-=H-==    =   ====-HHHH-H--=        ====-==  =-=-==----=---==== ==H-H-==--=-------H
+ CBCC    CBBBBBBB           C                CCCC C                                         C C             C
+          VVV
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ)---)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXXX+++XXXXXXXXXXXX++++++XXX++++++++++++XXXXXXXXXXX+++      ++++++++++XXX+++++X+X+X+++++X+X+XXXXX+XXXX++XXX
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''''
+................................... ...................       ...............................................
+HHHHHH===-HHHHHHHHH--==== =---        = ==----H-----H==         ====  ==---=====-=-=-= ===-=-=-----=H---==--H
+CCCCCC    BBBBBBBCC                           C     C                                               C       C
+          VVV V
+            A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)-  MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++XXXXXXXXXXX+++++++++++++++++++++++++XXXXXXXXXX++=      +++X+++++X+X+++++X+X++X++XXXXX+XXXXXXXXX+X+XXX
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''''''
+......................... .  ...... ....................       ..............................................
+-----===--HHHHHHH-H====               ======---H----H-=         ==-== ==-=-=====-=-==-==-----=--H-H-HHH=-=--H
+          CBBBBCC C                            C    C                                           C C CCC     C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=  =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XXX++XXXXXXXXXXX++++++++++=++++++++++++++++XXXXXXXXXX+++-     -+XXX++++X++++++X++X+X++XXXXX+XX+XXXXXXXXX+XXX
+''''''''''''''''''''''''' '   '''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''
+.......................       ...........................       .............................................
+=---==--H-H-HHHH-==                 =    ===--HHH--H--==        =---====-== ===-==-=-==-H---=--=---------=--H
+        C C BBCC                              CCC  C                                    C                   B
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)-  +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++XX+X+XXXXX+X+X++++=++++++++++++++++++++++++XXXXXXXXXXXX++      ++++++++++++++X++++++XXXXXXX++++X+X+X+XXXXXXX
+''''''''''''''''''' '''''''''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''''
+..................    .     .............................       .............................................
+=--=-=HHHH-=H=-=                    = = == =--H-HHH-H---         ============ -======-------====-=-=-=-------
+      CCCC  C                                 C CCC C
 OOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)-  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+-++XXXXXX++++++++=+ =+++++++++++++++++++++++XXXXXXXXXXXX++-     -+++++X+X+XX++XX+XX+++X+X+X+X+XXXXX+XXXXX++XX
+ ''''''''''''''       '   ' ''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''''
+ ..............             ..............................       ............................................
+  =-H-HH-=                   =  = =     === --HHH-H-H---=         ====-=-=--==--=--===-=-=-=-=-----=-----==--
+    C BC                                      CCC C C
 =ZOOOOOOOOOOOOOMOOOXMMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=  )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  ++XXX++++++++ ++-   += -++++++++++++++++++++XXXXXXXXXX+++=     =+++++++XXXXXXXXX+++++XX+X+XXXXXXXXXXXXXXXXX
+  ''''''''''                '''''''''''''''''''''''''''''''       '''''''''''''''''''''''''''''''''''''''''''
+   .......                  ...............................       ...........................................
+   =---==                        ==== =   = ==H-H-H-H-H-==         ======---------=====--=-=--------------H-H
+                                              C C C C C                                                   C C
 --AOOOOOOOOOOOOOOOOZXMOOAXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)- -AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+   +XX+++=+=+-==++-   ++   -++++++++++++++++++XXX+XXXXXXXX++      ++++++++X+XXXX+++++++X+XXXX+XXX+XXXXXXXXXXX
+   '''''                      ''''''''''''''''''''''''''''''      '''''''''''''''''''''''''''''''''''''''''''
+   .....                      ..............................      ...........................................
+    --=                         =        =  ==--H=H-H-H---         === == -=----== ====-=-H--=---=----H-H----
+                                                C C C C                                   C           C C
 1 -ZOOOOOOOOOOOOOOOOOMOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    ++++--+-==--+++-- ==--  =+++++++++++++++++XXXXXXXXXXX+++=     =++++++++++XX+++++++++XXXXXXXXXXXXXXXXXXX++
+    '''         ' '           ''''''''''''''''''''''''''''''       ''''''''''''''''''''''''''''''''''''''''''
+    ...                       ......... ....................       ..........................................
+    ==                            = ==     ===--H-HHHHH-H==         = =======--===  ====----H-----H-HHHHH-H==
+                                                C CCCCC C                                   B     C CCCCC C
 O+  1OOOOOOOOOOOOOOOOMOMOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM+  AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=    -+-===-+++++++=- - -   -+++++++++++++++++XXXXXXXXXXX++++=     +++++++++++++++++++++++XXXXXXXXXXXXXXXXXXX
+                ''            '''''''''''''''''''''''''''''''      ''''''''''''''''''''''''''''''''''''''''''
+                              . .............................       .........................................
+                                 === =  ======HHHHHHHH---==         ========= = = = = ====--H-H-H-H-HHHHHHHH-
+                                              CCCBBCCC                                      C C C C CCBBBBCC
 OO-  -AAOOOOOOOOOOOOOAMAAX11MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZ=ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++=      ----=+++++++-        -=+++++++=-++++++XXXXXXX+X++XX++++-    +++++++++++-++++++++++++++XXX+XXXXXXXXXXX
+'             ' '               ''''''  '''''''''''''''''''''''     ''''''''''' ''''' ' '''''''''''''''''''''
+.                                 ...   .......................     ....  ....   ..     .....................
+=                                 =       ====--HHH--=-==--==       ===   ===             ====---=--H-HHHHH-H
+                                                CCC                                                 C BBBBB B
 OO)   =XMOOMMOOOOOOOOAOAOM11MOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOZZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+       =-  -==+++-- - -    ---==+++=- =+++X++XXXXXXXXXXXXX++++-   ++++=-++++=-==++++++=+++++++X+X+++XXXXXXX
+''              '                 '      ''''''''''''''''''''''     ''''   '''    ' '''     '''''''''''''''''
+..                                        .....................     ...     .       .       .................
+-=                                        = -==-H-----------==        =                     = ==-=-===-HHHHHH
+                                                C                                                      CBBCBB
 OOO=  -)XXOMZ1MOOOOMMAAAOOOOOMOOOOOOOMM1AOOOOOOOOOOOOOOOOOOOOOOOMZZZOOOOOMOOOOOOOOOOOOOOOOOAMOOOOOOOOOOOOOOOO
+X+=       -    -==-     =--=+ =-==+==    -++++X++XXXXXXXXXX++++=    -+++= =++++=++++++++++-  +++++++X+XXXXXXX
+''                                        '''''''''''''''''''''      '''    ''   '''''''''    '''''''''''''''
+..                                        ....................        ..    .     ......      ...............
+-                                         ====-==----------==         =           = ==        ======-=----HH-
+                                                                                                          CC
 OOO)   -XMOOM1MOMOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1=-)ZOOOOOOOOOOOOOOOOOOOOOOOOZOOOOOOOOOOOOOOOO
+X++       ++   - -+=- -=+++=+====+++++++++++++++XXXXXXX+++++++-     -++++++++++++++++++++++- -++XX++++XXXXXXX
+'''       ''            '          '''' ''''''''''''''''''''''       '''''''''' '''''''''''   '''''''''''''''
+...       .                         ..   ....................         ......... ..........    ...............
+H=                                        ======H-H--H-=====           === = =    = === ==     =--====-------
+C                                               C C  C
 OOOX    ZOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-  )MOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOO
+XX+      -++=---- -----=+++=+=+===++++++++++++++XXXXXXX++=-==-       +++++++++++++++X++++++=  ++X+X+X+++++X++
+'''       '             ' '       '''''''''''''''''''''''            ''''''''''''''''''''''   '''''''''''''''
+...                                 ....  ...............             .....................   ...............
+H-                                  ===     ====HHH----=              === ===     ==-=====     =-=-=-=====-==
+B                                               CCC
 OOO)     1OOMOOOMAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXXAAAX+    MOOOOOOOOOOOOOOOOOOOOOOO))OOOOOOOOOOOOOOO
+XX+       == ---    --=++++++++++++++++++++==+++X+++X+++-            =+++=++++++XXX+XXXXX++=  ++XXXXXXX+X+X+X
+'''                     ''''''''''''''' '''   ''''''''''              '   '''''''''''''''''   '''''''''''''''
+...                     ......  ..... . .     .........               .   . ...............    ..............
+HH                        =                   = -===-=                      = ==---=-HH--=     =--H----=-=H=-
+BC                                                                                   CC           C       C
 OOO)     +OOOOOOX1OOMOOOOOOOOOOOOOOOMOOOOOOOOMOOOOOOOOOOOMZ+)))=-   AMOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOO
+XX+       =+==+=  -- -=-++++XX+++++= -++++++= ++++X++++++             ++++++++++XXXXXXXXX+++ +++X+X+X+++X+X++
+'''                     '''''''''''    '''''   '''''''''                '''''''''''''''''''   '''''''''''''''
+...                     ..........      ....   .........                . .................   ...............
+H-                       ===--==        ==       =-==  =                   ==  =H-H-H-H--=      -=-=-===-=- =
+B                                                                               C C C B
 OOO=     -1MOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZ)=----   ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+=         ++++= ----+++++XXXXX+++++++++++++=++++XXXX+++            =+++++++++++XXXXXXXXXX++X+XXXX+XX+XXXX+X
+''           '''      '''''''''''''''''''''''  '''''''''              '''''''''''''''''''''''''''''''''''''''
+..           ...       ......................   ........              .......................................
+-=                      = =-----==    =====       ----                 ======== =-H-H-H-H--==-=----=--=----=-
+                                                                                  C C C C
 OOA=-     )AOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)=  --    1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++          -=+++=--- ++++++XX++++++++X+++++++++++XXX+++-            =+++++++++++XXXXXXXX+X+XXX+X+XX++++++XX+
+''            '''       ''''''''''''''''''''''  '''''''               '''''''''''''''''''''''''''''''''''''''
+..            ...       ......................  .......               ......... .............................
+=              =          = --= === ==-= == =   ==---==                =======  =--HH---H=-=---=-=--======--=
+                                                                                   CC   C
 OOMZ)     ZOOOOOOOOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX)-  ----  +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++         -+=++++++--   -+++++++++++++++++++++++XXXX+++-            -+++++++++++++++XXXX+XXXXXXXXX+++++X+XXX
+''            ''''          ''''''''''''''''''''''''''''              '''''''''''''''''''''''''''''''''''''''
+.             ...           ...........................               ......... .............................
+                             = =    ===== = === =----=                = ======   ====----=----H-H--==== -=---
+                                                                                              C C
 OOOOAZ    1OOOOOOOOOAZXAOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1=-    --  )OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++-       =++=+++=-    --- ++++++++++++++++++++X+X++++-             =++++++++X+XX++XXX++X+XXXXXX+X+X++++++++
+''          '' '''           '' ''''''''''  '''''''''''               '''''''''''''''''''''''''''''''''''''''
+..          ..  .                   .....   ...........               .......................................
+                =                             ==-=-===                ===   ==-=--==---==-=----H-=-=-========
+                                                                                               C
 OOOOOM=   =MOOOOOOOOMZMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1++- -- --  =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++-       ++++++--   -+++=+++=++++++++=---+++++++XX++-             -+X++++++++++++++++++++XXXXXXX+XX++X+++X
+'''         '''         '''       '''''      ''''''''''               '''''''''''''''''''''''''''''''''''''''
+...         ...         ..          ...      ..........               .... ..................................
+ =          ==                                = ===--=                =-=   ====== =========--H----=--==-===-
+                                                                                              C
 OOOOOOO)- -ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZOOOOOOOOOOOOMXMX)====--  =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++++=-     ++++++=---++X++++++=-++++++=-   -+++++++++++              ++++++++++++++X++++++++X+XXXX+X+XXXXX++
+'''''       '''''      ''''''     ''''        '''''''''               '''''''''''''''''''''''''''''''''''''''
+.....       .....      .....      ...         .........                ......................................
+-==         ===         -==                   == ======                   ========= -===    =-=----=-=-----==
 OOOOOOOO+--+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXXOOOOOOOOOOOOAXMMMMZ1+==-  XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X++++++-    ++X++++-=+++XXX++++==++++++==   -+++++XXX++=               =++XX++++X+++X+++++++++X+XX++X+++XXX++
+'''''''      ''''''   '''''''''  ''''''       '''''''''                 '''''''''''''''''''''''''''''''''''''
+......       .....    .........   ....        .........                 .....................................
+H===          -===    ==HH-==       =           = ---==                  =--====-===-=========-=--==-===---=
+C                       CC
 OOOOOOOOX+-=ZMOOOOOOOOOOOOOOOOOOOOOOOOOOOX)1OOOOOOOOOOOO+=- -XOOOM)-- -OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++++++      ++XX++++X+XXXXX++++++X+++++   -=+++++++++-      ++-      -++++XX+++XX+++++++++++X+X+++++++++X++
+'''''''       '''''''''''''''''''''''''       ''''''''         '        '''''''''''''''''''''''''''''''''''''
+.......        ........................       ........                  .....................................
+H-===           --   =-=--H--==   =-=         = ======                   ===--===--========  =-=-===== ===-==
+C                         C
 OOOOOOOOOX11MAMOOOOOOOOOOOOOOOOOOOOOOOOOOO1+ZMOOOOOOOOOOA+- =1MOOOMX=  =OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX++XX++-      +XXX+X++++XXXX++XX+XXXX+++-    ++++XX+++=       -+-      ++++++X+X+++X+X++++++++++++++++++++XX
+''''''''        ''''''''''''''''''''''''      '''''''''                  ''''''''''''''''''''''''''''''''''''
+.......         .......................       .........                  ....................................
+H-==--=         ---=-====-HH-==--=HHH-=         ==--=                    =====-=-===-=-==     ===== ==  ===--
+C                         CC      CCC
 OOOOOOOOOMXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1+ZOOOOOOOOOOM)- =MOOOOOM1=  =MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+X+X++   =-++XXXXX+++++XXX+++X+XXXXX++=    =+++X++++-      +++=-       ++++X+++++++X+X+++++XXX++++++++++++
+''''''''       ''''''''''''''''''''''''''      '''''''        '''         ''''''''''''''''''''''''' '''''''''
+........        .........................       ......        ...         .........................  ........
+HH-=-=-=        -H---===  HH-===-=HHH--         ==-==          =            ==-==  ===-=-=====---=   = ======
+BC               C        CC      CCC
 OOOOOOOOOOAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM)1AOOOOOOOAXX)=-1OOOOOOOO1- -=OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX++++++-  ++++XXXXX++=++XXXX++XXXXXXX+++=    -+++++-       =++X++=-     +++XX+++++++++++++++X++++-++++++X++
+'''''''''   ' ''''''''' ''''''''''''''''''      '''''         '''''        '''''''''''''''''''''''   ''''''''
+........    . ......... .................       .....         ....          ....... ..............   ........
+HH-====         -----=    -HH-==---H---=         ===          ==-           =--===   ====== ==-===      ==-==
+BB                         CC      C
 OOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOZ=---=)MOOOOOOOOO)---AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX++++++ -=++++++++++++++XXX+++++++++X++++-- =+++X+=        +++++++=-     +++X++++++++++++++++++++++++++++++
+''''''''    ''''''''''''''''''''''''''''''     '''''         '''''''        '''''''''''''''''''''''''''''''''
+........    .............................       ....          ......        ....... ................. .......
+HH-=          = ==   =====---====  ===-==       ==-           ====          ==-==== ========  ====      =====
+BC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1-    )OOOOOOOOOOM) -AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX++++++=-+++++++-=++++++++++++X++++++++=+===++++++        ++X+X+++++     =++++++++++X++++++=+++++++++++++++
+'''''''''   '''''   ' '''''''''''''''''''      '''''         ''''''''       ''''''' '''''''   '''''''' ''''''
+........    .....     ............. ....       .....         ........       ......  .......   .......    ....
+HH-=        =         =  == ====-=   ===        ===          =-=-= =        =====    =-=       =  ==      = =
+BC
+V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOA)     ZOOOOOOOOOOOM+-ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+++++++--+X++++-====++++++X+++++++++++++++++++++++        ++X+XXX++++    -++++++++++X+++++++++++X++++++++++
+''''''''   '''''      '''''''''''''' '''' ''''''''''        ''''''''''      '''''''''''''''''''''''''''''''''
+.......    ....       .............  ..   .   .....         ..........      ...............  ................
+HH==        -=         =   =-=====             ===           =-=---==       =====    =-  =     ===-==     ===
+BC
 OOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX=   -AOOOOOOOOOOOOOX=-)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+++++=-=+X+++++=  -=+++++++X+++++=====--==++++++=       =++++X+X++++-    ++++++++XXX+++++++X+XXXXXX+++++++
+''''''''   ''''''       ''''''''''''          '''''         '''''''''''      ''''''''''''''''''''''''''''''''
+......      ...         . .........           .....         ..........       ................................
+HH-=        -==             ==-===              =           ====-=-==            ===---==== ==-=H---H-=======
+BC                                                                                              C   C
+V
 OOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOMOOOOOOOA=  =+OOOOOOOOOOOOOOOX+-OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+++++-++++++++++==- --==+++++++++=+==--- -+++++-      =+XXXXXXX++++=-   -+++++++X+++++++X+XXXXXXXXX++XX++
+''''''''   '''''''''        '''''''''         ''''         ''''''''''''      ''''''''''''''''''''''''''''''''
+.......     .... ...        ........          ...          ............      ................................
+HHHH=       ===   =           ==  ==                        ----H--===           ===-== ====-=--HHH-H--==--==
+BBBC                                                            C                               CCC C
+VV
+A
 OOOOOOOOOMOOOOOOOOOOOOOOOA1ZMOOOOOOOOOOOMMOOOOOOX11+=---1MOOOOOOOOOOOOOOOMZ+=1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+++== =++++++++++=+=-    ++++++++++=  -===+=          =++++XX+XXX++++     -+++++++++++++X+XXXXXXXXXXXXX++
+'''''''    ''''''''''         '''''''''                     ''''''''''''        '''''''''''''''''''''''''''''
+......     ..  ....           ...   .                       ............         ............................
+HHH-=                         =                             ===--=---=             == ======-=--H---H-H----==
+BBB                                                                                             C   C C
+VV
+A
 OOOOOOOOOMOOOOOOOOOOOOOOOOOMOOOOOOOOOOO11ZOOOOMX=---   -OOOOOOOOOOOOOOOOOMA+  -1OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX+++++= =++-+++++==-=++== --=+=-==+=-   =+++          -+++++X+XXX+X++++       =+++++++++++++X+X+XXX+XXXXXX+
+''''''''    '  ''''     '                  ''            '''''''''''''''         ''''''''''''''''''''''''''''
+.......         ...     .                   .            ...............         ............................
+HHH===                                                    =   -=---=-==           =         ==-=-=---=H-H---=
+BBC                                                                                                   C C
+V
+A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMZZOOOOOO)-    -)OOOOOOOOOOOOOOOOOOM)-  -OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++=-+++++++++++===++++=-+==---===   =++++-        ++++XXXXXXX+X++++=      ++++++++++++++++XXX+XXXXX++++
+''''''''  '''''''''''   ' '                '''           ''''''''''''''''        ''''''''''''''''''''''''''''
+.......    .........    .                  ...           ................        ............................
+HHHH-=      =   ===                          =           ===-------=-==           =  ==    =  ==---=--H--====
+BBBC                                                                                                  C
+V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZMMOOOOM1=-- --OOOOOOOOOOOOOOOOOOX)- -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++++++X++++++++++++++++-==+=--===     +++=        -++++++++XX++++++=      ++++++++++++++++++++++X+X++++
+''''''''  ''''''''''''''''''                '''          ''''''''''''''''       ''''''''''''' '''''''''''''''
+.......   ...........  .....                ...           ..............         .. .........   .............
+HHHHH=    ==-==== =       =                   =           =======--====              =  ==      ======-=-====
+BCCCC
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXAMOOOOOOOAX11XOOOOOOOOOOOOOOOOOOMZ---)OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++++XXXX++++++X+XXXXX++++++++=+----   ++++++-     ==++++X+X+X+X+++++      ++++++++++++++++++++++XXX+XXX
+'''''''' ''''''''''''''''''''''''''          ''''           ''''''''''''''       ''''''''''''''''''''''''''''
+.......  ..........................           ...           .............        .. .........................
+HHHH-==   -HH-= ====-=--H-H===  =              =             =-=-=-=-===                 = ==== = ====---=--H
+BBCC       CC           C C                                                                                 C
+V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMZZAOOOOOOMXMOOOOOOOOOOOOOOOOOOOOM+--+OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++++++XX++X+++XXX+XXXXXX++++++++- +=    =++++-   ++++=+++XXX+++X+++++     -=++++++++++X+++++++++++XXXXX
+''''''''''''''''''''''''''''''''''' '          ''       ''' ''''''''''''''        ' '''''''''''''''''''''''''
+....... ........................... .           .       ...  .............          . ........... ...........
+HHHH-==   ==H-==-===---=---H--==                        ==     ---===-===                ===-==     ====HHH--
+BBBC        C              C                                                                            CCC
+V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOMZ1MMOOOMAZOOOOOOOOOOOOOOOOOOOOOOZ+-=AOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++++++++++XXX++X+++XXXX++++++++  -+=-     +==   ++XX++++++X++XXXX++++-     -++++++++XXX+++++++++XXXXXXX
+'''''''''''''''''''''''''''''''''''                    ''''''''''''''''''''       '''''''''''''''''''''''''''
+....... ...... .................                       ....................        ..........................
+HHHH-=   ===    ---==-===-HHH==                        =HH=   ==-==----===          =  ===---===   ===--HHHHH
+BBBB                      CCC                           BC                                              CCCCB
+V V
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOMAAAOOOOOOOOOOOOOOOOOOOOOOM)+-ZMOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX++++++++++++++XXXX+++XXXX+++=--=---- ----+++-    ++XXXX++++++++X+++++++      ++X+++XXX+++++++X+X+XXX+XXX
+''''''''''''''''''''''''''''''''              '''     '''''''''''''''''''''       '''''''''''''''''''''''''''
+................................               .      ........ ............        ..........................
+HHHH-=  =   =    ==----===HHHH=                        =HH--=  == ==-=====          -===---==     -=-=--H=HHH
+BBBB                      CCCC                          CB                                              C CCC
+VV
+A
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAXZZOOOOOOOOOOOOOOOOOOOOOOOX--)ZOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXXX+++++++++++++++XXXX++XXXXX+++==++++++=---=++-    ++X+++++++++++++++++++-     -++X++++++++++++X+XXXXX+XXX
+''''''''''  '''''''''''''''''''''     '               ''''''''''''''''''''''       ''''''''''''''''''''''''''
+.........   ... .  ..............                      .....................        ......... . .............
+HHH-- =      =     =-HH-==--HHH=                       =H============ =====         =-====        -=--H--=---
+BBC                  BC     BCC                         C                                             C
+V
 OOOOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMAAMOOOOOOOOOOOOOOOOOOOOOOOOM)=-+MOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXX++++++++-++- --+++X+++++++XXXX++=+++++++++=--     -++X+++++X++++++++++++++      -+++++++++++++++++++++++++
+'''''''''   ''     ''''''''''''''''   '''''           '''''''''''''''''''''''       '''''''''''''''''''''''''
+.........          ...............    .               .......................       ....... ............... .
+HHH== =             =-===   =----                      =-=   =-========= ===         ====   = = === ===
+BBC
+V
+A
 OOOOOOOOOOOOOOX)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAAOOOOOOOOOOOOOOOOOOOOOOOOOOOX++ZOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XXXX+++++++=+=   -+++++++++-=+++X++++++++++=+++=   -+++XX++++XXX+++++++++++++-    +++++++++++XX++++++++++-+++
+'''''''''''       ' ''''''    ''''''' '     ''      '''''''''''''''''''''''''      '''''''''''''''''''''   ''
+..........          ...       ......                ........................       ....................    ..
+HH--==  =           =          =-==                  ==--== =---===== === ==        === =  = --==== =
+BC
 OOOOOOOOOOOOOMMMOOOMOOOOOMAMXXOOOOOOOMA=+AOMOOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOA1+ZOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+++++++++=-   --- -----     =++++--     - ==+-  -+++XXXXXXXXX+X+++++++++++++    ++XXXXX+++XX++++++++++++++X
+'''''''''''                    '''                  ''''''''''''''''''''''''''    '''''''''''''''''''''''''''
+..........                      ..                  .........................     ................... ... ...
+H-==    =                                           ==H-HHHH-H-=-===  ======       =-----===--=== ==        -
+C                                                     C BCBC C
 OOOOOOOOOOOXMMOOOOOXZ1AAOOOOOOOOOMXMOOMZ1XOOOOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOM111OOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++++++=   =-==-     ++=+=-=+=   -=    --+==-  +++XXXXXXXX+++++++++X+++++++    ++XXXXXXXXXX+++++++++++++++
+''''''''''                                         '''''''''''''''''''''''''''    '''''''''''''''''''''''''''
+..........                                         ..........................      ..........................
+ == ====                                             HH-HHH--====== ==-======      =-HHHH-----======= =  == =
+                                                     CC BCC                          CCCC
 OOOOOOOOOOOOMOOOOOOXZ+1ZOOOOOOOOOOMOOOOAMMOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX11MOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++X++++++- =++++-     +++++=+==- ----   +++--  ++XXXXXXX++++++++++++++++X+++-    +X+X+XXX+X+++++++X+++++XXX
+''''''''' '              ''''             '       ''''''''''''''''''''''''''''     ''''''''''''''''''''''''''
+  .......                 .                       ..........  ...............      ..........................
+    -===                                          =-HHH-H-=   =  = =======-         -=-=---=-=======-=====---
+                                                    BCC C
 MOOOOOOOOOOOOOOOOOOOMAZAOOOOOOOOOOOOOOOAMOOOOOMAMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO1))AOOOOOOOOOOOOOOOOOOOOOOOOOO
+ -++++++=----=+++++-    -++++++++++----  -+++=   +++X+++X+++=-++++++++X+X+++++-    +++++++++++X+++X+XXXXXXXXX
+  ''''''      '''''       '''             '''    ''''''''''   '''''''''''''''       '''''''''''''''''''''''''
+   .....      .                           ..      .........   ...............       .........................
+    =                                             ==-===-=      = = ==- -== =       = ====  = - ==-=--H------
+                                                                                                      C
 OOOOOOOOOOOOOOOOOOOOOXXXMMOOOOMOOOOOOOOMOOOOOOAXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM1==ZMOOOOOOOOOOOOOOOOOOOOOOOOO
++=++++-==-+=++++++=--     -==- -====--- =++++-  =+XXXXXX+++++=++++++++XX++X+++      ++++++==++++++++X+X+X+X+X
+  ''''        ''                         ''''    '''''''''''' '''''''''''''''       ''''      ' '''''''''''''
+  . .         .                          ...     ..........    ..............                   .............
+                                                  HHH-H-==       ==== --==-=                      ==-=-=-=-=-
+                                                  CCC C
 OOOOOAZAOOOOOOOOOOOOOMA1XXMZAAAAOOOOOOMOOOOOOOAAOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOZ=  )OOOOOOOOOOOOOOOOOOOOOOOOOO
+++++=   +++=++++++=+=           -==-=- -+++++-  ++XXXXXX++++- ++++++++X+++X+++     =++++++++++++++++++++X+X++
+''''      ' '''''                        '''    '''''''''''     ''''''''''''''      ''''''''''  '''''''''''''
+. .           .                          ...    ..........      ..............      ... .....   .............
+                                         =       =HHHH--=         = = -===- =       =             = ====-=-==
+                                                  BCBC
 OOOOOOOOOOOOOOOOOOOOOOAZXZA1XMOOOOOOOOOOOOOOMAMOOOOOOOOOOOOO1ZOOOOOOOOOOOOOOOOX+==AOOOOOOOOOOOOOOOOOOOOOOOOOO
++++==---===-+++++++++-        ----+++++++++=   =++X+XX+++++-  --=+++++++++++++     +++++++++++++++++++X++++++
+''          ''''' '                '''' '''     ''''''''''        ''''''''''''      '''''''''''''''''''''''''
+.             .                      .  ...     .........         ...........       ............... .........
+                                                 =-=--=            ======== =       =   ======= ==  ==-=  ===
 OOOOOOOMMOOMOOOOOOOOOOMZAMOMMMOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOAMOOOOOOOOOOOOOOOOA=-=OOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++==  -= ++++++++++    -   ++++++X++++++=- =+++XXX+++==+-  --=+++++++XX++++    -=+++++X+XXXX+++++++X++++++
+'''           ''' '''            ''''''''''    ''''''''          ''''''''''''       '''''''''''''''''''''''''
+...           ..                 ..........     ......            ...........       . .......................
+                                  ==-=====      ==---=            ======--===           =-=-H--====  =- = ===
+                                                                                            C
 OOOOMAMAOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAAOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOO)-==+AOOOOOOOOOOOOOOOOOOOOOOOOO
++++=    - =-+++++=+++++==+++--+++XXXXXXXX++   +++++X++=  =+=+==-==+++++++++++-      ==++XXXXXX+++=+++++++++++
+ ''         ' ''' '''''   ''    '''''''''''    '''''''            '''''''''''         ''''''''''' ' '''''''''
+ ..           ...    .    .     ..........     .......             ..........         ..........    ..... ...
+ =            =                 =-HHHHHH-       ===-=               = =====            =-HH-H-=     ==  =  ==
+                                  BBBBBC                                                 CC C
+                                    V
 OOOOOOOAOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAMOOOOOOOOOAMMOMOOOOMMOOOOOOOOOOOOZ+-=1OOOOOOOOOOOOOOOOOOOOOOOOOO
++++==-- - =-=+++++++++++++++++++XXXXXXXX+++   ++++XX++-   - ==+=  ==+++++++++=     =++X+XXX++++++++++++++++++
+'''           ''''''''''''''' ''''''''''''    ''''''''              '''''''''       ''''''''''''  ''' '   '''
+...           ... ....... ..  ............    ........              .........       ............  ... .   ...
+                =    ==        =--HHHHH-==      ==HH==               ===  ==          -=HHH===             =
+                                  BBBBB           CC                                    BCC
+                                    V
 OOOOOOOAAMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAOOOOOOOOOOMMOMOMOOOOOOOOOOOOOOOOOO1)==MOOOOOOOOOOOOOOOOOOOOOOOOOO
++++=---   =- -+++++++++++++++++++XXXXXX+++- -+++XXXXX+  - - ==+--=+++++++++++-     +++++XXXX+++++++++++++++++
+'''           ''''''''''    ' '''''''''''     ''''''''             ''''''''''      '''''''''''''''''''''  '''
+               ...... ..      ...........     ........             .........        ...................   ...
+                =     =         =-H----==      =--HH-               =======         ====----===   =   =
+                                  C               CB
 OOOMMZMOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMXOOOOOOOOOOMOOOMMOOOOOOOOOOOOOOOOOOX))ZOOOOOOOOOOOOOOOOOOOOOOOOOOO
++==    - -+=+-+++++++=++++++++++++XX+++++-  -=++++X+++ ---  --==++++++XXXX+++-    ++X+X+XXX+++++++++X+X+++++X
+               '''''' ''''''''' '''''''''     ''''''''          '''''''''''''     '''''''''''''''''''''''''''
+                ..... ... ..... .......       .......           .............      ..........................
+                            =    =--=          ===-=              ====----=        =-=-=---=  ==  = -=-=  ==-
 OOOOMMMOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOMXZZOOOOOOOOOOOMMMAAMMOOOOOOOOOOOOOM1+1ZOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++=   -=-=+++ -+++++++XX+++++++++++++++=-    --+++++==--       ++++++++X++++     ++X+XXXXX++++++X+X++++++XXX
+            '   ''''' ''''''''' '''''''          ''''           ''''''''''''      '''''''''''''''''''''''''''
+            .   ....  ......... ... . .           ..             ...........       ..........................
+                  ==  =--= ===      =                               ====-==         -=-HH--=   ==-=-======---
+                                                                                       CC
 OOOMMXOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAXMOOMMZAZZXMMOOOOOOOMOMOOOOOOOOOOOMZ=11OOOOOOOOOOOOOOOOOOOOOOOOOOO
++++   --+ -=++=-=+++XXXXXXXXXXX+++++++++=    --         --=-=-- - -=+++++++++     ++XXXXX+XX+++++XX+++++X+XX+
+'           '    '''''''''''''''''' ''''                            '''''''''     '''''''''''''''''''''''''''
+            .     ...............   .                               .........      ..........................
+                  ==----H---H--=                                      ======        H----=H-= ===--== ==-=--=
+                        C   C                                                       C     C
 OOOOA)XAOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZXXOOOOMZXZZZ))ZMOOOOOOOMXAOOOOOOOOOMZ)11OOOOOOOOOOOOOOOOOOOOOOOOOOO
++++-    -- -+++++++++++++++++++++++++===-   ----          ==+===-   -++++++++     ++XXXXX+XXXXX++XX+++++XXXX+
+'''         ''''''''''''''''''''''''                                  ''''''       ''''''''''''''''''''''''''
+            .... ................ .                                   ......       ..........................
+              =    =  == =   =                                          ===         H-H-H=-----==--===  ----=
+                                                                                    C C C
 OOOOOOAXOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAZZZMOOOOAAAMZ=-=-MMOOOOOOMMOMOOOOOOOM1+==OOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++=  == -++++++++++=-=-==+++=++===-=-     ==--           +++++-  - ++++++=     -+XXXXXXXXXXX+++++XX+XX++++
+'''''       ''''' ''''          ''                            '''      '''''       ''''''''''''''''''''''''''
+ ....        .... ...                                         .        .....        .........................
+  ==           =                                                        ====        --HHHHHHHH-=====--=--====
+                                                                                      CCCCCCCC
 OOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOZ1OOOOMX1ZXOOOXXXAMOOZ+=-ZMOOOOOOOOXXOOOOOOOMZ+=--OOOOOOOOOOOOOOOOOOOOOOOOOO
+-=+++++ -=+-=-+++++++++++==------  -+++     ---     --      +++++++-  -++++++      -+XXXXXXXXX++++++XXX++++++
+  ''''         '''''''''                                    ''''''     '''''        '''''''''''''''''''''''''
+  ....          ........                                    ......      ....        .........................
+   ==                =                                      =====       =           =---HHHHH-======---=====
+                                                                                        CCCCC
 OOOOOOOOOOOOMAOOOOOOOOOOOOOOOAMMA)XAOOOMXZXAOMAAAMOOMX11MOOOOOOOOOOOOOOOOOOOOMA))=1OOOOOOOOOOOOOOOOOOOOOOOOOO
+=-=++++-===-  -=++++++++++++-       -==     -     --     =+++++++++=+++++++++      -+XXXXXXX+XX++++++XX++++++
+   '''          '''''''''''                               ''''''''' ' ''''''        '''''''''''''''''''''''''
+    ..          . . ......                                .......     .....         .........................
+    =                 ==                                    =          ==            -H---H-=--======--== ===
+                                                                                      C   C
 OOOOOOOMMMAOOMOOOOOOOOOOOOOOOOOOOAXXMOOMXZMMOMAMOMOMOA+ZOOOOOOMOOOOOOOOOOOOOOMXZ11OOOOOOOOOOOOOOOOOOOOOOOOOOO
++=++++=    -+ --++++++++++++=---=    --     -   - - -   +++++- =+++++++++++==     -++++XX+X+X++++++++++++++++
+  ' ''           ' '''''''''                             ''''   ''' ''''''         ''''''''''''''''''''''''''
+    ..              ....                                 ...    ... . ....          .........................
+                     = =                                  =            ==           ===--=-=-== =   === =====
 OMOOOOOMOOMMOOOMOOOOOOOOOOOOOOOOOMXMOMOAZXOOOOOOOOOMMMMMOOOOMAOOOOOOOOOOOOOMAZ1= =XMOOOOOOOOOOOOOOOOOOOOOOOOO
+- +++++ --  +=- -=+++++++++++---=   - -   -==---==-     +++=  =+++++++++++=         ++++++++++++++--++++++X+X
+   '''              '''''''                             ''      ''''''''''           ''''''''''''   '''''''''
+    .               ...                                         .........             ...........    ........
+                                                                       ==              =  ===           ==-=-
 OAMOOOMMMMMAOOOMOOOOOOOOOOOOOOOOOMZ)ZXAAMAOOOOOOOOOOOOOMOMMA)ZMOOOOOOOOOOOOAX1=   1ZOOOOOOOOOOOOOMOOOOOOOOOOO
+-  ++=      --- ====++++++--=----         =-===-=------ -      -+++=+++++=-         -++++++++++++ =+++XXXXXXX
+                    ''' '                                        '   ''''             ''' ''' '''  ''''''''''
+                      .                                              ...              . . ... ..   ..........
+                                                                                                     =-------
 OMMOOOMMOMMXMMMMOOOOOOOOOOMMOOOOOOMZAAMAMMZAOMOMOMM1ZXAOOOOMXZAMOOOOOOOOOOMZ))-   1AOOOOOOOOOOOOOOOOOOOOOOOOO
+=  -+=  -       =++++++==-  ==+-=-          - - -      -=-=     ++=-+++++-          =++++=--++++++++++XXXXXXX
+                  '''                                                 ''              '      ''''''''''''''''
+                  .                                                   ..              .       ...............
+                                                                                              =   ====-------
 OOMOOXZZ1)+=+=)XOOOOOOOOOOOXMOOOOOOMOMMOMM1ZOOOMMA1)XAAAOMOOOOOOOOOOOOOOOOMXZAOX))ZZOMOOOOOOOOOOOOOOOOOOOOOOO
+=- --           =++++++++--  =+++=+ -  -    ---         - ==+===++=-++++=-    -     - +=--==++++++X++++++XX++
+                 ''''''                                         '    '''                    '''''''''''''''''
+                  ..  .                                              ..                     .................
+                                                                                            ======-===  =--==
 MMXZ1=)+--      AOOOOOOOOOOOMOOOOOOOOOMAAAMMOMMAMMMXAZ)1XXMAOMOOOOOOOOOOOAX1ZXOOMAAAMAOOOOOOOOOOOOOOOOOOOOOOO
+                 +++++++++=- =++++++=-      -               - -==-==+++=-     --      ==-=++X+X+++++++++++X++
+                  '''''''     ' '''                                 ' '                   '''''''''''''''''''
+                  .. ....       .                                                          ..................
+                                                                                            -=-===========-==
 XZZ)Z+-   -    -1OOOOOOOOOOOOOOOOOOMOMOOOMOMA1ZXOOOOMZ)--=)ZZ))1MOOOOOOOMAZ))ZMO=  =11AOOOOOOOOOOOOOOOOOOOOOO
+                 -=-==+++++-+++++++ - --- -     -===             -+++++-       -       -+++++XX++++++++++++++
+                       ''     ''''                                ''''                  '''''''''''''''''''''
+                        .       .                                 ....                  .....................
+                                                                   =                     ====--====== = =====
 XXX))ZZ=   -    )1MZZ1OMOMOOOOOOOOOOMMOOOMZZ1)1111MOM1=---)=---)MMOOOOOMA1)+)+ZOOMMMOMOMOOOOOOOOOOOOOOOOOOOOO
+                      - = ==+-+=++=-  +--          -              =+++=        --   + - ++X+++X+X++++++++++++
+                                                                    '                    ''''''''''''''''''''
+                                                                    .                    ....................
+                                                                                         =-===-=-=======
 11ZZZZ1+-     - ==)ZOAOMMOAMOMOOOOOOOOOOOXX11))++)OOA1))1))+--=+ZZMOOOMX1+==)1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                    - -  -  - ===++=+++=-         --               -+-        -=+=+++++++++=++++X++++++++++++
+                                      '                                         ' '''''''''  ''''''''''''''''
+                                                                                   ........   ...............
+                                                                                    ====      = -======   =
 XZAMA1+-    ==+=---)AMMZZ1ZZMOOOOOOOOOOOMXZZ1)11ZMOOOOOOOZ))=-==--ZAMAMZ1)++1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                             -==+++=++++          =------                     +++++++XXX++++++X++X+++++++++++
+                                '''   ''                                      '''''''''''''''''''''''''''''''
+                                      .                                        ..............................
+                                                                               ======---===   -==-===== =====
 OOMAOA=    -+)))=-=)ZZMMMMAXOOOOOOMOOOOO111Z=-)+Z1MOOOOOMXX1XZ)=-=1XOMX1)+++XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=-  -                       -=++=- -+++-           -===-            -        -++XXXXXXXXXXXX++X++++++++++++++
+                              ''                                              '''''''''''''''''''''''''''''''
+                                                                              ...............................
+                                                                              ==--------HHH-==-=======  =====
+                                                                                        CBC
 X11ZXZ)-   -=1X))+)1ZXMAAAXXOOOOOOOOOOOMOOOM1-- - =+OOOOOOMZ11Z111ZZZ)1))=++ZAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                            ++++++++++= ---         -====-                    ++++++X+XXX+XXXXX++++++++++++++
+                             '''''' '                                          ''''''''''''''''''''''''''''''
+                             ....                                              ..............................
+                                                                                  ==-=H--=-----====== === ===
+                                                                                      C
 ==+)Z)+---  -+1)+=+=ZZZ11)ZOOOOOOOOOOOOMOOOOA=-     XOOOOA1)1)ZAOAZ11)11Z)++)1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -++++++++++- --+=         =+=-       -              -++++X+++++++++++++X++++++++++
+                            '''''''''                                           '''''''''''''''''''''''''''''
+                             ......                                             . ...........................
+                                                                                   =-=============-===  = ==
 +=+=++ZZ=-  -=)+Z1)-===+)+ZOOOOOOMOOOOOOMOOOMZ)=---+MMMX)=-=ZZOOOMAZZ111))++1ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                           -+=++= -=++=- -==                  -=+             ++++++X+++XXX+X+++++X++++++++++
+                              ''    ''                                         ''''''''''''''''''''''''''''''
+                                                                               ..............................
+                                                                               =====-===---=-=====-=====  = =
 -=+-  -==)=-=-)=11)-----+)AAMMMMOOOOOOOOOOOMZXZ+=--=+-+1)=+ZOOOOO1)-----=-=-++OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                =----=----=                 =+++-             =+++++X+X+X+X++++++++++++++++++
+                                                             '''               ''''''''''''''''''''''''''''''
+                                                              .                ..............................
+                                                                               == ==-=-=-=-============  = ==
 +=+=    ==)++-+-==++=--=+)XXMXMOOOXZOOOOOMMMMX1)+-   -+-1AOOOOOOOZ+--     -=)1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                               -=-  -++--                 =+++==-              =++++X+X+XX+++++++++++++++++++
+                                      '                     '                   '''''''''''''''''''''''''''''
+                                                                                 ............................
+                                                                                 ===-=-=--======= =
 1+=)+- -11Z))+- -+==+==---+1XZAXOOAAOOOOMMOMMZ=-=-    --+1MMOMMMOA+--     -)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                --  +++=  -                 -   -           -+++++++X++++++++++++++++++++++++
+                                    '''                                       ''''''''''''''''''''''''' '''''
+                                     .                                        .......................     ...
+                                                                                  ==-== ===== ==
 )--=1=--)1A=++===++=--+++)11X11ZOOOOOOOOOMAAOM)=---   --+=)1ZZXXMAX1+=-=- =AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                                -+==++++-   -                               ++X+X+++X++++++++++++++++++++++++
+                                     ''                                     ''''''''''''''''''''''''''' ' '''
+                                                                            .........................   .  ..
+                                                                              -=-===-=== ======== =
 + -+1-)ZA)Z+==+=++)=-=MOOXZ1AXOOOOZ)ZAOOOOMAOX)= - - ---==+))+1+)+++)ZMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                       --     --+-    -=+=  -                           +++=+X+XXX+++++++++++++++++++++++++++
+                                                                            ''''''''''''''''''''''''''''   ''
+                                                                            ............................
+                                                                             -=---======== ======== =
 =--1X)1MOOM+=+))AMMAMMMAAZ+=+1MMAAZZAOOOOOOOOOOMZ)+-====))XZAAOMMAMXAXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        =-                           -+++++++=-               -       =+++++++X+XX++++++++++++++++++++X++++++
+                                      '''''                             ' '''''''''''''''''''''''''''''''''''
+                                        ..                                ............ ......................
+                                                                            ==-=--==     =    ===== ==-==
 1ZZ11)+)OOOMZMOOOOOMOOOMOM+-+)1AOOMXZXOOOOOOOOOMZ)+=)1-=)ZMMOOOOOOMOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+        -==   --+=- --- -       ==    -+++++=--             --=++= -- =++++++++++++++++++++++++++++++++++++++
+                                        '''                             ''''''''''''' '''''''''''''''''''''''
+                                        ...                               ..........  . ...   ...............
+                                                                             ==== =              ========== =
 +X1)1)))AXMOOOOOOOMMOOOOOOZ)ZXAMOOOZZ1XOOOOOOOOOMZXZ1Z1)ZZMOOOOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+           -=+++=-  +++++=      +=-    -+++=--=-           ---+==-   -++++++X+++++++++++++++++++++++++++++X++
+             '''     ''''               '''                           '''''''''''''''''''''''''''''''''''''''
+              .      ....               ..                             ......................................
+              =       =                                                 ====-=== ======    = === === =====-=
 1ZZ)Z1ZXZ)1ZMOOOOOOOOOOOOMZ1XZXXOOOOOOMOOOOOOOOOOMMAMZ)1MAXXOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+             =+=++=++++++       =++++= -+++++++--           - =++===++++++++X+XX++X+X++++++++++++++++++++++++
+              '     ''''         ''''   ''' ''                      '   '''''''''''''''''''''''''''''''''''''
+                      ..          ...   ...                             .....................................
+                      =             =                                       -=--==-=-=      = ====== =======
 ZXMAXZMMMAM)ZZZMOOOOOOOOOAX))1MMOOOOOOOOOOOOOMOMAXZZA1=-+1AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+                =+++++++-       =++=+++++++=- -             --=+++++++++++++XXXXX+XXXX+++++++++++++++++++++++
+                  '''''             ''''''                      ' '''''''''''''''''''''''''''''''''''''''''''
+                  .....             ... .                         ....................... ...................
+                  = =                                             = === =   --HH-=----=    =  =  ==  ======
+                                                                              BC
 OOOOA1Z1XMOMMAAMOOOOOOOO1)))1ZOOOOOOOOOOOOOOAZZZXZZZAAZ)==1AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=++-      -     =++++++-      -++-+++++=+++=                =+++++++++++XXXXXXXXXXXX+++++++++++++++++++++++++
+ ''               '''''             ''' ''                        '''''''''''''''''''''''''''''''''''''''''''
+ .                ....              .                             ....................... ......... .........
+                  ==                                                 ===----HHHHH---====   ==       = = = ==
+                                                                            CCBCB
 OOOOOOM1ZAOOOMAZMOOOOOM)----ZZMMOOOOOOMZMOOOM1XZOOOOOOOOAZXMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++-    ---    -+++=          --+++-   ==-    ==+++++=    ++++++++++++XXXXXXXXX+++++++++++++++++++++++X+X++
+'''''             '''              '              ''' '      ''''''''''''''''''''''''''''''''''''''''''''''''
+.....             ...              .              .          ................................................
+ ===               =                              =               =   ==H-HHH---H== ===       =====   ==-=-==
+                                                                        C BCC   C
 OOOOOOOMOOX1MMO1ZMOOOMXZZ+)+)++)1MOOA)+)XMOX)+)1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+++++++- -=    -   ++=             +=      -     -++++++++==-+++++++=--+++XXXXXXXX+++++++++++++++++++++X+++X++
+''''''            ''                              ''''       '''' '   '''''''''''''''''''''''''''''''''''''''
+  ....            ..                              ....       .... .    ......................................
+    =                                             = =                   =-HH--H--====  == ==== ====  =-== -==
+                                                                          CC  C
 OOOOOOXXOOMMOOOOOOOOOOOMX))-)))1XAX11-  +ZX1)1Z1MMOOOOOOOOOOOOOOOOOAZ+)Z)AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++-++++  --  ++=-+++++--                           +++++++++---++---       ++X++++XX+++X++++++++++++++++++++++
+   '''      '     ''                               '''''''                '''''''''''''''''''''''''''''''''''
+   ...            .                                 ......                ...................................
+                                                                           =-====--===-== === ===== =========
 OOOOOOXZMOOOOOOOOOOOOOOAZ)1+++++AOMZZ1- +XXXZZOMOOOOOOOOOOOOMMMAOXZZAZMM1)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+=-++++   -+++++++=+++=-          -            - --+++++++++=    -         -+++++++++X+X++++++++++++++++++++++
+   '''      '''''                                 '''''''''                 '''''''''''''''''''''''''''''''''
+   ...        .                                     .......                 .................................
+    =                                                 = =                   = ======-=-==== ===   ===  =  ===
 1ZOOOOO-)XOOOOOOOOOOOOOMX1ZX1=)=)AMA1)ZMOOMMMMOOOOOOOOOOOOOOOXZ1XZ1ZZZOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  =+++-   +++++++++++++                 ==    +++=++++++++++-         - ====++++++++X+X++++++++++++++++++++++
+    ''    ''''' ' '''                           ' ''''''''''                ''''''''''''''''''''' '''''''''''
+    ..     ...     ..                               ........                  ..................  ...........
+            ==                                      = ===                       = ==-=-====        ==   === =
 Z)OOOOO-ZMOOOOOOOOOOOOOX1+11Z=++=)1A1)MOOOOMMAOOOOOOOOOOOOOOOOO=  +Z))1MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+  =+++-   =+++++++++++-                ++++   ++++++++++++++++=         ++++++++++++++X++++++++++-+=+++++++++
+   '''      ''''''''''                  '''   ''''''''''''''''          ''''''''''''''''''''' ''    '''''''''
+   ...      ...  ....                   ..     ..............            ..... .............. ..     ......
+            = =   ==                                   =                  =      = = =-====          =
 1-1AOOOOAMOOOOOOOOOOOOOX1+)1Z11)))))XXOOOOOOOOOOOOOOOOOOOOOOOOOOM++ZMAMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+    +++-  ++++++++++++-               -+++++++++++++++++++++++++        +++++XX+X+X+X++++++++++++++++++++++++
+    '''     '''' '''''                 ''''''''''''''''''''''''          '''''''''''''''''''''''''''' ''' ' '
+    .       ..   ....                   ..... ................           ...........................    .
+                    =                   ===     = = === = ===            = ==--=-=-=-=============
 A==-XMOMMMOOOOOOOOOOOOMAZ1)+)+1ZZ1ZZXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+      -   ---++=+=++++                -==-++++++++++++++++++++++----====++++X+XXX+X+X++++++++++++++++++++++++
+                  '                       ''''''''  '''''''''''         '''''''''''''''''''''''''''''''''''''
+                                           ......   . .........         ................................. ...
+                                            =             = =             ==-=---=-=-==  ============       =
 OZ1++)1+1111ZOOOOOOMOOZ)11X1  -1ZAMMZXOOZ-MOOOOOOOOOOOOOOOOOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++            -==+=- --                -=   -+++++++=+=++++++++++++++=-  ++++++X++++++++++++++++++++++++++++++
+'                                            ''''      ''''''''''''       ''''''''''''''''''''''''''' ' '''''
+                                             ..         . . ...           .........................     . ...
+                                                                          = = -======    =======            =
 OOZXZ=+++=  )MOOOOAXOMZ1))XX-  -1XOOZ)OOOX-1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+            =---  =             ==  +++   -++++++++=+=+++++++++++++++===++++++++++++++++++++++++==+++++++++
+''                                     '      ''''' ' '  '' ' ''''''''    '''''''''''''''''''''''     '' ''''
+.                                             ....        .       ....    . .....................     .   ...
+-                                             ==                                ======== = === =
 OOOXZ)1)11ZZXZOMOOMZOOOX11ZOOM1)XOOOM)OOOO++MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+X+-           - --  -=-    --    -++  --+=   -+++++++++++++=+++=+++++++++++++++++++++++++++++++++++++++++++++
+''                                '           ''''''''      '     '''''''''''''''''''''''''''''''''''''''''''
+..                                            .....               ..........  ...............................
+H=                                              =                   =====      ==     =====  = =    = =   = =
+C
 OOOOMAM11XXAXZXAOOM)AMOOMAAOOOOAOMOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
+XX+-            ==    +=   -+=- - +++++++++  -++++++++++==+=++++++++++++X++++++++++++++++++++++++++++++++++++
+'''                                 ''' ''    '''''''       '''''''''''''''''''''''' ''''''''''''''''''''''''
+...                                     ..      ...           . ... ...............   .......................
+H-=                                                             =   =  =-=            = =====          === =
+C
 OOOOOOOOOOMAMAOOOOOZXMOMMX))MAMOOOOOOOOOOOM)XMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++X+++++==-    --++-   -        =++++++++++    +++++++=+-==+++=+++++++++++++++++++-+-=-==+++++++++++++++++++++
+''''''          ''              ''''''''''    '''''''         ''''''''''''''''''        '''''''''   '''''''''
+......                            .. .....      ...             .............           ......  .   .........
+=-===                                  ==        =               =     ==                 ====        =======
 OOOOOOOOOOOOOXOOOOOOMOM1Z)- --=AOOOOOOOOOOOMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMMOOOOOOOOOOOOOOOOOOO
++++++XX+X+++- =++++- -          +++++++++++  -+++++++++++++++++++++++++++++++++++=--- --  +++++++++++++++++++
+'''''''''''    ''''             ''''' ''''    '''''''''  ''  ''''''''  '''''''''          ''''''''''''''  '''
+...........    ...              ..... ....     .......        .......   .......            .............  ...
+= ===HH=-=      ==                               = =            ==      =     =            ==     == ==     =
+     CC
 OOOOOOOOOOOOOOMOOOOOX11ZAA1)  =1OOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOO
+++++XXXXXXX++= =+==-            +++=+=+=- -++==++++++++=+++++++++++++++++++++++++-=-- - --==+++++++++++++++++
+'''''''''''''   '                '' ' '         ''''''    '  ''''''''' ''''''''''           ' '''''''''''''''
+.............   .                .              .....         . . . .   .......             . .........   ...
+= ==---HH-H==                                                           =   =                     == =      =
+       CB C
 OOOOOOOOOOOOOOOMOAX1+)XOOOOOOMMOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOO
+++++++++XXXXX+- -      -+++==  -+++++++=- =+=-+=++++++=++++-=-==+++++++++++++++++-=-- ----===---+++++++++++++
+''''''''''''''          '''      '' '              '            '''' ''''''''''                    ' ''''''''
+..............           ..                                           ...  ...                        .......
+ = =====H-H--                                                                                           ==  =
+        C C
 OOOOOOOOOOOOOOOOOOMZXMOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOMOOOOOOO
+++++++X+X+XXX+++=-    -=++=--=+++++=+=+=+-- --+=+==++++++++=+-+++++++++++===+++++++++++==-=-- --=---- ==+++++
+''''''''''''''''         '    ' '''                   '  '      '''''''''   ' '''' ''                   '''''
+................                                                  .   ..        ..  .                   .....
+= ====-=-=---==                                                                                           = =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOMAMOOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOMMOOOOOOO
+++++++++++X+++++++++++=-==-   ==+++==++++= -+=+++++=++++++++=-++++++++++++=-++++++++++++++=------ --  =++++++
+'''''''''''''''''''''           '''  '' '      '''   ''  '      '''''''''     ' ' '''''''               '''''
+...  ...............            .     .              ..               ...         ......                .....
+        ==-====   =                                                                 =                    = =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++=+-=- -+++++++++++++++===+++++===+++=+====+++++++++=-=-+=-=++++++++++=-=-----=-+++++++
+'''''''''''''''''' ''           ''' '''''   '     '                 ' '''           ''''''            '''''''
+.................               .   .                                 .             .....              ......
+  ===  =======                                                                        =                 =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++=+==+++=++++++++++++++++++++===+=+---==+++++=++=+++++++==+==---=++++++++++++++++++++++++==
+''''''''''''''''''      '     ' '''''    ''''             '''       ''  '           ''''''''''''''''''''''
+.................               ..        . .                                       . ......... . .   ...
+     ========   =                                                                      =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++=+++++=+++=+++++++==++++++++=+=+++===+++++++++++++++++=====+=+++++++++++++++++++++++=++=--
+''''''''''''''''''  '   '       '''''   ''''                ''''' '''''''         '''''''''''''''''     '
+.  ..............       .       ....      .                   ..    ....           ..............
+     ===== ==== =               =                                   =              == = =   = =
 OOOOOOOOOOOOOOOOOOOOOMOOOOMAMXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++== ====    -++++++-=++++-=-+=+++++++++++++++++=+++++++++++++++++++++++++++++++==---=------
+'''  ''''''''''''''             ''''    ''       ''''''''''''''''   ' '   '   '  ''''''''''''''''
+..   .. . .........             ...              ..........  ....                 ..............
+             =====                                = ==  =     =                     =   =  ====
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMMMMOOO
+++++++++++++++++++++++++++++---++++++=+++++=+++++++XXXX++X+++++++++++++++++++++++++++++++++++++==-=-      -=+
+''''''''''''''''''' ''''''      ''''' '''     ''''''''''''''''''' '''''''''' ''''' ''''''''''''
+...................   ...             .       ...................  ........   . .     . . ...
+ ==     =   =====                               ===---- =-====     == ===                 =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOMOOOMOOOOO
++++++++++++++++++++++++++++++++++++++++++==+++++++++XXX++++XX++++++++++++++++==-=--=+==-=== =-====- --- --+=+
+''''''''''''''''''''''''''''''''' '''       ''''''''''''''''''''''''''''''''
+............................... . .          ....................  ........
+    ==   =  = =    =  = = =                     ====---====--== =   =  = =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMMMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMMOOOOOOOOMOMOOOOOOOOOOOOOOO
+++++++++++++++++++++++++++++++++++++++=---   -==+=++++++++X+XXX++++++++++++---- -  -=+===== - ---=+++++==++++
+  ' ' ''''''''''''''''''''''''''''' '             '''''''''''''''''''''''''                        '' '  ''''
+       ........................                   ................. ......                         ..    ...
+        ===== = ==  = ==    =                         = ==-=---===  =====
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOMOOOOOOOOOOOOO
+==++++++X+++X++++++++++++++++++++++++====- -=++++++++++++++++++++++++++++++=--= - --===-=-=-=-- ==+++++++++++
+  ''''''''''''''''''''''''''' ' ' ''         '''  '''''''''''''''''''''''''                       '''''''''''
+  ................... ......      .           .    .... ............... ..                        ..........
+     ===-===- =                                    =     = =  = ==  =   ==                        =   ==  =
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++-++++++++++=--=+++++==+++++=-- ==++====+++++++++++++
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''   '   ''''      '''     '                 ''''''''''
+..................... . ..............................        ...       ...                       ..........
+  = =====   ===               =    =         ==-=====                                             =====  ===
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++=+=++++===-+++++++++++++++++++XXX++++++=====-+++==-  --++++===-===------==++++++++++++++++++
+''''''''' ' '''     ' '     '''''''''''''''''''''''''''         '       ' '                ''''''''''''''''
+.........   .                ..........................                                       ...........
+ = ==  =                           ==== =      -H-====                                         === ==== =
+                                                C
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOMOMOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++=+++===+++++=++==+++++=++++++++++++++++++++++==+++++=+=++=-+++=+===+++-- - --==++++++++++++++=+--=
+''''''''    ' '   '''       ' '''     ' ''''''''''''''''  '   '               '''         ''''''''''''
+........    .       .         .         ...............                       ..          ...........
+= ====                                  === =  == =====                                       == ==














