Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-11 - 43,50536/climbe.dat
There are no other files named climbe.dat in the archive.
1I )))))))))))))))))))))))))))))))))   )   1111)))11ZZ111111111)))))))))++ ))))))))1111)11)))))))+))))))))++))+++++++++++++++)))))
*)))))))))))))))))))))))))))))))))   )   1111)))11ZZ111111111)))))))))++ ))))))))1111)11)))))))+))))))))++))+++++++++++++++))))))))))
*1ZZZXXXXZZXXXZXXXXXAAAAXXXXZZ1ZXXAXAAAAAAAAAXXXM-==-MM-MAAAAAXXXZZZZ1))))11111ZXXAAXZZXZ11ZZ))))111111)))))))))+++++==++++)ZXXXXZZ11
+                                                CCCC  C
*1111ZXXZ11ZXZ11ZZZZZZZZ11111111ZZ11111111111))11111111ZZZXXXZ1111111)))+))))))11XXZ1))111111))))11111111)1Z1)111)++++)))))1ZZXXAMAXZ
*--+ZZZ1111ZZ11))))))))+))))1111111111)111111)111111ZZZZXAMMMMX1111)1))))11Z111ZZZXXZ1111ZZ11ZZZZZZ1ZZZZZZZZZXXZ11))))1))1111ZXAMMMAX
* -1XAAXZZXXXXXZZZZZ11111ZZZZZZZZZZZZZZXXXZXXXXZZZZZXZZXAAM---MZZ111)))))111111111111111)11)1ZZZ11)1ZZ11))11ZXAAXZ)++))11111)ZXAAA-=-
+                                                          CCC                                                                    CCC
* +X--MAXXXXXXXZZZZ1111ZZZXXXZZZZZZZZZZZZZZZZZZZ1111Z11ZXAMMM-MX1)))+++++)))))))))+)))))+)))1ZXXZ1))111)++)1ZXM==A1++))111))1XM-==+=M
+   CC                                                       C                                                 CC              CCCCC
* +M--MAXXZZZZZ11111111ZZZXXXZZZZZZ111111111ZZ111))111)1ZXAAM--AZ)))+++++))11))))))+)))++++)1XAAX1)+))++++)1ZA-++A)+++++)))1ZXM=+'+-X
+   CC                                                       CC                                               CCC              CC+CC
+                                                                                                                                C
* )M=--MAXZZZZ11111))1ZZXXXAXZ11ZZ111111)111111))1111))1ZXAXMM-MZ)+)++++++)11)))11+++++=+++)1XXAX1+++)+++++1XA-=A)=====++=)1ZZZA-=+-A
+   CCC                                                       C                                               CC                CCCC
* )M---MAXZZ11Z111)))1ZXAAMAAXZ1ZZ11111111111))))1)1))))1ZZXAMMMX1))))))++)ZZ11))))++++===+)11111++++++++++)ZAMX)===+===-=+)Z11XAM--M
+   CCC                                                                                                                           CC
* )XAMMMMAXZZZZ111))11ZZXAAAAXZ1ZZ111111)111))))))))))))1)1ZZXAAX11ZZ1))++1XAX1)+)+++)++==+))))++==+++)+++)11XZ)+=+))+==-==+)11XAAM++
+                                                                                                                                  CC
*-1ZZXAMMMAAXZ111)))111ZZXAAAXXZZ111)111))1))))))))+)))))))))1XXXZZXX11)))1XMX1)++++++++==+)))))+==++)1)+++))))+++)))+=====++)1A-=+''
+                                                                                                                               CCC++
+                                                                                                                                  CC
* 1XZZZXAMMMAZ1))))))))1ZXXXXXXXZZ1))1)))))))))1)))+++)))+++)1ZZZ11ZZ111)+1XX1)++=++++====++++)))++))11)+++++=+++))))++++==++))ZM+''-
+                                                                                                                                C++C
+                                                                                                                                 CC
* )XXXZZXAAMMAX11))))))11ZXXXXXXXXZZ)))))))))))))))++++++++++)111))1Z1))))1111)+++=======++)))+)1)11))1+==+===+++)))11)))++)+++1A==-Z
+                                                                                                                                CCC
*-1XXXZZZZXAAAXX11)))))))ZXXXXZZXXXZ1))))+)++++++))))+++++===+)ZZ1)11)))))))))++++=-=====+))))))))11))+====-==)))+))11Z1))))++)XMMAZ)
*-1XXXZZZZZZZXXXZ1)+++)++1ZXXXZZXXXXZ))))+)+++++++)))++==++==)ZMAAZ1))1ZZ11)+++++=---===+11)))111))))))+=====+111++)11ZZ11Z1))1XAZ)+)
*-1ZXXXZZZZ111ZZZ1)+)))++)1XZZZZZXXXZ1))++=+=+++==+))))+=++==)ZAMAX)+)11ZZ1)++==--------=)+++)))))))+))=--+++)11+=+))+)))11)1Z111++))
*=ZXXXZZZZZZZZ11Z11)))))))1XXZ11ZXZZXA--X)+++======++)1))+====)ZAAX1)+++)1Z1)++===---=======+)++++)+==+=+==+1111+=++++++)++++)1))))11
+                                     CC
*)ZZZZZZZZZZZZ11111))))))+)XXZ111ZZZXA-'+MX)++=====+=)111++===+1XAXZ+====)111)+==--- -===--=+)++=========--+ZAX1++=++))+==-====++++)+
+                                     C+C
+                                      C
*)XZZZZ11Z111111))111))))+)1ZZZ11111Z11X-+=MX1++======+11)+====+1XZ1)+++==)ZZ1+=----  --=-==+++======--=---=)Z1)++==+1Z)= ----- --==-
+                                       CCC
*1XXZZZ111111))))))1))))+=++)1ZZ1)11Z1+=)X-++-X)+======+)1)+===+1Z111Z1+=+1XZ)==-==-  -----=-=====+=--===-===))++=--=))1)=------   --
+                                         CCCC
*ZAXZZZ1Z1111))))))))))+++++++ZXZ1)111)===+ZM-=MX1+==-==++)+====+))1ZXZ)++)ZZ)+=--=---------==+==++=------==++=====----=+=- ------ --
+                                            CC
*ZAAXZ11111111))))+++))++++==+1XXZ)))))++===+)ZAMAX)+=--==+++=====+1Z111)+)1Z)+=-----------===++=++=--- ---+)+=====---------  - -==--
*XMMAX1111111111))+++++++++===+ZXZ1++++++++++++))1ZXZ1)+==++++==--+11++11)111)+==--=-=---==+===+==----  ---=++====------  -- -- --=+=
*ZAMAXZ111Z11111))++++======--=)1Z1++)))+++)1))+===+)ZZ11)+++)+=---++=+Z1Z111)==---=++=---========-  --- -  --=======---     --   -=+
*ZAAAAXZ1Z111111))+++++==+==---=)11))))))+))))+))+=--=+)1ZZZZ11)=--==+)1ZXXZ1)+=-- =+)=-====-====---- ---   --=++==---       --  ---+
*ZAAAAAZZZ11111))+++++++===-----=++)1)1)11))++)))++===--=+1XXZ11))))))ZXXXXZ1)++==+1111++=====++=----  ---   -=+++=--        -==---=+
*XAAXAAXXZZZ111))++++++====-----===)111ZZ1))++)))+++++---+1111)1))))11XAMMAXXZ11)1-++++=MAAXXXXXZ11))++++=---+)))))=---  - -=)ZZZZXAM
+                                                                                 CCCCCC
*XAXXXXXXZ111)))+++++===-----  -====+))1ZZ1)+++++++++=- -+111)+==-  --+1XXXZZZ111A.-----------.-.''+'+===MAAAM-MMMMAZZZXAAM-='.'.----
+                                                                                 '...........'.'++C+CCCC     C            CC+'+'....
+                                                                                 +'''''''''''+'+CC C                        C+C+''''
+                                                                                 CXXXXXXXXXXXCXC                             C CXXXX
+                                                                                  CCCCCCCCCCC C                                 CCCC
*AAXZXXXXXXZZ11))++++++==------=+===+++1XXZ1)++++))))=--+1)))))++=--- =+)11)))+++X'---------------------------------....-------------
+                                                                                 +.................................''''.............
+                                                                                 C'''''''''''''''''''''''''''''''''++++'''''''''''''
+                                                                                  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCCCXXXXXXXXXXXXX
+                                                                                  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC    CCCCCCCCCCCCC
*ZXXZXXXXXXXZZ1++++++====----===+==++==)1ZZ)++++++)++===)1)))))+++++=+))))111)+++1AMM--=-M-='''+''++''..........---------------------
+                                                                                    CCCC CC+++C++CC++''''''''''.....................
+                                                                                           CCC CC  CC++++++++++'''''''''''''''''''''
+                                                                                                     CCCCCCCCCCXXXXXXXXXXXXXXXXXXXXX
+                                                                                                               CCCCCCCCCCCCCCCCCCCCC
*1ZZZZZXXXXXZZ1)+++++====----==+==+++=++)1))+++++==++==+)))))))+++)+)ZZ1++)1Z1)))))+)+)+=--+1Z))))++)ZXXXZZZZZZA---====---=++=+'.''++
+                                                                                                               CCCCCCCCCCCCCCC+'++CC
+                                                                                                                              C+CC
+                                                                                                                               C
*))1ZZZZXZXXXZ1)++++===------+))+==++===+++++++=====++++)++))))++)++1XXZ+-=)1ZZ1)+++++++=--=))+=     -==-       =))))+=-   ---+XAXZ)+
*+++)1ZXXXXXXXZ1+++++===---=-+11)+==++====+++=+++++===++++)))1)))+++1XZ1)+==+)1ZZ)++++)+++++)11)-   -++++=-    -)11))==-      -+1)+-
*+++++)ZZXXXXZZ1)++++========)1)++========++++=++++=---+))111111)++)1ZZZZ1)+==+1XZ)+++)+))1)+)1)-   -+111+==- -+1ZZZZ))+=-   --=1XXZ+
*+))+=+)1XXXXXZ1)++++++)))+==))+===========+)+--==+=--=+)11Z1111)+++)1ZZAXZ1+-=)ZXZ1++))))1)++==- -==+1ZXZ)+=-=1ZZXXXZ11)=   -==Z-=MZ
+                                                                                                                                CC
*++++=-=+)1ZXXZZ1+===+1Z1+=-=+)+==-=-===+=-====--=+++=+)111111111)+=+)11ZZZZ)--+ZZZ1)+))+=)+===  --===)ZXXZ1+++1XXXXXXZZ1+=-  =+1-+MX
+                                                                                                                                CC
*++)+===-=+)1ZZZZ)+=+)11++====)+====-===+======---=)1111111ZZ11Z1)+=+)1111111+=)ZZZZ1))++++++=-- -====)ZAAXZZ1)1XMMMMAXZZ1)=  -+)ZZ))
*=)))++=----)1ZZZ1+++11+=-----++++=-----=======---=)1ZZZ111ZZZZ1=++==))11)111+=)ZZZZ1+==++=+++-   --  =1XAAAAZ))XM--=MAXZZ1+- -+++==+
+                                                                                                                 CCC
*=+))+===- -=+)111)))1==-- ---=+++=------===---- -=)111ZZZ1ZZZZ)=-====+111Z1+-=1Z11ZZ+--===++=-       -=1XAMAZ)+)XM-+-XXXXX1+-  ====)
+                                                                                                                  CCC
*--=++===-  --=+))))ZZ--=- ---===++----  -=---=---=+))+)111)1ZZZ)+===-=+)ZZ1)-=1ZZ11Z1+  --=+=-         -+ZZ1++=+ZA--AXM-=-X)+   -+)X
+                                                                                                                  CC   CCC
*---++++------ -=+++1Z=---  ---==++==+=-  -=====---)11)))ZZ1))1Z11)+===)111Z)+=ZXXZZZZ)- ----            -+))++==)XAAAA-+'=XZZ)= -+ZA
+                                                                                                                      CC+C
+                                                                                                                        C
*+--=+))+==---  -====++=--  --====++===- --=-=--   +1ZZZXXAX11ZXZZ11111ZZZZZ1))XXXXXZZ1=   -              -+++++==+ZXAAM=.+X1XA1= +1Z
+                                                                                                                       C'C
+                                                                                                                        +
+                                                                                                                        C
*1)--=+)))+=--- -===-++==--  -====+)=-==---===- -  -=)ZAMMMMXZXAAXXMMAMMMMAZ1)1AAXXXXZ)-   --             -++++++=-=1XAA-+'-ZXAA1==ZZ
+                                                                                                                       CC+C
+                                                                                                                         C
*X1+---+11)==--------=+=---  -=====)+=-==--+++--     -+ZM--MAAAMAXXMM--=-=-AZ+1XAZXXAZ+-    --             ==))))+- -)XM-+'=XZXAAZ)AM
+                                                        CC          CCCCCC                                             CC+C
+                                                                                                                         C
*XX1+==+11))+==-------====------===+++--=--+))+-      -)XM---MMM-MAAM--=====A)+1Z111XX)=-    -            --=+)ZZ1=- -)X-''MXAXXMMM-=
+                                                         CCC   C    CCCCCCC                                            C++        CC
+                                                                                                                        CC
*1ZX1)=+1))))++=--------==------==+++)+-- -+))+=-     -=)XM-------MM---===--M)+1Z)+)XX1))=--==-      -=-  ---=)ZXZ)=   +Z-=-AAAXA-=-=
+                                                          CCCCCCC  CCCCCCCC                                             CCC     CCCC
*+1ZZ1+++)+++++==-- ----===--  --=+))1)-  -+)11)+-      =1A---MMM-M-====-MXZZ)+1Z1++ZXZ11)==++- -    -=+-   -=+1XX1=    =A-MAAAXXMAXX
+                                                          CCC   C CCCCCC                                                 C
*=+)11)+=+++===--=-------=---  --=+))))= -=+)11))+=     -+1AMAAAXAM--=--MXZ+===+ZZ)+ZXXZX1)+=--      =))=   --+ZXAX1+- --)AMM--XAA1++
+                                                                  CCCCC                                                     CC
*=++)))+==+++====-=========--- ---=+)+))=-+ZZ11)))+=-    -+ZXAAXZZAM----AAZ1+=  +ZZZXAAXAAXZ=  -    -+11+-    =1AMAMAZ11+=)XA--AAAZ++
+                                                                   CCCC                                                     CC
*++++++++==+==+==-=+=-=------ - ---=+)))+-+ZX1)++)))=     +1ZXAZ1ZXAMM-MAAXAZ+   +1XAAAM--MA)      -=+1)+-     )ZAAXAAXX1=-+ZAMAXXZ11
+                                                                     C                 CC
*=++++++)++++))+=-----==---==--  ---++)))==1XZ1==)1Z)=    )XXXXXZAAXXMM=--MAX1=  =)XMMMM-==MZ=    -=+11)++     -+ZAAAAAMA1= -1AMXXXXX
+                                                                      CCC              CCC
*======++)+)+++==- --==-------   -- -+))))=+ZZZ)==)1Z)=   -ZXZXXXAMAAXXM===-AZ+  -1MM-==--MX1)-    -=1XZ11)+--  -)XAAA-MMXZ= -ZAAAAXX
+                                                                       CCCC         CCCCC                            C
*==++=++=++))+++========-=-----  ---==+)))+=)XX1)+1111)=  =1XXAMMM---AAMMMMMMX)-  1MMM-====MX)=-   -=+1ZZZXX1))=--)XXXAXXXXX)-+XAAXXZ
+                                                                 CCC                 CCCCC
*==+++++==++++====+=++==+=---=-   --==+))+)=+1XZ1)1))11)+- -)XA----==-MMMAAXAX1)= =ZMM-+++'=-AZ+=- =+-=)1XXAZZ1)- -1ZXXAXXXAZ+-)XAXXZ
+                                                              CCCCCCC                CCCC+CC
+                                                                                         C
*=-=+++)===-======+++=-====--=-  ---=++)))++==)11)))++)11+  -)XM===++--MAXXZZZ1))- )ZM-+'''''+-AZ=-+)+-=+ZXXXZ11+- =)11XZXZXZ1++ZAXXZ
+                                                               CCCCCCC               CC+++++CC
+                                                                                       CCCCC
*====++++=====-=-=++=---=----=-   --=+++)))=--=)))))+==+)+   -)XM=++=--MX11)11111+ -)Z-+++=++++-AZ++Z1+++))1ZZZ1)=  -+++1XZXXZZ1ZMAXX
+                                                                CCCCCC               CCCCCCCCCC
*==+===++++++==-=++==--==---=-    -=++=+))+==-=+1))))+=+++-   -)ZM===-MMAZZ11Z1)1Z+  Z-===M-===MMXZZX1))==+++1ZZ1+-  -++)ZZZXXZ1ZAMAX
+                                                                 CCCC                CCCC CCCC
*--++===+++))+==++=-==-====------ --++==+++=====)1)++++=++-    -)X-==-AMMX11111)1Z)- +A----==----AMMX1)+=-+)+11111+-  -+)1ZZZZXZZZXAA
+                                                                 CCCC                 CCCCCCCCCC
*--=+)+====)11)+======--===--   - --+)++=++=+=+=+11=-+1))+=     )XA=+-MAAX1ZZ11+111= -1M--=+++=++=-+-X1+--=11ZZ111)+=  =))1ZZZXXZZZAM
+                                                                  CCC                  CCCCCCCCCCCCC
*==-=11+-==++)++=--==----==-==- ----==++===+=+++++))-=)Z1)+=    -ZAM==-MM-AXX1)++11)- -1AM+'+=++'.'++AX)-  =)ZXZ)=))=   -+1111ZZZZZZA
+                                                                   CCC  C                C+CCCC+'+CC
+                                                                                          C    C+C
+                                                                                                C
*==- +11++-=+++++=---=- --==+++=-  ---=++==+=+)))==))+))))))=    +XAM==++=-MAXZ1ZZZZ)   +1X======+++=-AX)====)1Z)--=     -=))ZZXZXZXX
+                                                                    CCCCCC                CCCCCCCCCCC
*-==--+11)===+++++=-----=-=--=++=--  --=++=+))+)1)+=+)+==))1)-    =ZAM-=+==-AXZZZZZZ)=   -+A-MM====+'+-MAZ))+++11= -      -=)ZZXZZXMM
+                                                                     CCCCCC                C  CCCCC+CC
+                                                                                                   C
*--=+--+1ZZ1))++)+++=---==----=++=-- --=+))))))+111)=+++ =11)+=    +ZXAAM-===MZZXXXZ1)-   =ZAXA--M-=+.'+-AX1))))+=-   --   +ZXAXZZX==
+                                                                        CCCC                  CC CCC'+CC                          CC
+                                                                                                    +C
+                                                                                                    C
*--=+= -+X-+=)--++=++=----=  --====--  -=+)))Z1)+)1Z1)1)- =1-))+    =1ZXXAM='=MXZZZX1))-  =ZZ)1M-MAM='''=-MAZ)=--==   ++-  1AAAXZXM+'
+         CCC                                                              C+C                  C   C+++CC                         C+
+                                                                           C                        CCC                            C
*==-==- -+M'.A+-=+++++=---==  -=-=++=-  =+)))1ZZ1))11Z11)=-)=111)-   =)ZAM-==+-MXZZZZZ1+  +M=MM-+=-M---==++=-A1   =-  =1)=  +XXXXXAA=
+          +'                                                             CCCCC             C  CCCC CCCCCCCCC                       C
+          C+
+           C
*===--=-  )M+MZ+==+)))+==-==- -+--=)+== --++)1ZXZ1))1111Z1))1))))+     +X-=====-AZZZ11Z1+  1=++'.''=--M--=+''=A)-  -   1Z)   +ZXXXX11
+           C                                                            CCCCCCC            CCC+'++CCC CCCC++C
+                                                                                              C+CC        CC
+                                                                                               C
*+==---=- -+1ZZ1)==+))))=-===  -==-=++)=- -=+1ZZZ1111ZZZXAX1)+++))=     1AM==++=-AXZZ11))-  Z+...'.'++===++''=AZ1-     -1Z=   )XAAXZ)
+                                                                          CCCCCC            C'''+'+CCCCCCC++C
+                                                                                             +++C+C       CC
+                                                                                             CCC C
*=++- -=+-  -+ZZZ1+-=)11)==-=-  -- --=))=  -)1ZZZZ1ZZZZ11AX)++-=++-     =ZXA-=++-MAZZ)1)++   X'''+'.'....'''.+MXZ++-     )Z+   ZAXAXZ
+                                                                           CCCCC             +++C+'+''''+++'C
+                                                                                             CCC C+C++++CCC+
+                                                                                                  C CCCC   C
*-+=-- -== ---+11X1)=++111+=++==-===--+11+- -1XAAXXXXXZ111Z1)+====+      =)ZA-+'+=MZ11Z111+  =M++''''''.....-'+-XZZ-     +Z)   1MAAAX
+                                                                            CC+CC             CC++++++'''''.+CC
+                                                                              C                 CCCCCC+++++'C
+                                                                                                      CCCCCX
+                                                                                                           C
*--==-------  -+1XXZ)+=+))))++))=-===--+11)--1XAAXXZZZZ)11111))++=+=      =XM===+=M1)+1ZZ1+-  1='''''''''.''..'+--=1      +)= )M+'==-
+                                                                            CCCCC             C+++++++++'++''+CCCC             C+CCC
+                                                                                               CCCCCCCCC+CC++C                  C
+                                                                                                        C  CC
*------  --   -=)ZXZZ1=+=)ZZ))11)=-===--=)1)==)XXZXZZZZ1ZZZZZ1))++++=-    =A='++=-AZ+=+1Z1)+  =M'.'.'+'''.'''..'''.=X+    -=+1M.---.'
+                                                                           C+CCCC              +'+'+C+++'+++''+++'C           '...'+
+                                                                            C                  C+C+C CCC+CCC++CCC+            +'''+C
+                                                                                                C C     C   CC   C            CXXXC
+                                                                                                                               CCC
*+====--  ---   =)ZXX+=+=+1ZZZ1ZZ+---==--=+)+ =1ZZZZZZ111ZZZZ11))+=+)+=  =Z+'.'''+-Z ==+Z11)=  1=''''''+'...''.......'A=   -)XM+---.-
+                                                                          C+'+++CC             C++++++C+'''++'''''''+         C...'.
+                                                                           C+CCC                CCCCCC C+++CC+++++++C          '''+'
+                                                                            C                           CCC  CCCCCCC           XXXCX
+                                                                                                                               CCC C
*)))+==-- -=-    -1XX+)Z)=)ZZZZZZ)-  -=====++=-+1ZZXXZ111111)))))=--)+)--)=.'''.''+M11++1Z11)   Z='''''''''''''...''.-.+M)-=1X--+'...
+                                                                         C'+++'++C              C+++++++++++++'''++'.'C      CCC+'''
+                                                                          +CCC+CC                CCCCCCCCCCCCC+++CC+'+          C+++
+                                                                          C   C                               CCC  CXC           CCC
+                                                                                                                    C
*)1)++===---=     -1Z=1Z1))1111111=  --=+==-++= =1ZZZ11)1Z1)))+++)++))))+Z=''''''''+-X1))Z1)+=  =M+''+=++++'''.'....-.-.'-XXXXMMMM='.
+                                                                         C++++++++CC             C++CCCCCC+++'+''''.'.'+C        C+'
+                                                                          CCCCCCCC                CC      CCC+C++++'+'+C          C+
+                                                                                                             C CCCCXCXC            C
+                                                                                                                   C C
*11+))++==- --     -)-ZZZ1)+))1ZZ1)===-=++=+++=- =1ZZZZ1ZZ1)))+==)11)111)X='+''''''.'+M1))111)   X+''++=+++....'''........+=MZZXZXM''
+                                                                         C+C++++++'+C            C++CCCCCC''''+++''''''''CC       ++
+                                                                          C CCCCCC+C              CC      ++++CCC++++++++         CC
+                                                                                  C                       CCCC   CCCCCCCC
*ZZ1)))))=- ----      +ZZ11)++11111)+)))==+++===--=1Z1Z1Z11))1)+-=1Z111111A-++'''''+'.'M1+)1Z1+  )='.'++''.----''....''...''=Z)1ZZM==
+                                                                          CCC+++++C+'+           C+'+CC++'....++''''++'''++C      CC
+                                                                             CCCCC C+C            C+C  CC+''''CC++++CC+++CC
+                                                                                    C              C     CXXXX  CCCC  CCC
+                                                                                                          CCCC
*ZZZZ11))+==----       +11ZZ11)1Z111++)1))+)++)+=- -+1Z1Z111Z11)+)XXXZ111)))X=+'+'+''.-'Z=+1Z11+  1-+''+''.------------....''=Z))ZXAA
+                                                                            CC+C+C++'.+           CC++C++'............''''++C
+                                                                              C C CC+'C             CC CC+''''''''''''++++CC
+                                                                                    CX                   CXXXXXXXXXXXXCCCC
+                                                                                     C                    CCCCCCCCCCCC
*+))ZZZ111)+= -=-       +)ZZ11))))1)+++))111)11+++---+ZZZ1111111Z1XAMAX11+= -1M+''''..-.A -+))11+ =ZM+++'''...---------..-...'A+)1)X-
+                                                                              C++++''.'             CCC+++'''.........''.'''+      C
+                                                                               CCCC++'+                CCC+++'''''''''++'+++C
+                                                                                   CCXC                   CCCXXXXXXXXXCCXCCC
+                                                                                     C                       CCCCCCCCC  C
*-==1ZZZ1ZZ1)+=-=-       -+1ZZ1)+))11))))))))))))++=--+1Z111)11111XM--MXZ)+   )M+'''.--.M- -=++)1+-+A+'+''''''..--..---...''''=)+11A'
+                                                                   CC          C+++'..'             C+C++++++''..''...'''++++C     +
+                                                                                CCC+''+              C CCCCCC++''++'''+++CCCC      C
+                                                                                   CXXC                      CCXXCCXXXCCC
+                                                                                    CC                         CC  CCC
*  -=1ZZ1ZXXZ1===-        -+1ZZ11)11)++=++==)+))1)))+-=)Z1Z1111)+)ZAM--AX1)+=  =A'''...'M+   ====1+ 1='..''++''''''....''+''=''-X11=-
+                                                                    CC          +++'''+             C+''++CC++++++''''++C++C++C   C.
+                                                                                CCC+++C              C++CC  CCCCCC++++CC CC CC     '
+                                                                                   CCC                CC          CCCC             X
+                                                                                                                                   C
*    =1XXXZZZZ1)+-    -     +1ZZ11)1Z)+--===+-==)111))=+)ZZZZZ1)+=+XM--ZZX11)=  )M=+..''=X-   ===)Z+)-'...'''....'..'+''+++++++''MA+-
+                                                                    CC           CC''++C            C+'''+++''''+''+C++CCCCCCC++  C.
+                                                                                   ++CC              C+++CCC++++C++C CC       CC   '
+                                                                                   CC                 CCC   CCCC CC                X
+                                                                                                                                   C
*    -=1ZXZZZZZZ1+-         -+ZZ1111Z)+-  === --=)1Z11)))1ZZZ11)++-1M--AXXZ11)=- =)Z-'.'+A+   =111XZZM+'...'...-..........'..'+++-M-+
+                                                                    CC             C+'+C             C+'''+'''.''''''''''+''+CCCC CC
+                                                                                    C+C               C+++C+++'++++++++++C++C
+                                                                                     C                 CCC CCCXCCCCCCCCCC CC
+                                                                                                              C
*     =+1ZXZZZZZ11+=-        -)11Z111))=  -=----- =11Z111111111++)=1AMMAZZZ111Z1= -=+X=-X1)=  1AAXXXXXXM+....---......'.-....-.'+AZ1Z
+                                                                                     CC                C''''...''''''+'.''''.'+C
+                                                                                                        ++++'''++++++C+'++++'+C
+                                                                                                        CCCCXXXCCCCCC CXCCCCXC
+                                                                                                            CCC        C    C
*    - -+1ZZZZ1ZZ1)++--       -=1Z1)1))+-   --=    =1ZZ1Z1111ZZ1ZXXAMAXXZZ11)1XZ)==- +Z1)X-A= )AMXZZXXZA+'.''..''''........'..--+-=MA
+                                                                                         C             C+'++''++++''''''''+''..CCC
+                                                                                                        C+CC++CCCC++++++++C++''
+                                                                                                         C  CC    CCCCCCCC CCXX
+                                                                                                                             CC
*       -1X111ZZZ1Z111+         =)11ZZ1)+    -=-    -)XXZ1))1ZZZMMM-MAAXZZZ11ZXXZZ1Z)))))ZM-1  ZAAXXZXM+'..''''.'''''''''''...--...'=
+                                                                  C                       C           C+''++++'+++++++++++'''..'''+C
+                                                                                                       C++CCCC+CCCCCCCCCCC+++''+++C
+                                                                                                        CC    C           CCCXXCCC
+                                                                                                                             CC
*        =1Z11ZZZZ11ZZZ+-        -+1ZZ1)+=-  --=-    +1XXZ11)ZXXMAAAAAXXZZZZZZXXZXXXXZ1)111Z1  -ZAXXXA+--....''.''''''+''+'+'+'....+-
+                                                                                                     C..''''++'++++++C++C+C+C+''''CC
+                                                                                                      ''++++CC+CCCCCC CC C C C++++
+                                                                                                      XXCCCC  C               CCCC
+                                                                                                      CC
*         =111)111111Z11+--        +11111)=     =+-   -1XXZZ11XAAMAMMXXXXZZ1ZXXXXXXAXZZZZZ1))=  -ZAAA+------....'''..''.''''++++=+==-
+                                                                                                    C......''''+++''++'++++CCCCCCCCC
+                                                                                                     ''''''++++CCC++CC+CCCC
+                                                                                                     XXXXXXCCCC   CC  C
+                                                                                                     CCCCCC
*          =1Z)1)+)1Z1)11)+ -        +)1)))-     =+=    )ZXZ1)ZXAMAMMAXAXXX11ZAXZXXAMA  XZZZ1)-  =XM=---...-...'.'''''.'+'+'++==-MZ+1
+                                                                                                   C...'''.'''+'+++++'+C+C+CCCCC
+                                                                                                    '''+++'+++C+CCCCC+C C C
+                                                                                                    XXXCCCXCCC C     C
+                                                                                                    CCC   C
*           =)1Z1+=)ZZZ1)Z)=         -=)11)+     -+)=    )XXXZ1XAAXAXAMAAAX1)1AAAMMMMA1ZZXZZ11)-  +M'----..'+++++++'++++++=-MXZZZZ+
+                                                                                                   +....''+CCCCCCC+CCCCCCCC
+                                                                                                   C''''++C       C
+                                                                                                    XXXXCC
+                                                                                                    CCCC
*       -   =)ZZZ)-+1ZZ111)+-         -++)))-      =)+    =1XX1+ZXXAAAMMM-MXZZXAAAMMMAXZZZ1))11+=  ==--.-...'++++=---AXAMMXXX11)1))+=
+                                                                        C                          C..'.'''+CCCCCCCC
+                                                                                                    ''+'+++C
+                                                                                                    XXCXCCC
+                                                                                                    CC C
*            -1XXZ+ =)11Z1)))- -      -=-==++-  =   =1+-    +Z1-)AAMAMMMAMAXZZZ1ZAAMAAXZZZ1111))1=  +=.---.....''+AXXXXAAAXZZZZZZZ11Z
+                                                                                                    C'...'''''++C
+                                                                                                     +'''+++++CC
+                                                                                                     CXXXCCCCC
+                                                                                                      CCC
*             +ZXZ)- -+1)1))+-=            ---  -=   +))     =+-=ZAAXMMAX1Z1))1++AMAXXXX1ZZ111+-ZZ=  =---..''''+--1ZAXXMMMAZXZXZZZ1ZZ
+                                                                                                     C..''++++CCC
+                                                                                                      ''++CCCC
+                                                                                                      XXCC
+                                                                                                      CC
*--            1XZ)-  =)+)111=--- - -        -=  =+=  =)+-     - +ZM---AZZZZZ))1+XAAAAAXZZZ111= +Z))-  A'..''+=MMAAAM-X11)1)ZXX1AXXXZ
+                                                                   CCC                                 +''++CC      C
+                                                                                                       C++CC
+                                                                                                        CC
*+-            =1Z1+   +1)))))= ===---            ))-  =))=     - =Z='+AXZXXXZ+11A-MMMMZZ111Z1+ =A11)-  Z+.===MAAAA=--X)=====1ZXAMAAX
+                                                                   C+C           C                      C'CCC     CCC
+                                                                    C                                    +
+                                                                                                         C
*1+             +11+   =ZZ11)++--===-=-           -)1=  -))-       =Z++-MAAZAAZAM---MAAX1111Z1=  XX1111)X'+Z)MAXXXM++M1)==)))Z1)ZXXXX
+                                                                    CCC         CCC                     +C        CC
+                                                                                                        C
*X1+-           -+1+   -1Z111)+=  -+= -             ))=  =)1+       =X-''=MZXAMZ==-MXXXZZ11)11=  ZXZZZ-...=)=XZXAM-MMXXZXXXXXZZ)+++)X
+                                                                     C++C      CCC                   C'''C       C
+                                                                      CC                              +++
+                                                                                                      CCC
*MAX)            -))-   )ZZZ1)1+---=+----  -==      -+)=- -))+       =1=--=XXAA-MAMMAZZZ11ZZ1Z+  1MX1X-'..'=M=AA=MM-AM-+''=MXXZ1)=--+
+                                                                      C..C    C                      C+''+C C  C  C  CC++C
+                                                                       ''                             C++C             CC
+                                                                       XX                              CC
+                                                                       CC
*AAAX+            =+-   )1Z11)1+-  -==+--   -+)=      =)+  -=++        )=.+XXXZMMMMAMAZ1ZZXXZ1)+ )=MZZM.-.'--=M--AXAXA+...+--M1)+)=--
+                                                                       C'C                       C    '.'+CCC CC     C'''CCC
+                                                                        +                             +'+C            +++
+                                                                        C                             CXC             CCC
+                                                                                                       C
*XAAMX)           --    =Z111)1)=  -=++)-    =)1+-     +)=-  -+=       -+AAXXXAMM-MMAAXZZXXMX1)) -M-XZA'---+-MMMX11111X'..+MZZ)=-+))+
+                                                                                C                 C   +...CC          +''C
+                                                                                                      C'''            C++
+                                                                                                       XXX             CC
+                                                                                                       CCC
*XZAMMX=                =Z11111)+    =+++ --- =+))+     +1+    ++     -  -+1XXAMM--MAXXZ1ZAA1)=+- =1111A...-.==A))11)))XAXZ1=-    =Z1
+                                                                                CC                     '''.'CC
+                                                                                                       +++'+
+                                                                                                       CCCXC
+                                                                                                          C
*XXXAMA1=               )111ZZ11)-   -=+++=-=-- +)1+=   -))=    =--    --  -1XAAM---AXZZZXAZ1)+=+- --1ZX+'='+-+MXAAAZ1111)+----++=)XA
+                                                                                CCC                    C+C+CCC
+                                                                                                        C C
*AAXXXMAZ-              )Z1ZZZZZ1=    -+++=++=-  =11)+-  -++=    --     -   -1XAM--MAZZZZZZ1Z1+)1)+=--)1M'+-+-AXM-MMXZZ1)))++11AAZAMA
+                                                                                CC                      +CCCC   C
+                                                                                                        C
*MMAAXAMA+             -)1ZZ11111+=     +)+)+)+-  =)11)=   =+      -     --- -1M-MAAXZZ1XXZ111))11)))  =A''==M1X++=+-MXX1ZZZXA-MAXM-1
+                                                                               C                        ++CC   CCCCC         C    C
+                                                                                                        CC
*MAXXXAMM1=            -Z1Z111Z11)+-    -=)))))+== -=)11+-  -- -   -==        -X-AXAX1)1ZZ1Z111)1)))Z+   X-MA-===AA+.'MZ11ZXXZXXX)ZZ+
+                                                                               C                         C  CCCC  C'+
+                                                                                                                   +C
+                                                                                                                   C
*MMMAXAAMA)-           =11)11ZZ11ZZ)=     ++)))))-=--+)Z1)+          --      -=1AXAAX11)1ZZZZ111)))1ZZ=   AMMM==MXM=+=-X111ZXXXXZZ1))
+                                                                                                             CC   CCCC
*-MAAXZAAAX+-          -))11Z1ZZZZZ1+-    -+)+))))+==-=11))=          -       =+ZAAAZ1111ZXXZ1Z1)ZZXXX1=  ZXZXMMMM-M-MAXXAA11ZXXZZZ11
+C                                                                                                                C C
*-=MAXZXAAA1=          -++111)ZZ1111)+-    -+)+)11)++=-=1Z1)=-    -     -      =11XXZ1)1ZXXXZ11ZZAAAAZ11= =Z)ZAM=-MAAMMAM--X1)ZXXZZMX
+CC                                                                                                             CC       CC
*M-MMXZZXMAX+           -=+)1111ZX1)1)=-    -+1))11))++==1ZX))-      -          =)1XZ)11ZXMAXZXAMM-1Z11X1- -1ZXA=-XZZXX-MM-A1)+Z1XXMM
+ C                                                                                                             CC     C  C
*1ZAMMXZXAMAZ=-           =+++)1ZZZ)1)++-     +1))1Z))+ =+)X11)+      - -- -    -+))AXXXAMAXXXA-MM-AAAX11+  -1ZZAMXZZZAMMAAAX)+1)ZXXA
+                                                                                              C  C
*+)ZAMXXAAMAX+-           =++=-+)1ZZZ11==     -)))11Z1+ +))11Z1)+=       - ---   -+1ZAMM-MMAA-M-MMMAAXZ1Z1=  +Z1ZAMXXZX-MXZXAZ1)))11Z
+                                                                                       C    C C                       C
*)+)1XAAAAMMMZ=            =)====)ZZZZ1+++-    -11)111)))1Z1)ZZ11))        --=-   +11A-==M-MM=---MMAAX1)ZXZ   +XZ1XMMAZAXAXXXXZ))))+)
+                                                                                     CCC C  CCCC
*)+=+1ZXAAAAAX+            -=+===-=)ZZZ1)+=-    -)111)Z1)+111))1ZZ1)-       -==-   =)+XM-M+=-=-MMAXMAX1XAMM=   ZZZZAAMMMAAXZAXZ1)+)++
+                                                                                       C CCCCC
*))+=))ZAMAMMAZ=            -=1)=--=+1ZZ))1+=    +)Z11+1Z))11)=+)ZZ1)=-     --+===--)1ZA---MMMMAMMAMMXZZXXZZ   -ZXAXZZAAXAAMXZ1))))++
+                                                                                       CCC
*)))++++ZAAMMMX+             -)1)=---+1XZ)))=--  -=1))-1Z1)1)1)==)111)+-   == --===-=))ZMMMMMMAM-=-AAXXZZZXA+   1XXXZ1Z1ZZAAAZ1111Z))
+                                                                                               CCC
*))++++++ZXM-AA1=             =)))----=)Z1=)+=-    =)ZZ1Z11)++))+-=)111+-   =+= =))+)1))A=+==-M-=+-AAXXZ1ZXAA+  +AAZXZZZ11ZXXZ1111ZZ)
+           C                                                                            CCCCC CCCC
*)))))++++ZZAAMX+-              =)+--- -+1=-))-    -=1Z1)11))=-=)= -)1Z1+=   -)=-=))+)1+)M=+=-=-=-=-MMAXZXXM-A)  ZZ)11Z)))ZXXZZ11)))1
+                                                                                         CCCCCCCCCC        C
*)+)))+=+++)XAAAX=               +++=-  --+--==-     -1Z)+1Z1)+-=++  ++)1)-   =1+--11Z)1)Z-=+----=+-MAXXAM--AXZ- )XZZ11)111111Z111)++
+                                                                                         CCCCCCCCCC      CC
*)))++)+==+=1XXAX)-              -=++-     -  =+-     +Z1)))Z)++-=1+===+))+--  =+)=)1ZZZZ)X-=MMMM==AAXMMM==-AAX1- )ZZ11)))))))ZZZ11)1
+                                                                                          CC    CC      CCC
*)+))+++=-==+ZZAX1-               -===     -  -+=      )ZZ1)11)1+=)11+===)))+    ))++)Z1Z)1A-MAAM-MZZA-MAM=XAAMMX==+Z)=+=+=)++)1Z1Z1Z
+                                                                                           C    C    C   C
*)++=)==+=+-=)1XAZ+-               -+=-    )1- -==      +1)1)+1)+===1))=-+++1=    +1))))Z+=X==AMMMAZAMMMAAMAA--M--X))+++++ -1)1+)++1Z
+                                                                                           CC               CC CC
*+==++-=+=+===+)XZ)+-               ---    +X)--=+-     -=1Z))11Z)1++)Z1))+=+)+-   =+)11X1+)M==--M-MM-MMMAXM-MMMAM-MZ1Z1111- ))1)+=+)
+                                                                                            CCCC C  C      C     C
*=====+==++===+)ZZ1=                 ---   -1Z)- -==-     =1Z11)111))+1Z1))+-=+=+   --1)1Z)+1-+----=-M-AXAMM-MMM-MMXX1ZZ1ZZ)=)+)+)=+=
+                                                                                            CCCCCCCC C     C   C
*=====+===+=-=-=)Z1+-                  --   )XX)  -++      +111))1))1++1Z1))==+=)+    ==+++)+X===----MAAAAMM-MMAMMAXZXZZ11))11)+++=++
+                                                                                             CCCCCCC       C
*-==++=--=-==--=+))=-                 ---   =XXZ+  -+=      -1Z1++1Z))++)1Z))+==+))-     =+++1A--=A-MXXAMMM-MMMAAAAXXAXXZ)) )ZZ1)+===
+                                                                                              CCC C       C
*--====---=-----=))+-                   -    1AX)   -++      +1Z1+=)1)))+))111)+)+11+    -=+++)A==-MM-M===-=-MMMAAZXZZZ111) -))1Z)++-
+                                                                                               CCC  C CCCCCC
*- --====-==-----++==-                      =+)X1=   -+      -+ZZ1)))))))++)11)))=+=+=    ---=+)X==M-=-==--M--MAXAZ1111111)  +++)11++
+                                                                                                CC CCCCCCC CC
*-----=-=-=---  -=++=-                    - =+ =ZX+   ---     -=1XZ1++)1)++++1Z11+=++=      --+=+-=MM=---M-MMMXAAXZZ11ZZXZ-  )===)1))
+                                                                                                CC  CCCC C
*----=----= - -    ==                        -  +XA)    --       XX1+=)1)+++=+)11=+=+++     --=)=Z=+==--MMAXAXXXXZZZXXXZXA1  +++==-=)
+                                                                                                 CCCCCC
*   -=---=--   -- -==-                           +11=   --       =XXZ))+)11)===+1Z))1))+-     =)))A''=====MMAXXXAAAAXAXMXX)  =+++==-=
+                                                                                                  ++CCCCC
+                                                                                                  CC
*      ------ -    ---                            =)+            -=)ZZ))++11)====+)11)11)=     =+)-1+.'+'''+=----MAAAXXXAXZ=   ++===X
+                                                                                                   C'+C+++CCCCCC
+                                                                                                    +C CCC
+                                                                                                    C
*-  -  --=---  -   ==                       -      ++-              -+1Z1+)Z1)++=-=1ZZ1))1+=    -+= ++.+=++'''.+-AAXAXAXAXXZ-   =-+M'
+                                                                                                    C'CCCC+++'CC                   +
+                                                                                                     +    CCC+                     C
+                                                                                                     C       C
*=- - --- -  -   -  - -=                           =))-              -1Z1)==111)=+=+)+++)11)=     +- 1==-==MMA-MMAAXXXXZX1Z11-    1+.
+                                                                                                     CCCCC   C                    C'
+                                                                                                                                   +
+                                                                                                                                   C
*--      -- ---      --                             )1)-              =ZZ1)+=)ZZ+-=++)=+1))))=    =++=X=++'++++==AAXZX1ZZ)1))+   )+.-
+                                                                                                      CCC+CCCCCC                 C'.
+                                                                                                         C                        +'
+                                                                                                                                  CX
+                                                                                                                                   C
* -- -    -                                          1Z)=              =)1Z1++)ZZ)===+)+++++))=     =+=)='''..++=MAXXZ1Z)+++     =.-.
+                                                                                                       C+++''CCC                C'.'
+                                                                                                        CCC++                    +'+
+                                                                                                           CC                    CXC
+                                                                                                                                  C
* -- --  -                                           +ZZ1=               +ZZ))+)1Z1)+==+++==)))+     == =-+'-.-MMMAXXAX1)+)=    A..-.
+                                                                                                        CC+.'C                  ''.'
+                                                                                                          C'+                   ++'+
+                                                                                                           XC                   CCXC
+                                                                                                           C                      C
*- -  -     -   -   -                                -+XMZ                =ZZ))++)X1)+-=-=++=--++=       -M'.MZ1111XAMA1)+))   M...-.
+                                                                                                          +'                   '''.'
+                                                                                                          C+                   +++'+
+                                                                                                           C                   CCCXC
+                                                                                                                                  C
*      -        ---                                   -XXXZ                -)11)+++11)1)===+)+  -+-    =   XM=  ==+1XMX)+))+- +....--
+                                                                                                                              ''''..
+                                                                                                                              ++++''
+                                                                                                                              CCCCXX
+                                                                                                                                  CC
*     -  - -                                           -++1)=                +Z1)++++11))=-=++)= --    =++  -  -=+=+=)Z)+))==1=....--
+                                                                                                                             C''''..
+                                                                                                                              ++++''
+                                                                                                                              CCCCXX
+                                                                                                                                  CC
*        --           -                                 )))1)-                +11))+=))1Z+=- =+))+-=    =)==    --== =)+++=-=-''.-..-
+                                                                                                                            C++'.''.
+                                                                                                                             CC+'++'
+                                                                                                                               CXCCX
+                                                                                                                                C  C
*       ----                                            +ZZZZZ=                =))+-=)=+1Z)==  +1)+)+-    === -=  --=  -    )''.'..-.
+                                                                                                                            ++'+''.'
+                                                                                                                            CC+C++'+
+                                                                                                                              C CCXC
+                                                                                                                                  C
*=          -                                            -+1ZZZ+                -+))++)==))++= -+)1)+=     -=- ---=--      -=.'....--
+                                                                                                                           C'+''''..
+                                                                                                                            +C++++''
+                                                                                                                            C CCCCXX
+                                                                                                                                  CC
*+--         -                                            +)))1)                  -))=+)===)1+---=))))==    ==-  --- -    )-+'+'.'.--
+                                                                                                                          CC+C+'+'..
+                                                                                                                            C C+C+''
+                                                                                                                               C CXX
+                                                                                                                                  CC
*++=                                                      =1111)=                  -))+)+=-=+))-=-=++)+==    ==-  ----  -M=+''+'''.-'
+                                                                                                                         CC++C+++'.C
+                                                                                                                           CC CCC+'B
+                                                                                                                                 CXH
+                                                                                                                                  CX
*=+=-+=-        --                                         +ZAMA)                    =++=-==-+)=+----=1+=-   -=   ==--=)=''''++''.--'
+                                                                                                                       C++++CC++'..C
+                                                                                                                        CCCC  CC+''B
+                                                                                                                                CXXH
+                                                                                                                                 CCX
*=---+++=       ==                                          )ZAX1=                     )+==--- ==++-   ==+==  ==    =+Z=+'..''+'.-'''
+                                                                                                                      CC+''++C+'.CCC
+                                                                                                                        C++CC C+'BBB
+                                                                                                                         CC    CXHHH
+                                                                                                                                CXXX
*=-----=---     -))                                          =11++=                    -++=  -  -=+--- --==-      - =X+''''.'''.-''''
+                                                                                                                     C++++'+++'.CCCC
+                                                                                                                      CCCC+CCC+'BBBB
+                                                                                                                          C   CXHHHH
+                                                                                                                               CXXXX
*+--  -------   -11=                                          -==++-                  +Z1=+=      =--     ==    =)AM-+++.'.....-'''''
+                                                                                                                   CCCC'+'''''.CCCCC
+                                                                                                                       +C+++++'BBBBB
+                                                                                                                       C CCCCCXHHHHH
+                                                                                                                              CXXXXX
*-===--- -       =)+=                                          -=)Z1-             +1M='..-Z=-       -          X..+='+'''...'.-'''''-
+                                                                                    C+''C                      ''CC+C+++'''+'.CCCCC.
+                                                                                     C++                       ++  C CCC+++C+'BBBBB'
+                                                                                      CC                       CC       CCC CXHHHHHX
+                                                                                                                             CXXXXXC
*+--==+=---       -+==-                                          ZAA1=--+=+1ZXA-==+'++''.--'MXZ)+-  -        )=-''-'+''.'.''.-'''''-.
+                                                                              CCCC+CC++'..+                  C.C+C+C++'+'++'.CCCCC.'
+                                                                                  C  CC+''C                   'BC C CC+C+CC+'BBBBB'+
+                                                                                       CXX                    XH      C C  CXHHHHHXC
+                                                                                        CC                    CX            CXXXXXC
*=-==--==--         -=-                                          =XAMAM-='..-.++++'''''''+.--''+=-1-       -X'-'-+=''''.-...-'''''-.-
+                                                                      CC+''.'CCCC+++++++C'..++CCC           +.C.CC++++'.'''.CCCCC.'.
+                                                                        C++'+    CCCCCCC +''CC              C'B'  CCCC+'+++'BBBBB'+'
+                                                                         CCXC            CXX                 XHX      CXCCCXHHHHHXCX
+                                                                           C              CC                 CXC       C   CXXXXXC C
*  =++++=++--                                                 -)ZAMM==--=++..'+=++'+++'=+''+.+++++-A+     =--'''.=+..'..--'-''''''-.-
+                                                                   CCCCCCC''+CCCC+CCC+CC++C'CCCCCC        C.CCC'CC''+''..+.CCCCCC.'.
+                                                                          ++C    C   C  CC +               'BBB+  ++C++''C'BBBBBB'+'
+                                                                          CC               C               XHHHC  CC CCXX XHHHHHHXCX
+                                                                                                           CXXX        CC CXXXXXXC C
*   ==))+)+==-                                         --)ZA--==------M-=-===-==+++==+'++===-MMAAM'=X+    =--''-'-'.+''-----'''''-.--
+                                                           CCCCCCCCCC CCCCCCCCCCCCCCC+CCCCCC     +C      C..CC.+C+'C++.....CCCCC.'..
+                                                                                     C           C        ''BB'C C+ CC'''''BBBBB'+''
+                                                                                                          XXHHX   C   XXXXXHHHHHXCXX
+                                                                                                          CCXXC       CCCCCXXXXXC CC
*-   --==++)+===                                   =)ZM--++=+----=====--==-+==++++++='..+---+'=.----.A=++=.-''--''.-..'---'''-''-----
+                                                      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+''CCCCC+C'....' CCCC'.CC..++'.''+...CC+.CC.....
+                                                                                    C++     C +''''+     +'BB''CC+'++C'''BBC'BB'''''
+                                                                                     CC       CXXXXC     CXHHXX  CXCC XXXHH XHHXXXXX
+                                                                                               CCCC       CXXCC   C   CCCXX CXXCCCCC
*====-   -===+++==-                            )ZXM-======-=------====-=====-=+==+=+++'+=--=--'''''''''''+------.''..'..-''''+'-..---
+                                                  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCCC..CCCCCCCCCC+C......'++''+''.CCCCCC.''...
+                                                                                     C     ''BBBBBBBBBBC ''''''+CC++C++'BBBB B'++'''
+                                                                                           XXHHHHHHHHHH  XXXXXXC  CC CCXHHHH HXCCXXX
+                                                                                           CCXXXXXXXXXX  CCCCCC        CXXXX XC  CCC
*=+)++=     -=+)=+=-      =+=               -Z-+=======----======---=--+==+-=++==+++++=M-M=.''''''''''''+.--'---.'.--..--''''+-'.-.--
+                                             CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C'CCCCCCCCCCCCC'..C...'+'..''..CCCCC.+'.'..
+                                                                                          +BBBBBBBBBBBB +''B'''+C+''++''BBBB 'C+'+''
+                                                                                          CHHHHHHHHHHHH CXXHXXXC CXXCCXXHHHH X CXCXX
+                                                                                           XXXXXXXXXXXX  CCXCCC   CC  CCXXXX C  C CC
*=++++)-=---    - -=--     +=+-           )A=+'+=--==-==-==+=====+=--==+++'+===-=+''+=MM-M=-'''''''''''-=.---''--...-.-''''''-'.-.'--
+                                           CC+CCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCCCCC++CC  C C.CCCCCCCCCCC.C'...CC..'''.'.CCCCCCC+'.'+..
+                                             C                           C       CC       'BBBBBBBBBBB' +'''BB''+++'+'BBBBBB C+'+C''
+                                                                                          XHHHHHHHHHHHX CXXXHHXXCCCXCXHHHHHH  CXC XX
+                                                                                          CXXXXXXXXXXXC  CCCXXCC   C CXXXXXX   C  CC
*==--=+=++==-       ----     -        -)X-++'=====-='==++===+==--+'=+++++====+==++=+=------'''''''''''''+'----'---..-.-'''''--'..----
+                                        CCC+CCCCCCC+CCCCCCCCCCCCC+CCCCCCCCCCCCCCCCCCCCCCC.CCCCCCCCCCCCCC+....C...''.'.CCCCC.C+''....
+                                           C       C             C                       'BBBBBBBBBBBBB C''''B'''++'+'BBBBB' C++''''
+                                                                                         XHHHHHHHHHHHHH  XXXXHXXXCCXCXHHHHHX  CCXXXX
+                                                                                         CXXXXXXXXXXXXX  CCCCXCCC  C CXXXXXC    CCCC
*== -=-++=++=----                  =)XM==++==-++==+=++=+====+==+-='==+====--++=+====+--M-='''''''''''''-+..--------.--'''''-'M'------
+                                      CCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCC.C''........'..CCCCC.+ +......
+                                                                 C                       BBBBBBBBBBBBB' ++''''''''+''BBBBB'C C''''''
+                                                                                         HHHHHHHHHHHHHX CCXXXXXXXXCXXHHHHHX   XXXXXX
+                                                                                         XXXXXXXXXXXXXC   CCCCCCCC CCXXXXXC   CCCCCC
*+=- -==+--=+====-               1A=+++=''+++=+++++=++++==++++=+++++++=-+===++====++'--M-+'''''''''''''''.-------'---'''''-.M+.'-----
+                                  CCCCC++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+CC CCCCCCCCCCCCCCCC+'.......C...CCCCC.' C'+.....
+                                       CC                                          C     BBBBBBBBBBBBBBC+'''''''B'''BBBBB'+  +C'''''
+                                                                                         HHHHHHHHHHHHHH CXXXXXXXHXXXHHHHHXC  C XXXXX
+                                                                                         XXXXXXXXXXXXXX  CCCCCCCXCCCXXXXXC     CCCCC
*=----- - -++-==++--          =XM+'.=+=='.+++==+==+=+++'++=-'++''====+=====+++-===+==+=---'''''''''''''-+'....--''''''''-'==.'..----.
+                                C+'CCCC+'CCCCCCCCCCCCC+CCCC+CC++CCCCCCCCCCCCCCCCCCCCCCCC.CCCCCCCCCCCCC.C+''''..CCCCCCCC.+CC'+''....'
+                                 C+    C+             C    C  CC                        'BBBBBBBBBBBBB' C++++''BBBBBBBB'C  +C++''''+
+                                  C     C                                               XHHHHHHHHHHHHHX  CCCCXXHHHHHHHHX   C CCXXXXC
+                                                                                        CXXXXXXXXXXXXXC      CCXXXXXXXXC       CCCC
* =-=------= -===-----       X+'===+++=+.'''=++=++''+=++==+++++=+=+++'=-=+++=+=+===+==--M.''''''''''''''''---''''''''''-'-.--.-------
+                             C+CCCCCCCC'+++CCCCCC++CCCCCCCCCCCCCCCCC+CCCCCCCCCCCCCCCCCC 'CCCCCCCCCCCCCC++...CCCCCCCCCC.+C'..'.......
+                              C        +CCC      CC                 C                   +BBBBBBBBBBBBBBCC'''BBBBBBBBBB'C +''+'''''''
+                                       C                                                CHHHHHHHHHHHHHH  XXXHHHHHHHHHHX  CXXCXXXXXXX
+                                                                                         XXXXXXXXXXXXXX  CCCXXXXXXXXXXC   CC CCCCCCC
*-===----=------    --     =M--''+++++=+-.'+==+=+++++=++++'++=+++===+++==+=+===+=+=+==--=-'''''''''''''''--'''''''''-.-+-.-.---------
+                            ..++CCCCCCC.'+CCCCCCCCCCCCCCC+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.CCCCCCCCCCCCCCC..CCCCCCCCC.'.CC'.'.........
+                            ''CC       '+C               C                              'BBBBBBBBBBBBBBB''BBBBBBBBB'+'  +'+'''''''''
+                            XX         XC                                               XHHHHHHHHHHHHHHHXXHHHHHHHHHXCX  CXCXXXXXXXXX
+                            CC         C                                                CXXXXXXXXXXXXXXXCCXXXXXXXXXC C   C CCCCCCCCC
*-+=-=- ------             ++----.''++'+--.+++=++++=+++'++=+++=+++-+++'==++++==+++M+===-=.'''''''''''''''-''''''''''-'.--.------.----
+                           C....'++CC+C..'CCCCCCCCCCCC+CCCCCCCCCCCCCC+CCCCCCCCCCC CCCCCC'CCCCCCCCCCCCCCC.CCCCCCCCCC.+'..'......'....
+                            ''''+CC  C ''+            C              C                  +BBBBBBBBBBBBBBB'BBBBBBBBBB'C+''+''''''+''''
+                            XXXXC      XXC                                              CHHHHHHHHHHHHHHHXHHHHHHHHHHX CXXCXXXXXXCXXXX
+                            CCCC       CC                                                XXXXXXXXXXXXXXXCXXXXXXXXXXC  CC CCCCCC CCCC
*=====-------              M'''.--.''+''.--'====''''+++=====+++=====+'+=++++==+='+=+=++M=''''''''''''''''''''''''''-.'.---------.----
+                           +++'..'++C++'..+CCCC++++CCCCCCCCCCCCCCCCC+CCCCCCCCCC+CCCCCC C+CCCCCCCCCCCCCCCCCCCCCCCCC.'+'.........'....
+                           CCC+''+CC CC+''C    CCCC                 C          C        CBBBBBBBBBBBBBBBBBBBBBBBBB'+C+'''''''''+''''
+                              CXXC     CXX                                               HHHHHHHHHHHHHHHHHHHHHHHHHXC CXXXXXXXXXCXXXX
+                               CC       CC                                               XXXXXXXXXXXXXXXXXXXXXXXXXC   CCCCCCCCC CCCC
*-=+-=--=-= =             Z''+.''-'.'+'''--'+++'...''+++=++===+===++=+'++'+''=++'+=-.''==-''''''-'''''''''''''-''---------'----------
+                          ++C'++.C'+C+++..+CCC+'''++CCCCCCCCCCCCCCCCC+CC+C++CCC+CC.'++CC.CCCCCC.CCCCCCCCCCCCC.CC.........C..........
+                          CC +CC'B+C CCC''C   C+++CC                 C  C CC   C  '+CC  'BBBBBB'BBBBBBBBBBBBB'BB'''''''''B''''''''''
+                             C  XHC     XX     CCC                                XC    XHHHHHHXHHHHHHHHHHHHHXHHXXXXXXXXXHXXXXXXXXXX
+                                CX      CC                                        C     CXXXXXXCXXXXXXXXXXXXXCXXCCCCCCCCCXCCCCCCCCCC
*-=--------             = A..''''.-.'+''=..'+++.....'''''++++=+++=++++'+=++''++''+-'-.'=='''''''=.''''''''''----------------'--------
+                          ''++++'.'+C++C''+CCC'''''+++++CCCCCCCCCCCCC+CCCC++CC++CC+.'+CC+CCCCCCC'CCCCCCCCCC................C........
+                          ++CCCC+'+C CC ++C   +++++CCCCC             C    CC  CC  C'+C  CBBBBBB +BBBBBBBBBB''''''''''''''''B''''''''
+                          CC    CXC     CC    CCCCC                                XC    HHHHHH CHHHHHHHHHHXXXXXXXXXXXXXXXXHXXXXXXXX
+                                 C                                                 C     XXXXXX  XXXXXXXXXXCCCCCCCCCCCCCCCCXCCCCCCCC
*----=-==- -          -XX+M'''''+=-+''''+'..+++.......'.''++=+'+++++++=++++'.'+++'+'--.+++-'''''M)'''''''''.----'-''--'----'---'-''''
+                          +++++CCCC++++C+''CCC'''''''+'++CCCC+CCCCCCCCCCCC+'+CCC+C+..'CCC.CCCCC  CCCCCCCCC'....C.CC..C....C...C.CCCC
+                          CCCCC    CCCC C++   +++++++C+CC    C            C+C   C C''+   'BBBBB  BBBBBBBBB+''''B'BB''B''''B'''B'BBBB
+                                         CC   CCCCCCC C                    C       XXC   XHHHHH  HHHHHHHHHCXXXXHXHHXXHXXXXHXXXHXHHHH
+                                                                                   CC    CXXXXX  XXXXXXXXX CCCCXCXXCCXCCCCXCCCXCXXXX
*=--------  --        ++.'.+-+.'=)-+Z+'.''..'+''.....'....++=+++=++''++++''''.+++-'.-''++=-'''''X--''''''''.-'''''---''--''-'''---'''
+                      C'+'CCC'+C    C+'++''+C++'''''+''''CCCCCCCCC++CCCC++++'CCC.+'.++CCC.CCCCC  .CCCCCCCC'.CCCCC...CC..CC.CCC...CCC
+                       +C+   +C      C+CC++C CC+++++C++++         CC    CCCC+   'C+'CC   'BBBBB  'BBBBBBBB+'BBBBB'''BB''BB'BBB'''BBB
+                       C C   C        C  CC    CCCCC CCCC                   C   X CX     XHHHHH  XHHHHHHHHCXHHHHHXXXHHXXHHXHHHXXXHHH
+                                                                                C  C     CXXXXX  CXXXXXXXX CXXXXXCCCXXCCXXCXXXCCCXXX
*=-=--- --  ---  -   -1='''==+.-.M)=++''''''.++'...-.......'+++'+.'''''+''''''++.-...''.'+.'''''+ Z''''''''--'''''''-'''''''''''+M'''
+                      C+++CCC'.'    C++++++'CC+'''.'''''''+CCC+C'+++++C++++++CC'.'''++'+C'CCCCCC  CCCCCCCC..CCCCCCC.CCCCCCCCCCCC CCC
+                       CCC   +'+     CCCCCC+  C+++'+++++++C   C +CCCCC CCCCCC  +'+++CC+C +BBBBB   BBBBBBBB''BBBBBBB'BBBBBBBBBBB  BBB
+                             CXC           C   CCCXCCCCCCC      C              CXCCC  C  CHHHHH   HHHHHHHHXXHHHHHHHXHHHHHHHHHHH  HHH
+                              C                   C                             C         XXXXX   XXXXXXXXCCXXXXXXXCXXXXXXXXXXX  XXX
*---=--==-- --       )M=+++--=+...=ZX='...'+''+''..-....'....''''..''.''''''''++''.--.'.'''-'''''=).''''''''----''''''''''''''''.-'--
+                      CCCCCCCC'''C  C+'''+C++C++''.''''+''''++++''++'++++++++CC++'..'+'+++.CCCC+  'CCCCCCCC....CCCCCCCCCCCCCCCC'.C..
+                              +++    C+++C CC CC++'++++C++++CCCC++CC+CCCCCCCC  CC+''+C+CCC'BBBBC  +BBBBBBBB''''BBBBBBBBBBBBBBBB+'B''
+                              CCC     CCC       CCXCCCC CCCC    CC  C            CXXC C   XHHHH   CHHHHHHHHXXXXHHHHHHHHHHHHHHHHCXHXX
+                                                  C                               CC      CXXXX    XXXXXXXXCCCCXXXXXXXXXXXXXXXX CXCC
*--- ---=- ---      -1==+=-====++++++=-'...''''.........'''......--.'''''.''.'.'''.-.-'''''.-''''X+A-''''''''--.-'''''''''''---.'----
+                     CCCCCCCCCCCCCCCCC+'''++++'''''''''+++''''''..'+++++'++'+'+++'.'.+++++'.CCCC   .CCCCCCCC..'.CCCCCCCCCCC...'+....
+                                      C+++CCCC+++++++++CCC++++++''+CCCCC+CC+C+CCC+'+'CCCCC+'BBBB   'BBBBBBBB''+'BBBBBBBBBBB'''+C''''
+                                       CCC    CCCCCCCCC   CCCCCCXXC     C  C C   CXCX     CXHHHH   XHHHHHHHHXXCXHHHHHHHHHHHXXXC XXXX
+                                                                CC                C C      CXXXX   CXXXXXXXXCC CXXXXXXXXXXXCCC  CCCC
*  -- -=--  ---     +X==+=-=====-++'--'.-..'''.......'..'.'.''..-----.''''''''....-----'..''-''''+)1X-'''''''---''''-'''''--..----.--
+                     CCCCCCCCCCCCC+..+'.''+++'''''''+''+'+'++''.....'++++++++''''.....+''++.CCCCC   .CCCCCCC...CCCC.CCCCC..''....'..
+                                  C''C+'++CCC+++++++C++C+C+CC++'''''+CCCCCCCC++++'''''C++CC'BBBB    'BBBBBBB'''BBBB'BBBBB''++''''+''
+                                   XX CXCC   CCCCCCC CC C C  CCXXXXXC        CCCCXXXXX CC  XHHHH    XHHHHHHHXXXHHHHXHHHHHXXCCXXXXCXX
+                                   CC  C                       CCCCC             CCCCC     CXXXX    CXXXXXXXCCCXXXXCXXXXXCC  CCCC CC
* -=- =- - ----      1=+++====+===+'-----'-....--......'.'.'...-.----.-....'+-+''.''==-MXAA++-'''-MZZM-'''''''--+=--.--.--'=AM==-.---
+                     CCCCCCCCCCCCC+.....C.''''..''''''+'+'+'''.'....'.''''+CCC++'++CCC    CC.CCC.    .CCCCCCC..CC..'..'..+C  CC.'...
+                                  C'''''B'++++''++++++C+C+C+++'+''''+'++++C   CC+CC         'BBB'    'BBBBBBB''  ''+''+''C     '+'''
+                                   XXXXXHXCCCCXXCCCCCC C C CCCXCXXXXCXCCCC      C           XHHHX    XHHHHHHHXX  XXCXXCXX      XCXXX
+                                   CCCCCXC    CC              C CCCC C                      CXXXC    CXXXXXXXCC  CC CC CC      C CCC
* =--------- -       M++++-====+==+'-'-=.'---...............-.-------------=) -=++=-       =)ZXXA) - =1=-''''''-1)-''--'-.-=-MM+==--+
+                     CCCCCCCCCCCCC+.+CC'C...'''''''''''''''.'.............C                           C.CCCCCC.  C++..+.'CCC  CCCCCC
+                                  C'C  +B'''+++++++++++++++'+'''''''''''''                             'BBBBBB'   CC''C'+
+                                   X   CHXXXCCCCCCCCCCCCCCCXCXXXXXXXXXXXXX                             XHHHHHHX     XX XC
+                                   C    XCCC               C CCCCCCCCCCCCC                             CXXXXXXC     CC C
* --===- -----      --+======-==--='..''-'--''---......--..--------------.++                            +AM+--'-Z+XMM+.--AZ+--M-XMX1X
+                    CCCCCCCCCCCCCC+''++.C..CC...''''''..''..............'C                                C..C.     C'..  CCC C
+                                  C++CC'B''BB'''++++++''++''''''''''''''+                                  ''B'      +''
+                                   CC  XHXXHHXXXCCCCCCXXCCXXXXXXXXXXXXXXC                                  XXHX      CXX
+                                       CXCCXXCCC      CC  CCCCCCCCCCCCCC                                   CCXC       CC
* =---=----- - -     A+==+=====-M++''+'-''-.-''---.--......-.-...-----.--+)                                   +A=-ZMZM-'-AA+=X1))11=-
+                     CCCCCCCCCC CC++C+.CC.'.CC...'..''''''.'.'''.....'..C                                      CC    C+.  CC      C.
+                                  CC C'BB'+'BB'''+''++++++'+'+++'''''+''                                              C'           '
+                                      XHHXCXHHXXXCXXCCCCCCXCXCCCXXXXXCXX                                               X           X
+                                      CXXC CXXCCC CC      C C   CCCCC CC                                               C           C
* =-====---=-        M+=====---==''....-''----''''---.--------..------..+Z                                      -ZXAMMMM+-AZMAAM=.---
+                     CCCCCCCCCCC++''''.CC....CCCC...'........''......''C                                               CC      C'...
+                                CC++++'BB''''BBBB'''+''''''''++''''''++                                                         +'''
+                                  CCCCXHHXXXXHHHHXXXCXXXXXXXXCCXXXXXXCC                                                         CXXX
+                                      CXXCCCCXXXXCCC CCCCCCCC  CCCCCC                                                            CCC
* =====+=  - -      -X++=====--+'....-.-'-------''''-------------.-..'==1                                  -     =='''-=++=='.--'----
+                     CCCCCCCCCC+''''.'.C.......CCCC.............'.''+CC                                          C+++CCCCCC+'..C....
+                               C++++'+'B'''''''BBBB'''''''''''''+'++C                                             CCC      C+''B''''
+                                CCCCXCXHXXXXXXXHHHHXXXXXXXXXXXXXCXCC                                                        CXXHXXXX
+                                    C CXCCCCCCCXXXXCCCCCCCCCCCCC C                                                           CCXCCCC
* ==+=---        -= -1+'====+-='.--.--.--'--------''''-..--------.-.+Z)=)                                         Z--''--''----------
+                     C+CCCCCCC+'..'..'..C........CCCC.''........'.'C  C                                           ..CC..CC..........
+                      C       C+''+''+''B''''''''BBBB'++''''''''+'+                                               ''BB''BB''''''''''
+                               CXXCXXCXXHXXXXXXXXHHHHXCCXXXXXXXXCXC                                               XXHHXXHHXXXXXXXXXX
+                                CC CC CCXCCCCCCCCXXXXC  CCCCCCCC C                                                CCXXCCXXCCCCCCCCCC
* +=++=  ---    -+   ++++=====+.....------'--------''''--------.....=+)M-                                          X.-''''''-'--..-''
+                     CCCCCCCCC'''''......C........CCCC........'''''C                                               '.CCCCCC.C..''.CC
+                              +++++''''''B''''''''BBBB''''''''+++++                                                +'BBBBBB'B''++'BB
+                              CCCCCXXXXXXHXXXXXXXXHHHHXXXXXXXXCCCCC                                                CXHHHHHHXHXXCCXHH
+                                   CCCCCCXCCCCCCCCXXXXCCCCCCCC                                                      CXXXXXXCXCC  CXX
* +++==-  -   --     )+++++++='.'.=+-----''--------'''-------.=M=---.XZ=                 --                         -.--''''''''-----
+                     CCCCCCCC+'+'CC.....CC........CCC.......'C C...'                                               C'..CCCCCCCC.....
+                             C+C+  '''''BB''''''''BBB'''''''+   '''+                                                +''BBBBBBBB'''''
+                              C C  XXXXXHHXXXXXXXXHHHXXXXXXXC   XXXC                                                CXXHHHHHHHHXXXXX
+                                   CCCCCXXCCCCCCCCXXXCCCCCCC    CCC                                                  CCXXXXXXXXCCCCC
* )))+== -=- -       =-=M+++=='..'+------'----------'----+Z--Z- 1----M)                                            =A=.--'''''''''---
+                     CC CCCCC+''+CC.....C..........C....C CC    ....                                                C'..CCCCCCCCC...
+                             C++C  '''''B''''''''''B''''        ''''                                                 +''BBBBBBBBB'''
+                              CC   XXXXXHXXXXXXXXXXHXXXX        XXXX                                                 CXXHHHHHHHHHXXX
+                                   CCCCCXCCCCCCCCCCXCCCC        CCCC                                                  CCXXXXXXXXXCCC
* ))++==  -= -       -AMA+.+=+'..''-'--.-'------''--'''--Z      M--'A+-                                          -)Z1-+='.----'''''''
+                        C'CCC+''++.C..'.C......CC..CCC..        ..+                                                   C+'....CCCCCCC
+                         +   C++CC'B''+'B''''''BB''BBB''        ''C                                                    C+''''BBBBBBB
+                         C    CC  XHXXCXHXXXXXXHHXXHHHXX        XX                                                      CXXXXHHHHHHH
+                                  CXCC CXCCCCCCXXCCXXXCC        CC                                                       CCCCXXXXXXX
* ====-   ==-------  -1XA'.'-+'''''-''-=..==-----'''''''.)      =ZMA=                                           =-      +A+.-------''
+                        +'+CC+++++.CC.C''CC.....CCCCCCC'                                                                 C'.......CC
+                        C+C  CCCCC'BB' ++  '''''BBBBBBB+                                                                  +'''''''BB
+                         C        XHHX CC  XXXXXHHHHHHHC                                                                  CXXXXXXXHH
+                                  CXXC     CCCCCXXXXXXX                                                                    CCCCCCCXX
* -=----  ------===   =AA1M..++'''+.''----.='------'''''+          -                                                      -----------
+                          ''CC+++C'CC....'C+......CCCCCC                                                                  C.........
+                          ++  CCC +BB''''+ C''''''BBBBB                                                                    '''''''''
+                          CC      CHHXXXXC  XXXXXXHHHHH                                                                    XXXXXXXXX
+                                   XXCCCC   CCCCCCXXXXX                                                                    CCCCCCCCC
* =====----    -- -  +A-A)X'.'+''++-''-'----------''''--1                                                                  1M=---'---
+                      C   +'+C++CC.CC.C..........CCCC..                                                                     C...C...
+                          C+C CC  'BB'B''''''''''BBBB''                                                                      '''B'''
+                           C      XHHXHXXXXXXXXXXHHHHXX                                                                      XXXHXXX
+                                  CXXCXCCCCCCCCCCXXXXCC                                                                      CCCXCCC
* =++==- --  ---    -M..+AA++'+++'.-'--'''----'---''''-+                                                                  Z+M-'.-''''
+                     ''C  CC+CCC+'.C..CCC....C...CCCC.C                                                                   C C+'.CCCC
+                     ++     C   C+'B''BBB''''B'''BBBB'                                                                       C+'BBBB
+                     CC          CXHXXHHHXXXXHXXXHHHHX                                                                        CXHHHH
+                                  CXCCXXXCCCCXCCCXXXXC                                                                         CXXXX
* =+)+==---  -- -   -A=+'+===+''+'-''-'-'''--------'''-=                                                              -=-=Z'-.---'''-
+                     CC+CCCCC++C+.CC.+.CCC........CCC.C                                                                   +.'...CCC.
+                       C     CC C'BB'C'BBB''''''''BBB'                                                                    C'+'''BBB'
+                                 XHHX XHHHXXXXXXXXHHHX                                                                     XCXXXHHHX
+                                 CXXC CXXXCCCCCCCCXXXC                                                                     C CCCXXXC
* -==++=-==-==- --- -)+A''++==='..-''---''''------''''-+                           -+                                      A----'-'''
+                       ++CCCCC+''.CC...CCCC......CCCC.                                                                     ....C.CCC
+                       CC     C++'BB'''BBBB''''''BBBB'                                                                     ''''B'BBB
+                               CCXHHXXXHHHHXXXXXXHHHHX                                                                     XXXXHXHHH
+                                 CXXCCCXXXXCCCCCCXXXXC                                                                     CCCCXCXXX
*    --- --   -        Z'''+===='.-''-----'''--'''''''+                           -+=              -                       -M-M='----
+                       +++CCCCC+'.CC.....CCC..CCCCCCCC                                                                      C C+....
+                       CCC     C+'BB'''''BBB''BBBBBBB                                                                          C''''
+                                CXHHXXXXXHHHXXHHHHHHH                                                                           XXXX
+                                 CXXCCCCCXXXCCXXXXXXX                                                                           CCCC
*         -            )+'+===+=-=-''''----''-'''''''-M                          -++   -=--=                                Z+'''.-'-
+                       C+CCCCCCCC.CCCC....CC.CCCCCCC.                                                                       C+++'.C.
+                        C        'BBBB''''BB'BBBBBBB'                                                                        CCC+'B'
+                                 XHHHHXXXXHHXHHHHHHHX                                                                           CXHX
+                                 CXXXXCCCCXXCXXXXXXXC                                                                            CXC
*  --  - --=            -'+==+'=Z =-''''--'-'''''''''-1                 - -   ---+Z     -=-=-                               )-'''-.--
+                       C+CCCC+C   .CCCC..C.CCCCCCCCC.                                                                       .CCC.'..
+                        C    C    'BBBB''B'BBBBBBBBB'                                                                       'BBB'+''
+                                  XHHHHXXHXHHHHHHHHHX                                                                       XHHHXCXX
+                                  CXXXXCCXCXXXXXXXXXC                                                                       CXXXC CC
*  =---    -            M''++..+Z 1--.-''''''''''''''-+                   --  ---)+--                    -                   -'''---.
+                        ++CC''C   ..'.CCCCCCCCCCCCCC.                                                                       .CCC...'
+                        CC  ++    ''+'BBBBBBBBBBBBBB'                                                                       'BBB'''+
+                            CC    XXCXHHHHHHHHHHHHHHX                                                                       XHHHXXXC
+                                  CC CXXXXXXXXXXXXXXC                                                                       CXXXCCC
*  =- -- -              X''....'+-+-+-=---'''''''''''+                    =-   -+--                                          ='''----
+                        ++''''+CCC.CCC...CCCCCCCCCCCC                                                                       CCCC....
+                        CC++++C   '   '''BBBBBBBBBBB                                                                         BBB''''
+                          CCCC    X   XXXHHHHHHHHHHH                                                                         HHHXXXX
+                                  C   CCCXXXXXXXXXXX                                                                         XXXCCCC
*  ==----= -            A..--.''..--+MM----'''''''''-M    -              =+=   --                                            +-''----
+                        ''..'++''..C  ....CCCCCCCCC.                                                                         .CC....
+                        ++''+CC++''   ''''BBBBBBBBB'                                                                         'BB''''
+                        CCXXC  CCXX   XXXXHHHHHHHHHX                                                                         XHHXXXX
+                          CC     CC   CCCCXXXXXXXXXC                                                                         CXXCCCC
* -++===----=-          A+'--.'''---=M'-'-.-''''''''-)                   ==+-  --                                            1-------
+                        C+..'+++...C +.C.'.CCCCCCCC.                                                                         .......
+                         C''+CCC'''  C'B'+'BBBBBBBB'                                                                         '''''''
+                          XXC   XXX   XHXCXHHHHHHHHX                                                                         XXXXXXX
+                          CC    CCC   CXC CXXXXXXXXC                                                                         CCCCCCC
* -++====---=----       -A+---.+==---..'''-.-'''''''.-           -     -----  ----          -                                 -------
+                         C...'CCC...''CCC.'.CCCCCCC'                                                                         C......
+                          '''+   '''++BBB'+'BBBBBBB+                                                                          ''''''
+                          XXXC   XXXCCHHHXCXHHHHHHHC                                                                          XXXXXX
+                          CCC    CCC  XXXC CXXXXXXX                                                                           CCCCCC
* -++==+==+====----  -+- 1=---.===+------'.-.'''''''=            -                      --  -             -      --           +------
+                         C...'CCCC......C'C'CCCCCCCC                                                                          ......
+                          '''+    ''''''B+ +BBBBBBB                                                                           ''''''
+                          XXXC    XXXXXXHC CHHHHHHH                                                                           XXXXXX
+                          CCC     CCCCCCX   XXXXXXX                                                                           CCCCCC
*  ++===+======--=---=))--)+-'.-.-..------++-''''''-Z                                   -=- --    ---     -      --          -1'--'--
+                          C.C'C'.''......CC.CCCCCC.                                                                           +..+..
+                           'B+ +'++''''''  'BBBBBB'                                                                           C''C''
+                           XHC CXCCXXXXXX  XHHHHHHX                                                                            XX XX
+                           CX   C  CCCCCC  CXXXXXXC                                                                            CC CC
* -==++==+=++==---=))++    A--=X--'----'---''''''''=        --                             --  ------- -   -= -            =+1ZZ--'+.
+                           ..C ..+....C...CCCCCCCCC                                                                            C.+C'
+                           ''  ''C''''B'''BBBBBBBB                                                                              'C +
+                           XX  XX XXXXHXXXHHHHHHHH                                                                              X  C
+                           CC  CC CCCCXCCCXXXXXXXX                                                                              C
*  +)))+++++))+====++- -   -M'-=-..------'-'''''''-X        --  =---                             --  --                  --     ==.=+
+                            +CC.''......C.CCCCCCC.                                                                              C'CC
+                            C  '++''''''B'BBBBBBB'                                                                               +
+                               XCCXXXXXXHXHHHHHHHX                                                                               C
+                               C  CCCCCCXCXXXXXXXC
*  111)))++)))+==-===--=-   =ZA.---------'''''''''+-      ---- -- -==- ---                       --  -- -                        -M..
+                              '.........CCCCCCCCCC                                                                                ''
+                              +'''''''''BBBBBBBBB                                                                                 ++
+                              CXXXXXXXXXHHHHHHHHH                                                                                 CC
+                               CCCCCCCCCXXXXXXXXX
* -11111)))1)+========----   Z+-''-----'---''''''--  ------   -==-=+==--=====--                   -   - -        --               -+-
+                             C.CC.....C...CCCCCC.C                                                                                C.
+                              'BB'''''B'''BBBBBB'                                                                                  '
+                              XHHXXXXXHXXXHHHHHHX                                                                                  X
+                              CXXCCCCCXCCCXXXXXXC                                                                                  C
*  1Z)1))))11)++==++===-=-   +=-''------''-'''''-.1 -=+===----=++++)+=--==----=--=-                 --                             =-
+                             C.CC......CC.CCCCC.'                                                                                  C
+                              'BB''''''BB'BBBBB'+
+                              XHHXXXXXXHHXHHHHHXC
+                              CXXCCCCCCXXCXXXXXC
*  11Z1111ZZZ11))+)+++++=- -  ).'''-----'''''''--)-==+)++==+===+=+))+=====--==---=====-                            -     --         )
+                              'CCC.....CCCCCCC.C
+                              +BBB'''''BBBBBBB'
+                              CHHHXXXXXHHHHHHHX
+                               XXXCCCCCXXXXXXXC
*  )11)11)11Z1111)))))++===--  Z.'------'''''''-X -=++)+))++++++=)++===+==--=======-=+==--                                       -+)1
+                               'C......CCCCCCC.
+                               +B''''''BBBBBBB'
+                               CHXXXXXXHHHHHHHX
+                                XCCCCCCXXXXXXXC
*  1)))++)+))))11111))++++=+))-=M-''''''-''''-=X+=+++)+))++))))++++)+++)+===+===+++======---===             -  -   -           -====-
+                                .CCCCCC.CCCC.C
+                                'BBBBBB'BBBB'
+                                XHHHHHHXHHHHX
+                                CXXXXXXCXXXXC
*  1111))))))))+)))1+++++)++1XZ=-M---'''''''-M--=+++)+)))++))))++)))++)+)++===++++++===-==--=+=--
+                                 ...CCCCCCC.
+                                 '''BBBBBBB'
+                                 XXXHHHHHHHX
+                                 CCCXXXXXXXC
*  111))ZXZZZ)))++)))))++)))XZ+==--+Z+-------)-+1)))11111))+))+)))1))11+))+++++++))+++==++=====--===
+                                C.C C......C
+                                 '   ''''''
+                                 X   XXXXXX
+                                 C   CCCCCC
*  1Z111XXXXZ1)111111))++)111)++)M--=)AAM'-=)+))1111111Z1111))))))11))1)+)+++)+=)))+++++++++=======+==-
+                                 .C     +.C
+                                 '      C'
+                                 X       X
+                                 C       C
*  )11ZZZZZZZZ1Z1111ZZ1))11)++)+)-.A++)+1+'Z=111Z1ZZZZ1ZZ1ZXZ))))111)))1))))))++))+=+++)+++++++++=++===- -                         -+
+                                C'      C+
+                                 +       C
+                                 C
*  +1))11ZZXXXZZ1Z)111)1))))))1)1-+1+))Z-'M)1ZZZ1111Z1ZZZZZX11111Z111+)1))))))))))+=))+++)+=)+++)++)+===-=---=-                    Z=
+                                CC     C+                                                                                          C
+                                        C
*  -++==+==+))+)1111Z11))))ZZZZZZZMX1Z1X-'=ZZXXZZXZXZ1ZZXZZZZ11ZZZ1Z111)))1))))))+++)))++))))+++)+)+++++==+=====---            -)A='=
+                                       C+C                                                                                       C+C
+                                        C                                                                                         C
*   +===-  ---- -++))))))))11ZZZXXZ111)ZA=A1ZXXXZXZXZZZZZXXZ11ZZZZ1Z1)))))))))))))++)+++++)))++))++)++++++++=+=======-       =X='.'=M
+                                        C                                                                                     C+'+C
+                                                                                                                               C+C
+                                                                                                                                C
*   )+)+===----       =++)))1111ZZZZ1)11ZXZZZZXXXZZZXXZZXXXZZZ1ZZZ11))+)))))))))1)))))++)))))))))+))+))++)))+===+++=====+1ZXMM=+=MZ=
+                                                                                                                             CCC
*   =)+=-++=---  -       -===))1)))))+))Z1Z111ZXXZZZZZXZZZZZZZ1ZZ11))))+)1)111111))+++))+))+)+)++)))))+=+++)====-=+===)X-'..+M1))-
+                                                                                                                       C+''C
+                                                                                                                        C++
+                                                                                                                         CC
*        ---===-++=-      --   +)))))))))))11ZXZZZZZZZZXZZZZZZZZ11ZZ111))111)11111)))))))))))))++))))))++)++==+=+++)1X-''''=AZ+--
+                                                                                                                     C++++C
+                                                                                                                      CCCC
*             -=))+=-           -+)))11111)11ZXZZZ1111ZXZXXXXZZ111XZZZZ11ZZ1111))))))1)))))111))+)))+)++++)+++++1ZAM-MAMMMX1===+++=-
+                                                                                                                   C
*        -=     -====-            =)))11Z1)11ZZXXXZ111ZZZZZXXXZ11ZZZZZXZZZ1111))1)))))))))))))+++)))+)+++++++)1A=+++=MZ+))++===+))))=
+                                                                                                               CCCCC
*         =-        =+=-   --      -=+))11111ZZZZZ1ZZZZZZZZXXXZ11ZXZ1111))))111ZZ1)))11))))11+))))))++=++++)ZAM+'+-X1)+=++++=++))))))
+                                                                                                              C+CC
+                                                                                                               C
*                      --  ---      -=1Z11)))1ZZZ11ZXXXZXXXXXXZZ)1Z11)111)))111Z111)))))))))))+))++++==+)ZA-=MXZXX1+===+++++=+))))1))
+                                                                                                          CC
*                           -        -))1ZZ11ZZZ111ZXAXXXAXXXZZZ1)11)11111)))))111)))))))))1)++++++==)1A-=+=-MX+++=++++)+)))++))))))+
+                                                                                                       CCCCC
*                           --          +ZZZZZXXZ11ZZXXXAAXXXZZZ111))111Z11111))11))))+)+))1)+=-++))ZAM-M--MZ1+==+++)++))))+)))))))))
+                                                                                                      C CC
*                                         )11ZZ111))1))1ZXXZZZZ111)))))11111)11111)++++)+))))++=+1M-==M111Z)-=+=++++++))))++++)))+++1
+                                                                                                  CCC
*                                           -)1))))1111))+))11111Z111))1111Z111111)++))1)1))11ZA-+'++-A1+=++++)))+++=+))))))))+))))))
+                                                                                               CC+CCC
+                                                                                                 C
*                                       -    -++)))ZZZZ1)))+)111ZZ111)))111Z1111)))++)))))))ZAMMMM-MAZ)+==++++)))))+++)))))11)+))))++
+                                                                                                 C
*    --               -==---                    -=+))111)Z1111Z11111ZZZ111111ZZ1111))))))ZX-++=A1)11+==++)+++)1)+))))+)1Z11ZZ1)))+)+)
+                                                                                          CCCC
*    ---                 -==                      -+)1+)11ZZZ111))Z1ZZZZ11)))111Z11)+))Z-+'''-MX)-+))+++++=+))))))))))1Z11111)++++)+)
+                                                                                       CC+++C
+                                                                                         CCC
*                                                   -++))11ZZ111)1ZZZZZZZ1)111ZZZ1))1ZXA==--MXZ)))))11))+++)))))))))))1Z11111))+)++++
+                                                                                       CCCC
*    ==-                                              -+)111111)11ZZZZ1ZZ111))111ZZA-=-MZ)1Z11)+)11))1))111))))))))1)111))1Z1))))))1)
+                                                                                   CCC
*    +++====--                                           +))11))11Z111)1111))))ZA--=+=MAZ)1Z))++)11))))1111)++)+)))1)1Z111ZZZZZ))1ZZZ
+                                                                                CCCCC
*    ++++))+++-                                             -+=+)))))111111)++1A-=--MAZ1))11)+=+)1))+)ZZZZ11++)++))))1))1111XXZ1ZZZZZ
+                                                                               CCCC
*    =++++++))+++=-          ---                              -+1))1111)1ZZXAM-MX11Z1)+))1111))))1Z)))ZZ11ZX11Z11)111Z1)))+11ZXZ11ZXX
+                                                                             C
*    =++++=+))++)+===-         -=-                              =+)1Z11)ZM-+++=MX)++)))1))111ZZZZ11)))11ZZXXXXXXZZ1ZXXXZZ1)111ZXZZZXX
+                                                                         CCCCC
*    ++++++++++=+++++=-          ----=-                            -+)1ZM=+=-MAZ1))11Z1ZZZZZZZZZZ11)1))1XXXZXXAXXZ1ZXAAXZ1ZZZZZZZZZZX
+                                                                        CCCC
*    +==++)))+=-=+)+=====-           -==+=---                       =Z--AXXXX1++)1111Z1ZXXXXX11Z11)11)1XXXXXXXAAAXZXXXXXZ1111ZZZZAXXX
+                                                                     CC
*    --+))))))+=-=)+===+=------          -=---                   -=Z-+'=X)=-==++++))111ZXXZZXXZZ1111111XAAMMAAMMAAXXAXXZXAXXXAAAAAAXA
+                                                                   CC+C
+                                                                     C
*    --=+++))+++-+)+======-======                               +A=''=MZ-          --==+1111ZZX111Z11111ZXXAAAMMMAXXZZZZXAAAAMAAAAAAA
+                                                                 C++C
+                                                                  CC
*    -=-======+===+))++=++====--==-                           +1A-=-M1=                 --==++ZZZXXZ1111111ZXAMMAXAXZZXXMAAMMAMMAAAXX
+                                                                CCC
*     --=======+= =))++=++=-=--                           -+Z-+=AZ))-                         -)1ZXZ11ZZ1111ZZXXZ11ZZXAAMAAMMAAAXXXZ1
+                                                            CCC
*      -==-=+==+= =+==-=+===----===      -               )A=''+-Z=                               =++)1111111ZZZZZZ11ZZXXXXXXXAAAXZ1))
+                                                          C++CC
+                                                           CC
*      -----=- ---====-=====-=- -===-    -             =Z-+++-A)-                ----                =+++)+)))1ZXXZZZZZZ11111ZZZ1))))
+                                                        CCCCC
*    --------    ---==--=++-=++=---==-    -          +ZM-MMMX+                    -----                  -   -+1ZZZZZZ11111)1))))))1)
+                                                       C
*    =+=- -    ----==--=+++--===- ---=-   =-      -)M+'=X1+-                             ---                  ))==+))++++)1ZX1)))1ZXA
+                                                    C+C
+                                                     C
*    +)+=--   --====----===----=-     -  --     =ZM+..+-X=                                 -  -               -+=-==-  --=11ZXXXXXAXA
+                                                  C''CC
+                                                   ++
+                                                   CC
*    =++=+=   ---==-------==--==-      -     -)1A+'.+-A1=                                    ----               -+)))==--=++=+1ZZZXZZ
+                                                C+'CC
+                                                 C+
+                                                  C
*        --      -- --  --==---       -- -  -Z-===-MX)=-                       -            ----- - --         --+++))))+)++++)111ZZ1
+                                             CCCCC
*          -=           -  -=-      ---  -+X='.'=M)=  =+=                       -     ---------=---     -        --- -)1111)+++1ZZ111
+                                           C+'+C
+                                            C+C
+                                             C
1I )))))))))++++++++)++))++++=+++)))))+++++)++++++++++++++++++++++))))))))))))))))+))))++++++++++++)++))+++++======+)111)++)))))))
*)))))))))++++++++)++))++++=+++)))))+++++)++++++++++++++++++++++))))))))))))))))+))))++++++++++++)++))+++++======+)111)++)))))))++==+
*1111111Z11))))1)11111Z1)+==+1ZXXAAX1+++ZAX1ZZ1)++)11)+)1XAXXXAA---MMMM--------AXXAAX11)++++++++)111ZZ1)++=-=----+XM=+A))XAAXXZZ1+==)
+                                                               CCC    CCCCCCCC                                     CC
*ZZZXZZZZZXZZ1ZZZZZZZXXXZZZZ1ZA----MX))Z-====-MAZ1ZXXZZXM+'''-----.'++'+++=+++++===-AXXZ11111)1111ZZXXXZZZ1))))++)1XAMXZZXAAXX1111))X
+                              CCCC     CCCCCC           C+++.....'+CC+CCCCCCCCCCCCC
+                                                         CCC'''''+C  C
+                                                            XXXXXC
+                                                            CCCCC
*ZZZ1ZZZXXXX11ZZZZZZZZXXXXAXZXM-====-AXA-==----MAZZ1)XMMM+''.------.'''++======++++=MAAX1)))))+++++)1))ZZXX1++++++)ZXXZZZXXZ11))++=+Z
+                              CCCCCC   CCCCCCC          C++'......'+++CCCCCCCCCCCCC
+                                                         CC+''''''+CCC
+                                                           CXXXXXXC
+                                                            CCCCCC
*AXZ11ZZXXXXZ11XXZXZ111XZXAMMXXM=+'...'-AAAAMMAAXZ111XMAX-''.-------.--''++++++++''+=-MAX1))))+++++))))1XXX1)))+++11XXXZZXAZ1)++)))))
+                               CC+'''+C                 C++'.......'..++CCCCCCCC++CCC
+                                 C+++C                   CC+'''''''+''CC        CC
+                                  CCC                      CXXXXXXXCXX
+                                                            CCCCCCC CC
*AAAZ11ZZXXXAXZXAXXXZ1)1ZXA--MMM-=+'--.+M1)1XAAXZZ1ZZAAXXM='.----------.''''=+'''++++=-MAX1)1)+++=)1)1ZZAAX1)11)+)1ZZZXZZZZ11)++)11Z1
+                          CC   CCC+..'C                  C+'..........'++++CC+++CCCCCC
+                                  C''+                    C+''''''''''+CCCC  CCC
+                                   XXC                     CXXXXXXXXXXC
+                                   CC                       CCCCCCCCCC
*XM-AXZZZZZXXZ1AMAAXZ111ZAM++====+++'''+-X+=)ZXZ111ZXMMAAM-+'.-------....''+=+''''++++=-AX1)1)++++)1)11XM-AXAX1))1)11111ZZ11)++++)ZXX
+  C                       CCCCCCCCC+++CC                 CC+'.......''''++CCC++++CCCCCC                 C
+                                   CCC                     C+'''''''++++CC   CCCC
+                                                            CXXXXXXXCCCC
+                                                             CCCCCCC
*AM--AZZ1)+)1+=1AMMAZXAM-=+'.'+''.'+=MAMMA1==)1Z111ZXMMMXXZM=..-------.....'+=+++'..''+-AXZ11++====++++)XXA-==MZ11))11++11)+)++++))ZX
+  CC                   CCC+'+C++'+CC                       C''.......'''''+CCCCC+''++CC                   CCC
+                          C+C CC+C                          ++'''''''+++++C     C++CC
+                           C    C                           CCXXXXXXXCCCCC       CC
+                                                              CCCCCCC
*XXXXXZ1+++))+=1XAMMAA-=''''....--.=AXZXAAZ+=1XXZZXAM---A11X-+'..------...-..+==+++'++-AXXZ1)+=+====++)1ZZXM=++MX11111++))))++===+)1Z
+                     CC++++''''..'C                 CCC    CC+''......'''.''CCCCCC+CCC                     CCC
+                       CCCC++++''+                           C++''''''+++'++      C
+                           CCCCXXC                            CCXXXXXXCCCXCC
+                               CC                               CCCCCC   C
*MXZ1ZZ1))ZXZ)1ZXZZAMAAM=+''.------+XZZXAAX1++ZXX1ZA=+==A1))1-+''.------.....'+======MXZX1Z1)+======+1XXXXXAM=+=MXZZZX1)))11)+++==+)1
+                       CC++'......C                CCCC     CC++'......'''''+CCCCCCC                        CCC
+                         CC+''''''                            CC+''''''+++++C
+                           CXXXXXX                              CXXXXXXCCCCC
+                            CCCCCC                               CCCCCC
*-AZ1ZZ1)ZAXZXAAAZZA--AXX-+''.-----'MZ11ZXZX1=+1ZZXA--MMX1)))-''''------..''...'=-MMAZ))1111)+======+1XAAAXXZA==-AXAAAZ1)+))111)++)))
+C                  CC   CC++'.....+                CC       C++++......''++'''+CC                            CCC
+                          CC+'''''C                          CCCC''''''++CC+++C
+                            CXXXXX                               XXXXXXCC  CCC
+                             CCCCC                               CCCCCC
*AZ1ZXAXXXAXZXAXZZAMM=-AZXM=+'.-----'-X11ZZXX)=+ZAAXAAAZ))1)Z-''++.-----.'+'''..+-AZ1)+===+ZZ)+===+=+)AAAXAX11M=-MMMMZ1)+++++)1)1)+==
+                    CC    CC+'.....+C                       C++CC'.....'+C+++''CC                             CC
+                            C+'''''C                         CC  +'''''+C CCC++
+                             CXXXXX                              CXXXXXC     CC
+                              CCCCC                               CCCCC
*)ZAAAXXAXZZXXZ1+)ZXA--MMXZXM=+'.---'=-AXZZXAX+=+1XXXAMX)++)1X=+'+'.-----'+''''++=MZ)+++===+1)+==+)+=)ZXAXXAX1XM=-=+=MX1111)+))1ZX1)+
+                    CC      CC+'...+CC                       CC+C+'.....+C++++CCC                              CCCCC
+                              C+'''C                           C C+'''''C CCCC
+                               CXXX                               CXXXXX
+                                CCC                                CCCCC
*)ZMMAZZXXXAZ1)+=++)ZAM--AXZZA-='--.'---MXZZAAZ+==)ZXAMAZ++)++X=''.'......'++'+=-MMX1====---=+===+11+)11XAAMAZZM==='.'+-==MXXXXXMMAAX
+                      CC     CC+..'+CCC                       C++'+''''''+CC+CCC                               CCC+'+CCCC
+                               C''+C                           CC+C++++++C  C                                     C+C
+                                XXC                              C CCCCCC                                          C
+                                CC
*)1ZXXXXAAMMXZ1)+=-=)X-++==-AXXA-+..'=M--MXZXAAZ+--+)XMAZ))Z1)X+''..'...-..+=====-MXZ)))+===++=-=)ZAAAXXA=+''-M-=+++.-.==+-MMMXZZXXXZ
+                     CCCCCC    CC''+C CC                      C++''+'''.''CCCCCCC                       CC++C CCCCC'.'CCCC
+                                 ++C                           CC++C+++'++                                CC       +'+
+                                 CC                              CC CCCXCC                                         CXC
+                                                                       C                                            C
*)1Z1ZXAM-==--MX1)=-)X-+''++=MXZXXM-=-MMMMMXXAMAZ=  -1Z)+)ZZZ1Z-=+..'''....'+++.-..'+=+'+==---MZAM---MMXA-'''-MMMM=-+''+++'''''+=--+'
+        CCCCC        CC++CCC      CCC                         CCC''+++''''+CCC'.''+CCC+CCCCCC    CCC    C+++C    CCC++CCC+++++CCCCC+
+                       CC                                        ++CCC++++C   +'++C   C                  CCC        CC   CCCCC     C
+                                                                 CC   CCCC    CXCC
+                                                                               C
*)XMMMAAM=--MMAXZ1+-=+ZAAAAXXMMX1+++ZAAMMMMMMXAMMZ+  -+)1ZAX1))ZM=''''...--..----------------''---+A11AM='........-.----------------'
+        CCC                                                     C++++'''..''................CC...C     C+''''''''.'................C
+                                                                 CCCC+++''++''''''''''''''''BB'''       C++++++++'+''''''''''''''''B
+                                                                     CCCXXCCXXXXXXXXXXXXXXXXHHXXX        CCCCCCCCXCXXXXXXXXXXXXXXXXH
+                                                                        CC  CCCCCCCCCCCCCCCCXXCCC                C CCCCCCCCCCCCCCCCX
*+)XMAX11XXX1)++==---+ZX1+=-=)Z1+  -+1ZXMMMMMMXXAAZ=  -1XXXXZ11XM+'.'...-.----..-------------''''--.+'--.'''.------..------------.-''
+                                                                C+'+'''.'....''.............CCCC..'C+..'+++'......''............'.CC
+                                                                 C+C+++'+''''++'''''''''''''BBBB''+ C''+CCC+''''''++''''''''''''+'BB
+                                                                  C CCCXCXXXXCCXXXXXXXXXXXXXHHHHXXC  XXC   CXXXXXXCCXXXXXXXXXXXXCXHH
+                                                                       C CCCC  CCCCCCCCCCCCCXXXXCC   CC     CCCCCC  CCCCCCCCCCCC CXX
*==+ZAX+=)1Z1===-- -=+)Z1+- -+))= -+))))ZAM--MAAXAAZ=  +)1)+)XM+'+...---..---------''---..-.--'''--'-----''+''.----..------'-----.-''
+                                          CC                  C+C'''...''.........CC...''.'..CCC..C.....++C++'....''......C.....'.CC
+                                                               C +++'''++'''''''''BB'''++'+''BBB''B'''''CC CC+''''++''''''B'''''+'BB
+                                                                 CCCXXXCCXXXXXXXXXHHXXXCCXCXXHHHXXHXXXXX     CXXXXCCXXXXXXHXXXXXCXHH
+                                                                    CCC  CCCCCCCCCXXCCC  C CCXXXCCXCCCCC      CCCC  CCCCCCXCCCCC CXX
*---+XA)=+1ZX)=---- ===+)1)-=1ZZ+- -)1)=+1XAMMMAXXAAX+   =--+-.-.=..''..----..-------''---...--'''''----'----.'''.-----..---------'''
+                                                            C'.'C''++''....''.......CC...'''..CCCCC....C....'+++'.....''.........CCC
+                                                             +'+ ++CC++''''++'''''''BB'''+++''BBBBB''''B''''+CCC+'''''++'''''''''BBB
+                                                             CXC CC  CCXXXXCCXXXXXXXHHXXXCCCXXHHHHHXXXXHXXXXC   CXXXXXCCXXXXXXXXXHHH
+                                                              C        CCCC  CCCCCCCXXCCC   CCXXXXXCCCCXCCCC     CCCCC  CCCCCCCCCXXX
*- -=AMZ)1)11+=-=++--====))+1AAZ+- -=))--+1ZXAMMAXXAAZ+   =Z-.-.='-'+'.-------.------'''---...--''''''----'---------------.--'''--'''
+                                                           C'.'C+.+C+'.......'......CCC...'''..CCCCCC....C...............'..CCC..CCC
+                                                            +'+ C'C C+'''''''+''''''BBB'''+++''BBBBBB''''B'''''''''''''''+''BBB''BBB
+                                                            CXC  X   CXXXXXXXCXXXXXXHHHXXXCCCXXHHHHHHXXXXHXXXXXXXXXXXXXXXCXXHHHXXHHH
+                                                             C   C    CCCCCCC CCCCCCXXXCCC   CCXXXXXXCCCCXCCCCCCCCCCCCCCC CCXXXCCXXX
*-  +AMXXX1)))=-=+1+-=--=)1XA-A1=---=)+-  =)1ZXMAXAXAAA+=+X+''.'++'''..---..---.-..---------....-'''''----------------'''---'''''-'''
+                            C                             C++'+CC+++''...''...'.''.........''''.CCCCC................CCC...CCCCC.CCC
+                                                           CC+C  CCC++'''++'''+'++'''''''''++++'BBBBB''''''''''''''''BBB'''BBBBB'BBB
+                                                             C      CCXXXCCXXXCXCCXXXXXXXXXCCCCXHHHHHXXXXXXXXXXXXXXXXHHHXXXHHHHHXHHH
+                                                                      CCC  CCC C  CCCCCCCCC    CXXXXXCCCCCCCCCCCCCCCCXXXCCCXXXXXCXXX
*  -)AAA-MZ+=+=--=11+-=)AMA-MMX)-=+)1Z)    +)11AMMM-=+++++'+''+'+++'.-...--'''.---------------...'''''----------------'''''-'''''''''
+       C                  C                       CCCCCCC+C++C+CCC+'.'''..+++'...............'''CCCCC................CCCCC.CCCCCCCCC
+                                                         C CC C   C+'+++''CCC+'''''''''''''''+++BBBBB''''''''''''''''BBBBB'BBBBBBBBB
+                                                                   CXCCCXX   CXXXXXXXXXXXXXXXCCCHHHHHXXXXXXXXXXXXXXXXHHHHHXHHHHHHHHH
+                                                                    C   CC    CCCCCCCCCCCCCCC   XXXXXCCCCCCCCCCCCCCCCXXXXXCXXXXXXXXX
*- =ZX1A+=X=-==+--)1)))A==MXZXXZ=-1AA1-  =- +ZA=+++'''''..''+==++=+'.-..'.-.'+'--''------.----.''--''''-----.-..-..---'------''''''''
+       CC              CC                     CCCC+++++''++CCCCCCC+'.''+'.'+C+..CC......'....'++..CCCC.....'.''.''...C......CCCCCCCC
+                                                  CCCCC++CC       C+'++C+'+C C''BB''''''+''''+CC''BBBB'''''+'++'++'''B''''''BBBBBBBB
+                                                       CC          CXCC CXC   XXHHXXXXXXCXXXXC  XXHHHHXXXXXCXCCXCCXXXHXXXXXXHHHHHHHH
+                                                                    C    C    CCXXCCCCCC CCCC   CCXXXXCCCCC C  C  CCCXCCCCCCXXXXXXXX
*==)AA1Z-=M1+=+1Z)+)1ZXMMMMXZZZ)1XMMX=  -ZXZA=''''''++''''''.''++='......'...--------''''------.''-'''''-----------..-----------'''''
+       CC                                   C++++++CC++++++'++CCC+''''''+'''........CCCC......'++.CCCCC...........''...........CCCCC
+                                             CCCCCC  CCCCCC+CC   C++++++C+++''''''''BBBB''''''+CC'BBBBB'''''''''''++'''''''''''BBBBB
+                                                           C      CCCCCC CCCXXXXXXXXHHHHXXXXXXC  XHHHHHXXXXXXXXXXXCCXXXXXXXXXXXHHHHH
+                                                                            CCCCCCCCXXXXCCCCCC   CXXXXXCCCCCCCCCCC  CCCCCCCCCCCXXXXX
*+1X--AAM-MAAXXM=MMMM=++''''+=-M=''-A)=1A='''''+++++++''++''..'+++'.'''..''--''-----'''''''------..-'''''----------....----------''''
+   CC   C      C    CCC++++CCC C++C     C+++++CCCCCCC++CC++''+CCC+'+++''++..CC.....CCCCCCC......''.CCCCC..........''''..........CCCC
+                       CCCC     CC       CCCCC       CC  CC++C   C+CCC++CC''BB'''''BBBBBBB''''''++'BBBBB''''''''''++++''''''''''BBBB
+                                                           CC     C   CC  XXHHXXXXXHHHHHHHXXXXXXCCXHHHHHXXXXXXXXXXCCCCXXXXXXXXXXHHHH
+                                                                          CCXXCCCCCXXXXXXXCCCCCC  CXXXXXCCCCCCCCCC    CCCCCCCCCCXXXX
*--+'..''...-...------...--.'+=-==MXA-M++''+''''++''''''++'''.'==+'..'....--''----'''''''''-------.-'''''''---------...------------''
+CCC+''++'''.'''......'''..'+CCCCC   C CC++C++++CC++++++CC+++'+CCC+''+''''..CC....CCCCCCCCC.......'.CCCCCCC.........'''............CC
+   C++CC+++'+++''''''+++''+C            CC CCCC  CCCCCC  CCC+C   C++C++++''BB''''BBBBBBBBB'''''''+'BBBBBBB'''''''''+++''''''''''''BB
+    CC  CCCXCCCXXXXXXCCCXXC                                 C     CC CCCCXXHHXXXXHHHHHHHHHXXXXXXXCXHHHHHHHXXXXXXXXXCCCXXXXXXXXXXXXHH
+           C   CCCCCC   CC                                               CCXXCCCCXXXXXXXXXCCCCCCC CXXXXXXXCCCCCCCCC   CCCCCCCCCCCCXX
*--------------------+-M==-XZ)=+1Z+  Z-=+==++''''++'''..+=++''+==+'..''++'--------'''''''''---'.....-----'''---.-------.-..--...-..--
+....................CC CCC           CCCCCCC++++CC+++''CCCC++CCCC+''++CC+........CCCCCCCCC...+'''''.....CCC...'.......'.''..'''.''..
+''''''''''''''''''''                        CCCC  CCC++    CC    C++CC  C''''''''BBBBBBBBB'''C+++++'''''BBB'''+'''''''+'++''+++'++''
+XXXXXXXXXXXXXXXXXXXX                                 CC           CC     XXXXXXXXHHHHHHHHHXXX CCCCCXXXXXHHHXXXCXXXXXXXCXCCXXCCCXCCXX
+CCCCCCCCCCCCCCCCCCCC                                                     CCCCCCCCXXXXXXXXXCCC      CCCCCXXXCCC CCCCCCC C  CC   C  CC
*---------..--------.+MXZZ1)+=-1XAZ+-)-+==+''''''++''..'+++'''++++'''+'''---'----''''''''''''----.'..-----'''----------.-----...--..-
+.........''........'C                CCCCC++++++CC++''+CCC+++CCCC+++C+++...C....CCCCCCCCCCCC....'+''.....CCC..........'.....'''..''.
+'''''''''++''''''''+                      CCCCCC  CC++C   CCC    CCC CCC'''B''''BBBBBBBBBBBB''''+C++'''''BBB''''''''''+'''''+++''++'
+XXXXXXXXXCCXXXXXXXXC                                CC                  XXXHXXXXHHHHHHHHHHHHXXXXC CCXXXXXHHHXXXXXXXXXXCXXXXXCCCXXCCX
+CCCCCCCCC  CCCCCCCC                                                     CCCXCCCCXXXXXXXXXXXXCCCC    CCCCCXXXCCCCCCCCCC CCCCC   CC  C
*---------------------'+=====--+'++-AA=+=++++'''''+++'..'''''+''++++=++.--------'''''''''''''''''-.'.'.----'''--------------------...
+.....................+CCCCCCCCC+CCC  CCCCCCC+++++CCC+''+++++C++CCCCCCC'........CCCCCCCCCCCCCCCCC.'+'+'....CCC....................'''
+'''''''''''''''''''''C         C            CCCCC   C++CCCCC CC       +''''''''BBBBBBBBBBBBBBBBB'+C+C+''''BBB''''''''''''''''''''+++
+XXXXXXXXXXXXXXXXXXXXX                                CC               CXXXXXXXXHHHHHHHHHHHHHHHHHXC C CXXXXHHHXXXXXXXXXXXXXXXXXXXXCCC
+CCCCCCCCCCCCCCCCCCCCC                                                  CCCCCCCCXXXXXXXXXXXXXXXXXC     CCCCXXXCCCCCCCCCCCCCCCCCCCC
*.-----------------------------------+==++=++'''.'++++''.''''+++==++=+.---------'''''''''''''''''''-.''''.-''''------------------..'.
+'...................................CCCCCCCC+++'+CCCC++'++++CCCCCCCCC'.........CCCCCCCCCCCCCCCCCCC.'++++'.CCCC..................''+'
++'''''''''''''''''''''''''''''''''''        CCC+C    CC+CCCC         +'''''''''BBBBBBBBBBBBBBBBBBB'+CCCC+'BBBB''''''''''''''''''++C+
+CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX           C       C             CXXXXXXXXXHHHHHHHHHHHHHHHHHHHXC    CXHHHHXXXXXXXXXXXXXXXXXXCC C
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                                  CCCCCCCCCXXXXXXXXXXXXXXXXXXXC      CXXXXCCCCCCCCCCCCCCCCCC
*X-..'....----.'+++=++'...---.-------==++====+''..++++==++''+=====+++.----------''''''''''''''''''''''-.'''.-''''----------------.'..
+ C''+''''....'+CCCCCC+'''...'.......CCCCCCCCC++''CCCCCCCC++CCCCCCCCC'..........CCCCCCCCCCCCCCCCCCCCCC.'+++'.CCCC................'+''
+  ++C++++''''+C      C+++'''+'''''''         CC++        CC         +''''''''''BBBBBBBBBBBBBBBBBBBBBB'+CCC+'BBBB''''''''''''''''+C++
+  CC CCCCXXXXC        CCCXXXCXXXXXXX           CC                   CXXXXXXXXXXHHHHHHHHHHHHHHHHHHHHHHXC   CXHHHHXXXXXXXXXXXXXXXXC CC
+         CCCC            CCC CCCCCCC                                 CCCCCCCCCCXXXXXXXXXXXXXXXXXXXXXXC     CXXXXCCCCCCCCCCCCCCCC
*)-'+=MMAA+''-AZ1)+=)ZAMMMAAAAAAAMM-+==++++=++++''++=+==+==+++++++++.----------'''''''''''''''''''''''''--''--''''-----------..--...'
+ C+CC    C++C                     CCCCCCCCCCCCC++CCCCCCCCCCCCCCCCCC'..........CCCCCCCCCCCCCCCCCCCCCCCCC..++..CCCC...........''..'''+
+  C       CC                                   CC                  +''''''''''BBBBBBBBBBBBBBBBBBBBBBBBB''CC''BBBB'''''''''''++''+++C
+                                                                   CXXXXXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHXX  XXHHHHXXXXXXXXXXXCCXXCCC
+                                                                    CCCCCCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXCC  CCXXXXCCCCCCCCCCC  CC
*)M+=M1+-=1-=MX1+- -=)1ZZ1+===-  -+Z+''+++++++++++====+++++++'.''.+----..'...--''''''''''''''---'''''''''''--.---''----------.-...'''
+  CC      CC                       C++CCCCCCCCCCCCCCCCCCCCCC+'++'CC...''+'''..CCCCCCCCCCCCCC...CCCCCCCCCCC..'...CC..........'.'''+++
+                                    CC                      C+CC+  '''++C+++''BBBBBBBBBBBBBB'''BBBBBBBBBBB''+'''BB''''''''''+'+++CCC
+                                                             C  C  XXXCC CCCXXHHHHHHHHHHHHHHXXXHHHHHHHHHHHXXCXXXHHXXXXXXXXXXCXCCC
+                                                                   CCC      CCXXXXXXXXXXXXXXCCCXXXXXXXXXXXCC CCCXXCCCCCCCCCC C
*)1XZ1+--=1ZAXZ1)- +ZXXXXZZ+=  =+XM+'..++++++=====++++'''...+..'.-'-.-.'+-.-.--''''''''''''''-----'''''''''''--------------------.'''
+                                  C+''CCCCCCCCCCCCCCC+++'''C''+'.+C'.'+CC'.'..CCCCCCCCCCCCCC.....CCCCCCCCCCC....................'+++
+                                   C++               CCC+++ ++C+'C +'+C  +'+''BBBBBBBBBBBBBB'''''BBBBBBBBBBB''''''''''''''''''''+CCC
+                                    CC                  CCC CC CX  CXC   CXCXXHHHHHHHHHHHHHHXXXXXHHHHHHHHHHHXXXXXXXXXXXXXXXXXXXXC
+                                                                C   C     C CCXXXXXXXXXXXXXXCCCCCXXXXXXXXXXXCCCCCCCCCCCCCCCCCCCC
*)+==+)++)Z1ZZ+=+-  1AAAXZZZ)=+A=+''..'+=++++=+++''.-.-----'M.-'..+=+'+=-M'-.--'''''''''''''''-----''''''''-'''--.---------------...+
+                               CC++''+CCCCCCCCCC++'.'.....+ '.+''CCC+CCC +.'..CCCCCCCCCCCCCCC.....CCCCCCC+.CCC..'...............'''C
+                                 CC++C          CC+'+'''''C +'C++   C    C'+''BBBBBBBBBBBBBBB'''''BBBBBBBC'BBB''+'''''''''''''''+++
+                                   CC             CXCXXXXX  CX CC         XCXXHHHHHHHHHHHHHHHXXXXXHHHHHHH XHHHXXCXXXXXXXXXXXXXXXCCC
+                                                   C CCCCC   C            C CCXXXXXXXXXXXXXXXCCCCCXXXXXXX CXXXCC CCCCCCCCCCCCCCC
*++=+1ZXXZ1=+)+=    =XAAZ11AM=+'.++'.'++'-.--.''-----------'=.-'+'-==++==-'-'.-'''''''''''''''''-----'''''''''''''-.--'''---------..'
+                            CC+'CC+'+CC+.'..'++...........+C'.+C+CCCCCCCC+.+'.CCCCCCCCCCCCCCCCC.....CCCCCCCCCCCCC.'..CCC.........''+
+                              C+  C+C  C'+''+CC'''''''''''C +'C C        C'C+'BBBBBBBBBBBBBBBBB'''''BBBBBBBBBBBBB'+''BBB'''''''''++C
+                               C   C    XCXXC  XXXXXXXXXXX  CX            X CXHHHHHHHHHHHHHHHHHXXXXXHHHHHHHHHHHHHXCXXHHHXXXXXXXXXCC
+                                        C CC   CCCCCCCCCCC   C            C  CXXXXXXXXXXXXXXXXXCCCCCXXXXXXXXXXXXXC CCXXXCCCCCCCCC
*)))+1ZXXAZ+=+==     1M-AXA+'''''++'.+=-'.-----.-----..---.+=.--'.+=++=+-M.-''-'''''''''''''''''''--..-''''''''''''---------------..'
+                      C   C+++++CC+'CCC+'.....'.....''...'CC'..+'CCCCCCC '.++.CCCCCCCCCCCCCCCCCCC..''.CCCCCCCCCCCC...............''+
+                           CCCCC  C+   C+'''''+'''''++'''+  +''C+        +'CC'BBBBBBBBBBBBBBBBBBB''++'BBBBBBBBBBBB'''''''''''''''++C
+                                   C    CXXXXXCXXXXXCCXXXC  CXX C        CX  XHHHHHHHHHHHHHHHHHHHXXCCXHHHHHHHHHHHHXXXXXXXXXXXXXXXCC
+                                         CCCCC CCCCC  CCC    CC           C  CXXXXXXXXXXXXXXXXXXXCC  CXXXXXXXXXXXXCCCCCCCCCCCCCCC
*11Z))ZXXXAX1)+      =-'+++++++'+++''=-AX-+''.-.--.....---.'+.'-..'=++++=+.-''-''''''''''''''''''''------''''''''''''--.---'-------..
+                     C+CCCCCCC+CCC++CC  CC++'.'..'''''...'+C'C.''+CCCCCCC'.++.CCCCCCCCCCCCCCCCCCCC......CCCCCCCCCCCC..'...C.......''
+                      C       C   CC      CC+'+''+++++'''+C +B'++C       +'CC'BBBBBBBBBBBBBBBBBBBB''''''BBBBBBBBBBBB''+'''B'''''''++
+                                            CXCXXCCCCCXXXC  CHXCC        CX  XHHHHHHHHHHHHHHHHHHHHXXXXXXHHHHHHHHHHHHXXCXXXHXXXXXXXCC
+                                             C CC     CCC    XC           C  CXXXXXXXXXXXXXXXXXXXXCCCCCCXXXXXXXXXXXXCC CCCXCCCCCCC
*AAAXXXZZZZZZX+      A..'+++++++=+''=-=A1A-=+........-.-..''''--'..''...'''''''.----------'''-''''''---..--''''''''''''-..'.-------..
+                     ''+CCCCCCCCC++CCC   CCC''''''''.'.''++++..+''++'''+++++++'..........CCC.CCCCCC...''..CCCCCCCCCCCC.''+'.......''
+                     ++C         CC         ++++++++'+'++CCCC''C++CC+++CCCCCCC+''''''''''BBB'BBBBBB'''++''BBBBBBBBBBBB'++C+'''''''++
+                     CC                     CCCCCCCCXCXCC    XX CC  CCC       CXXXXXXXXXXHHHXHHHHHHXXXCCXXHHHHHHHHHHHHXCC CXXXXXXXCC
+                                                    C C      CC                CCCCCCCCCCXXXCXXXXXXCCC  CCXXXXXXXXXXXXC    CCCCCCC
*MM-==MZ1))++1)-  +1-.'''++++++''''+=+=-XX=++''.....'.'...'.'=--.--'='..''''.......---------------''''---..--''''''''''''-''---''---'
+  CCC              C'+++CCCCCC++++CCCCC  CCC++'''''+'+'''+'+C..'..+C+''++++'''''''...............CCCC...''..CCCCCCCCCCCC.++...CC...+
+                    +CCC      CCCC          CC+++++C+C+++C+C ''+''C C++CCCC+++++++'''''''''''''''BBBB'''++''BBBBBBBBBBBB'CC'''BB'''C
+                    C                         CCCCC C CCC C  XXCXX   CC    CCCCCCCXXXXXXXXXXXXXXXHHHHXXXCCXXHHHHHHHHHHHHX  XXXHHXXX
+                                                             CC CC                CCCCCCCCCCCCCCCXXXXCCC  CCXXXXXXXXXXXXC  CCCXXCCC
*ZXA-==A1+)1)=++)Z-'''+++++++++..'+=='+=-M=+''..'''.'''.'.'..-.-.---.+'.'''....-..--.--------------''''---...---'''''''''''--..-'---.
+   CCC           C+++CCCCCCCCC''+CCC+CCC CC++''+++'+++'+'+''C'.'...'C+'+++''''.''..'..............CCCC...'''...CCCCCCCCCCC..''.C...'
+                  CCC         ++C   C      CC++CCC+CCC+C+C++ +'+'''+ C+CCC++++'++''+''''''''''''''BBBB'''+++'''BBBBBBBBBBB''++'B'''+
+                              CC             CC   C   C C CC CXCXXXC  C   CCCCXCCXXCXXXXXXXXXXXXXXHHHHXXXCCCXXXHHHHHHHHHHHXXCCXHXXXC
+                                                              C CCC           C  CC CCCCCCCCCCCCCCXXXXCCC   CCCXXXXXXXXXXXCC  CXCCC
*))1XM--AZ+)Z1+X+..''++==+'+''''.'=+'-.+=+'.....'...........-.-------.'..--------.-.--.------------''''''--...--''''''-''''''-..-----
+     CC        C''++CCCCC+C++++'+CC+.'CCC+'''''+'''''''''''.'.......'+''........'.'..'............CCCCCC..'''..CCCCCC.CCCCCC.''.....
+                ++CC     C CCCC+C  C'+   C+++++C+++++++++++'+'''''''+C++''''''''+'+''+''''''''''''BBBBBB''+++''BBBBBB'BBBBBB'++'''''
+                CC             C    XC    CCCCC CCCCCCCCCCCXCXXXXXXXC CCXXXXXXXXCXCXXCXXXXXXXXXXXXHHHHHHXXCCCXXHHHHHHXHHHHHHXCCXXXXX
+                                    C                      C CCCCCCC    CCCCCCCC C CC CCCCCCCCCCCCXXXXXXCC   CCXXXXXXCXXXXXXC  CCCCC
*X1+)XAMAX)+)M=..++++++'+''=''++''+.--'=+'.-.--..................---'---------'---..--.--------..--'''''----...'---'----..--'''-.----
+             C''CCCCCC+C++C++CC++C'..+CC+'.'..''''''''''''''''''...C.........C...''..'........''..CCCCC....'''+...C....''..CCC.'....
+              ++      C CC CC  CC +''C  C+'+''++++++++++++++++++'''B'''''''''B'''++''+''''''''++''BBBBB''''+++C'''B''''++''BBB'+''''
+              CC                  CXX    CXCXXCCCCCCCCCCCCCCCCCCXXXHXXXXXXXXXHXXXCCXXCXXXXXXXXCCXXHHHHHXXXXCCC XXXHXXXXCCXXHHHXCXXXX
+                                   CC     C CC                  CCCXCCCCCCCCCXCCC  CC CCCCCCCC  CCXXXXXCCCC    CCCXCCCC  CCXXXC CCCC
*=MZ11ZXZ)))X'--++++++'.''++++++''.---'+++'...-----.............------------------.---------------''''--..''..---..-.----..'.-''-----
+C           +..CCCCCC+'++CCCCCC++'...+CCC+'''.....'''''''''''''..................'...............CCCC..''++''...''.'....''+'.CC.....
+            C''      C+CC      CC+'''C   C+++'''''+++++++++++++''''''''''''''''''+'''''''''''''''BBBB''++CC++'''++'+''''++C+'BB'''''
+             XX       C          CXXX     CCCXXXXXCCCCCCCCCCCCCXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXHHHHXXCC  CCXXXCCXCXXXXCC CXHHXXXXX
+             CC                   CCC        CCCCC             CCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCXXXXCC      CCC  C CCCC    CXXCCCCC
*==-AXXAX11A'--'=+'++++'++++''''+++....'+++'...--.-.......''.....--------------------------------'''''-XZ)+ZM'----'-MM+---....-'---.-
+CCC        +..+CC+CCCC+CCCC++++CCC''''+CCC+'''..'.'''''''++'''''................................CCCCC.      +....+C  C...''''.C...'.
+           C''C  C    C    CCCC   ++++C   C+++''+'+++++++CC+++++''''''''''''''''''''''''''''''''BBBBB'      C''''C    '''++++'B'''+'
+            XX                    CCCC     CCCXXCXCCCCCCC  CCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXHHHHHX       XXXX     XXXCCCCXHXXXCX
+            CC                                CC C              CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCXXXXXC       CCCC     CCC    CXCCC C
*MMAAXXXZX+--.+++'''''++++'....'++='...'++++'..--.-......''''.....-...--------------------------''''-+Z -=-+)1M'---====.-------'--.=-
+         C..'CCC+++++CCCC+''''+CCC+'''+CCCC+''..'.''''''++++'''''.'''..........................CCCC.C         +..CCCCC'.......C..'C.
+          ''+   CCCCC    C++++C   C+++C    C++''+'++++++CCCC+++++'+++''''''''''''''''''''''''''BBBB'          C''     +'''''''B''+ '
+          XXC             CCCC     CCC      CCXXCXCCCCCC    CCCCCXCCCXXXXXXXXXXXXXXXXXXXXXXXXXXHHHHX           XX     CXXXXXXXHXXC X
+          CC                                  CC C               C   CCCCCCCCCCCCCCCCCCCCCCCCCCXXXXC           CC      CCCCCCCXCC  C
*ZXZZ1))1--'-+=+++'...'+=+=.-...''++'.-.++==''.---......'''''''.'..---.....-------------....--'''''-X-=1M=++-AZZM.-'-.+.---'-'-'--.M.
+        C.C.CCCCC+'''+CCCC'.'''++CC+'.'CCCC++'...''''''+++++++'+''...'''''.............''''..CCCCC.     CCCC    '.C.'C'...C.C.C..' '
+         'B'     C+++C    +'+++CC  C+'+    CC+'''++++++CCCCCCC+C++'''+++++'''''''''''''++++''BBBBB'             +'B'+ +'''B'B'B''+ +
+         XHX      CCC     CXCCC     CXC      CXXXCCCCCC       C CCXXXCCCCCXXXXXXXXXXXXXCCCCXXHHHHHX             CXHXC CXXXHXHXHXXC C
+         CXC               C         C        CCC                 CCC     CCCCCCCCCCCCC    CCXXXXXC              CXC   CCCXCXCXCC
*++1Z111M-'-'+''''+..'+++++......''++'.'+=-=+'.--.....'''''+'.''.'...............-------.....-----.Z-X+.-'-----+XZ.'-+'---'''--'-.-=.
+        .C.+C++++C''+CCCCC''''''++CC+'+CCCCC+'..'''''+++++C+'++'+'''''''''''''''.......'''''.....'   C'.C.....C  'C.C+...CCC..C.'.C'
+        'B'C CCCC ++C     ++++++CC  C+C     C+''+++++CCCCC C+CC+C+++++++++++++++'''''''+++++'''''+    +'B'''''   +B' C'''BBB''B'+' +
+        XHX       CC      CCCCCC     C       CXXCCCCC       C  C CCCCCCCCCCCCCCCXXXXXXXCCCCCXXXXXC    CXHXXXXX   CHX  XXXHHHXXHXCX C
+        CXC                                   CC                                CCCCCCC     CCCCC      CXCCCCC    XC  CCCXXXCCXC C
*+--)1Z--'-'+'+'-.'+''+++=++''...'''++'+=A1Z=+.---....'+''+++''''''''...''.....----------..------.Z+A.-'''----'--1-.+-----'''----.-'+
+      C.C.+C+C+.'+C++CCCCCC++'''+++CC+CC   CC'...''''+C++CCC++++++++'''++'''''..........''......'   '.CCC....C.C C'CC....CCC....'.+C
+       'B'C C C'+C CC      CC+++CCC  C       +'''++++C CC   CCCCCCCC+++CC+++++''''''''''++''''''+   +'BBB''''B'   +  ''''BBB''''+'C
+       XHX     XC            CCC             CXXXCCCC               CCC  CCCCCXXXXXXXXXXCCXXXXXXC   CXHHHXXXXHX   C  XXXXHHHXXXXCX
+       CXC     C                              CCC                             CCCCCCCCCC  CCCCCC     CXXXCCCCXC      CCCCXXXCCCC C
*Z)-=Z=-'''+'...-.'+'''''+++++'...'''''=--AZA''----...''''+'+'+'''''..........---------------------=-'''''------M)AZZA-''-''--------.
+     C.CC+C+'''.'+C+++++CCCCC+'''+++++CCC   ++....'''++++C+C+C+++++''''''''''....................CC.CCCCC......      .CC.CC........'
+      'BBC C+++'+C CCCCC     C+++CCCCC      CC''''+++CCCC C C CCCCC++++++++++''''''''''''''''''''  'BBBBB''''''      'BB'BB''''''''+
+      XHH   CCCXC             CCC             XXXXCCC              CCCCCCCCCCXXXXXXXXXXXXXXXXXXXX  XHHHHHXXXXXX      XHHXHHXXXXXXXXC
+      CXX      C                              CCCC                           CCCCCCCCCCCCCCCCCCCC  CXXXXXCCCCCC      CXXCXXCCCCCCCC
*XZ)+X-'-.=+---.--.'++''+++==++'''''''=-====1+'.---..''''+=''+++'''..-...'...'..-----------------''''--'''-----'1)-=.-'''''-----.---'
+     .C.'CC...'..'+CC++CCCCCCC+++++++CCCCCC C+'...''++++CC++CCC+++''.'''+'''+''.................CCCC..CCC.....+  CC'.CCCCC.....'...C
+     'B'+  '''+''+C  CC       CCCCCCC        C+'''++CCCC  CC   CCC++'+++C+++C++'''''''''''''''''BBBB''BBB'''''C    +'BBBBB'''''+'''B
+     XHXC  XXXCXXC                            CXXXCC              CCXCCC CCC CCXXXXXXXXXXXXXXXXXHHHHXXHHHXXXXX     CXHHHHHXXXXXCXXXH
+     CXC   CCC CC                              CCC                  C          CCCCCCCCCCCCCCCCCXXXXCCXXXCCCCC      CXXXXXCCCCC CCCX
*XZ11=''-+='---..-..'++++++==+++''''+=M-=-=M1-+.----.''+'+++++=''.......'.......-----.'...--'M'-'''-MZ=--.-..'+Z)M'------------------
+    CCC.CC+...''.''+CCCCCCCCCCC++++CC CCCC  CC'....'++C+CCCCCC++'''''''+'''''''.....'+'''..+ +.CCC.  C..'.''+C   +..................
+     BB'  C'''++'++C           CCCC           +''''+CC C      CC+++++++C+++++++'''''+C+++''C C'BBB'   ''+'++C    C''''''''''''''''''
+     HHX   XXXCCXCC                           CXXXXC            CCCCCCC CCCCCCCXXXXXC CCCXX   XHHHX   XXCXCC      XXXXXXXXXXXXXXXXXX
+     XXC   CCC  C                              CCCC                            CCCCC     CC   CXXXC   CC C        CCCCCCCCCCCCCCCCCC
*X11A-'-'++.---.-...''+=+''+=++''''''++++=MA--='.---.'++++'+=+''.---.........-----.=-AXX+.-=+=-.--'=AAX===++MX1Z--''-----...--------'
+    .C.+CC'...'.'''++CCC++CCCC++++++CCCCC  CCC+'...'+CCCC+CCC++'...'''''''''.....'CC   C'.C  C'..+C   CCCCC    C.CC.....'''........C
+    'B'C  +'''+'+++CC   CC    CCCCCC          C+'''+C    C   CC+'''+++++++++'''''+      +'    +''C              'BB'''''+++''''''''B
+    XHX   CXXXCXCCC                            CXXXC           CXXXCCCCCCCCCXXXXXC      CX    CXX               XHHXXXXXCCCXXXXXXXXH
+    CXC    CCC C                                CCC             CCC         CCCCC        C     CC               CXXCCCCC   CCCCCCCCX
*Z1Z+--++++--------.'''++++++==+''''''+++-M++=-+.---.'++++''+'..---....'....------MZ11Z+X==Z+XAM-=+-+''..-.-)+Z+-''--------------''''
+   C..CCCC........'+++CCCCCCCCC++++++CCCC CCCCC'...'+CCCC++C+''...''''+''''......       CC     CCCCC++''.'C   C.CC..............CCCC
+    ''    ''''''''+CCC         CCCCCC          +'''+C    CC C++'''++++C++++''''''                   CC++'+     'BB''''''''''''''BBBB
+    XX    XXXXXXXXC                            CXXXC         CCXXXCCCC CCCCXXXXXX                     CCXC     XHHXXXXXXXXXXXXXXHHHH
+    CC    CCCCCCCC                              CCC            CCC         CCCCCC                       C      CXXCCCCCCCCCCCCCCXXXX
*ZX-'-+=+++--------.''''++=+===+++''+'++++.'+==+.---'++==+++'...---.'.'''.--------.MZ+)+A=Z)X'.'-'''''''--M -X.''---..-------'----'--
+  C+.CCCCC........'++++CCCCCCCCCC++C+CCCC'+CCCC'...+CCCCCCC+'''...'+'+++'........'      C   +'+.CCCCCCC..    'CC...''.......C....C..
+   C'     ''''''''+CCCC          CC C    +C    +'''C       C+++'''+C+CCC+''''''''+          C+C'BBBBBBB''    +BB'''++'''''''B''''B''
+    X     XXXXXXXXC                      C     CXXX         CCCXXXC C   CXXXXXXXXC           C XHHHHHHHXX    CHHXXXCCXXXXXXXHXXXXHXX
+    C     CCCCCCCC                              CCC            CCC       CCCCCCCC              CXXXXXXXCC     XXCCC  CCCCCCCXCCCCXCC
*Z-'-'=++'---------.''''.++++=++++++'+++++++===+'--.'++=)=+..------.....------------.'=+-+  M-'''----'--'X +--'''--------------------
+ C+.+CCC+.........'++++'CCCCCCCCCCC+CCCCCCCCCCC+..'+CCC CC''......'''''............'+CC.C   .CCC....C..+   C.CCC....................
+  C'C   C'''''''''+CCCC+           C           C''+C      ++''''''+++++''''''''''''+C  '    'BBB''''B''C    'BBB''''''''''''''''''''
+   X     XXXXXXXXXC    C                        XXC       CCXXXXXXCCCCCXXXXXXXXXXXXC   X    XHHHXXXXHXX     XHHHXXXXXXXXXXXXXXXXXXXX
+   C     CCCCCCCCC                              CC          CCCCCC     CCCCCCCCCCCC    C    CXXXCCCCXCC     CXXXCCCCCCCCCCCCCCCCCCCC
*XX--.+''.-'------.''''+''++==++++'+++++'++++-==+.-.++++-'.-------.--------..'...--------A +.''-------.M==X.'''----------------------
+  C.'C++'.C......'++++C++CCCCCCCC+CCCCC+CCCCCCCC'.'CCCCC+'.......'........''+'''........   'CC.......'    'CCC......................
+   '+ CC+'B''''''+CCCC CC        C     C        +'+     C+'''''''+''''''''++C+++''''''''   +BB'''''''+    +BBB''''''''''''''''''''''
+   XC   CXHXXXXXXC                              CXC      CXXXXXXXCXXXXXXXXCC CCCXXXXXXXX   CHHXXXXXXXC    CHHHXXXXXXXXXXXXXXXXXXXXXX
+   C     CXCCCCCC                                C        CCCCCCC CCCCCCCC      CCCCCCCC    XXCCCCCCC      XXXCCCCCCCCCCCCCCCCCCCCCC
*A-.-'''--''-----.'''.''''+===+++++++++++++++==++.-'++'''.-----------------........---.-.M-+''--'----+1-+--''---------------------'--
+ C'.+++..CC.....'+++'++++CCCCCCCCCCCCCCCCCCCCCCC'.+CC+++'.................''''''''...'.'   +C..C....C   C.CC.....................C..
+  +'CCC''BB'''''+CCC+CCCC                       +'C  CCC+'''''''''''''''''++++++++'''+'+   CB''B''''     'BB'''''''''''''''''''''B''
+  CX   XXHHXXXXXC   C                           CX      CXXXXXXXXXXXXXXXXXCCCCCCCCXXXCXC    HXXHXXXX     XHHXXXXXXXXXXXXXXXXXXXXXHXX
+   C   CCXXCCCCC                                 C       CCCCCCCCCCCCCCCCC        CCC C     XCCXCCCC     CXXCCCCCCCCCCCCCCCCCCCCCXCC
*AM'-+'.--'---.AM'++'..'++'+=====+++++++++''''+=='-.''....------.--.--..'..-''.'.....-..-M=++------'A  A+'''-------------------------
+  +.C+'..C...'  +CC+''+CC+CCCCCCCCCCCCCCC++++CCC+.'++''''......'..'..''+''.++'+'''''.''.   C......+    CCCC.........................
+  C' C+''B'''+  C  C++C  C               CCCC   C'+CC++++''''''+''+''++C++'CC+C+++++'++'    ''''''C     BBB'''''''''''''''''''''''''
+   X  CXXHXXXC      CC                           XC  CCCCXXXXXXCXXCXXCC CCX  C CCCCCXCCX    XXXXXX      HHHXXXXXXXXXXXXXXXXXXXXXXXXX
+   C   CCXCCC                                    C       CCCCCC CC CC     C         C  C    CCCCCC      XXXCCCCCCCCCCCCCCCCCCCCCCCCC
*XX--+'--'''--..'''++'.'''+''+===+=+++++'''''''+='--....--.-------...--......'.'.'..-----.)+A-----.A-=M-''----------------------''-''
+  C.C+..CCC..''+++CC+'+++C++CCCCCCCCCCC+++++++CC+..''''..'.......'''..''''''+'+'+''.....'   .....'    .CC......................CC.CC
+   ' C''BBB''++CCC  C+CCC CC           CCCCCCC  C''++++''+'''''''+++''++++++C+C+C++'''''+   '''''+    'BB''''''''''''''''''''''BB'BB
+   X  XXHHHXXCC      C                           XXCCCCXXCXXXXXXXCCCXXCCCCCC C C CCXXXXXC   XXXXXC    XHHXXXXXXXXXXXXXXXXXXXXXXHHXHH
+   C  CCXXXCC                                    CC    CC CCCCCCC   CC             CCCCC    CCCCC     CXXCCCCCCCCCCCCCCCCCCCCCCXXCXX
*ZZ--+.-'''-...'''++''..''+''+==+==+++++++'+'''''.---....-------.-.......'''...'..----''-.-=1---.-)=+-.'-'-------------------''---'''
+  C.C'.CCC.'''+++CC++''++C++CCCCCCCCCCCCC+C+++++'...''''.......'.'''''''+++'''+''....CC.'C  ...'C   C'C.C...................CC...CCC
+   ' +'BBB'+++CCC  CC++CC CC             C CCCCC+'''++++'''''''+'+++++++CCC+++C++''''BB'+   '''+     +B'B'''''''''''''''''''BB'''BBB
+   X CXHHHXCCC       CC                         CXXXCCCCXXXXXXXCXCCCCCCC   CCC CCXXXXHHXC   XXXC     CHXHXXXXXXXXXXXXXXXXXXXHHXXXHHH
+   C  CXXXC                                      CCC    CCCCCCC C                CCCCXXC    CCC       XCXCCCCCCCCCCCCCCCCCCCXXCCCXXX
*MM=----'''-'...'''''...-''''+==+=++=++++++++''''''.'+''''...-----...'..-.''....'.-''''''--M+A'=Z  Z=------------''''''''''''''''''''
+  C....CCC.+'''+++++'''.++++CCCCCCCCCCCCCCCC++++++'+C++++'''.....'''+''.'++''''+'.CCCCCC..   +C    C............CCCCCCCCCCCCCCCCCCCC
+   ''''BBB'C+++CCCCC+++'CCCC                CCCCCC+C CCCC+++'''''+++C++'+CC++++C+'BBBBBB''   C      ''''''''''''BBBBBBBBBBBBBBBBBBBB
+   XXXXHHHX CCC     CCCX                          C      CCCXXXXXCCC CCXC  CCCC CXHHHHHHXX          XXXXXXXXXXXXHHHHHHHHHHHHHHHHHHHH
+   CCCCXXXC            C                                    CCCCC      C         CXXXXXXCC          CCCCCCCCCCCCXXXXXXXXXXXXXXXXXXXX
*+=+----'''-'+''.''+'.....'+'++=++++++=+++++++'++''''''+++'+'..----''''....''''..-----'''---=)++ =A.---------'---''''''''''''''''''''
+CCC....CCC.+C++'++C+'''''+C+CCCCCCCCCCCCCCCCC+CC++++++CCC+C+''....++++''''++++''.....CCC...C      '.........C...CCCCCCCCCCCCCCCCCCCC
+   ''''BBB'C CC+CC C+++++C C                 C  CCCCCC   C C++''''CCCC++++CCCC++'''''BBB'''       +'''''''''B'''BBBBBBBBBBBBBBBBBBBB
+   XXXXHHHX    C    CCCCC                                   CCXXXX    CCCC    CCXXXXXHHHXXX       CXXXXXXXXXHXXXHHHHHHHHHHHHHHHHHHHH
+   CCCCXXXC                                                   CCCC              CCCCCXXXCCC        CCCCCCCCCXCCCXXXXXXXXXXXXXXXXXXXX
*=+-.'---''-.'++'''''..-.''+++'+++++==++++++=++''''''''''+'++'''.---.'''....''..--..'.''''---'=--+-''-------'''''''''''''''''''''''''
+CCC'C...CC.'+CC+++++''.'++CCC+CCCCCCCCCCCCCCCC++++++++++C+CC+++'...'+++''''++''..''+'CCCC...+CCCC.CC.......CCCCCCCCCCCCCCCCCCCCCCCCC
+   +B'''BB'+C  CCCCC++'+CC   C                CCCCCCCCCC C  CCC+'''+CCC++++CC++''++C+BBBB'''C    'BB'''''''BBBBBBBBBBBBBBBBBBBBBBBBB
+   CHXXXHHXC        CCXC                                       CXXXC   CCCC  CCXXCC CHHHHXXX     XHHXXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHH
+    XCCCXXC           C                                         CCC            CC    XXXXCCC     CXXCCCCCCCXXXXXXXXXXXXXXXXXXXXXXXXX
*X==.'---'''-.++'+''.'...'''+++++=+++=+++=++=++++'+'..''+''''''++.--.'''''..''.-''++'.-''-----------------'''''''''''''''''''''''''''
+ CC'C...CCC.'CC+C++'+'''+++CCCCCCCCCCCCCCCCCCCCC+C+''++C++++++CC'..'+++++''++'.++CC+'.CC.................CCCCCCCCCCCCCCCCCCCCCCCCCCC
+   +B'''BBB'+  C CC+C+++CCC                     C C++CC CCCCCC  +''+CCCCC++CC+'CC  C+'BB'''''''''''''''''BBBBBBBBBBBBBBBBBBBBBBBBBBB
+   CHXXXHHHXC      C CCC                           CC           CXXC     CC  CX     CXHHXXXXXXXXXXXXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHH
+    XCCCXXXC                                                     CC           C      CXXCCCCCCCCCCCCCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXX
*1-+'-'--''--..++='..'...'.''++=+=+++=+++++++++++''''''.''''''+=+'.....'''''''+=MXX1-.-'------------------''''''''''''''''''''''-''''
+ CC+.C..CC..''CCC+''+'''+'++CCCCCCCCCCCCCCCCCCCC++++++'++++++CCC+'''''+++++++CC    C'.C..................CCCCCCCCCCCCCCCCCCCCCC.CCCC
+   C'B''BB''++   C++C+++C+CC                    CCCCCC+CCCCCC   C+++++CCCCCCC       +'B''''''''''''''''''BBBBBBBBBBBBBBBBBBBBBB'BBBB
+    XHXXHHXXCC    CC CCC C                            C          CCCCC              CXHXXXXXXXXXXXXXXXXXXHHHHHHHHHHHHHHHHHHHHHHXHHHH
+    CXCCXXCC                                                                         CXCCCCCCCCCCCCCCCCCCXXXXXXXXXXXXXXXXXXXXXXCXXXX
*1ZXM-''--''--.'+++'....''..'++==+===++==++=='++'+++''''+.'..'++='.'...'.''''+=1+)Z-----------...------''-''''''''''''''''''------'''
+    .CC..CC..'+CCC+''''++''+CCCCCCCCCCCCCCCC+CC+CCC++++C'+''+CCC+'+'''+'++++CC    C..........'''......CC.CCCCCCCCCCCCCCCCCC......CCC
+    'BB''BB''+C   C++++CC++C                C  C   CCCC +C++C   C+C+++C+CCCC       ''''''''''+++''''''BB'BBBBBBBBBBBBBBBBBB''''''BBB
+    XHHXXHHXXC     CCCC  CC                             C CC     C CCC C           XXXXXXXXXXCCCXXXXXXHHXHHHHHHHHHHHHHHHHHHXXXXXXHHH
+    CXXCCXXCC                                                                      CCCCCCCCCC   CCCCCCXXCXXXXXXXXXXXXXXXXXXCCCCCCXXX
*1))--''--'''---'++'....'.'..'+==+=+=++=+++++=+++'''+++''..-..++='.''..'''+'.'....--------.-.--------'-''''''''''''''''---''''----'''
+   C.CC..CCC...+CC+''''+'+''+CCCCCCCCCCCCCCCCCCC+++CCC++''.''CCC+'++''+++C+'+''''........'.'........C.CCCCCCCCCCCCCCCC...CCCC....CCC
+    'BB''BBB'''C  C++++C+C++C                   CCC   CC++'++   C+CC++CCC C+C++++''''''''+'+''''''''B'BBBBBBBBBBBBBBBB'''BBBB''''BBB
+    XHHXXHHHXXX    CCCC C CC                            CCXCC    C  CC     C CCCCXXXXXXXXCXCXXXXXXXXHXHHHHHHHHHHHHHHHHXXXHHHHXXXXHHH
+    CXXCCXXXCCC                                           C                      CCCCCCCC C CCCCCCCCXCXXXXXXXXXXXXXXXXCCCXXXXCCCCXXX
*AZ1A--''-'''---.++'......'..'+==+=+=+=++++++++++++'+'''.'...'+'+'..'''++++'''..-----------------------'''''''''''''--.---'-''-----''
+    ..CC.CCC...'CC+''''''+''+CCCCCCCCCCCCCCCCCCCCC+C+++'+'''+C+C+''+++CCCC+++''.......................CCCCCCCCCCCCC..'...C.CC.....CC
+    ''BB'BBB'''+  C++++++C++C                     C CCC+C+++C C C++CCC    CCC++'''''''''''''''''''''''BBBBBBBBBBBBB''+'''B'BB'''''BB
+    XXHHXHHHXXXC   CCCCCC CC                           C CCC     CC          CCXXXXXXXXXXXXXXXXXXXXXXXHHHHHHHHHHHHHXXCXXXHXHHXXXXXHH
+    CCXXCXXXCCC                                                                CCCCCCCCCCCCCCCCCCCCCCCXXXXXXXXXXXXXCC CCCXCXXCCCCCXX
*+-AX.-----''----'='....'..'.'+====++====+++++'+++'''''''+'+''++'''.'+++'''..'..-------------------'-''''''''''''''.''-...---------''
+CC  '.....CC....+C+''''+''+'+CCCCCCCCCCCCCCCC+CCC+++++++C+C++CC+++'+CCC+++''+''...................C.CCCCCCCCCCCCCC'++.'''.........CC
+    +'''''BB''''C C++++C++C+C                C   CCCCCCC C CC  CCC+C   CCC++C++'''''''''''''''''''B'BBBBBBBBBBBBBB+CC'+++'''''''''BB
+    CXXXXXHHXXXX   CCCC CC C                                      C       CC CCXXXXXXXXXXXXXXXXXXXHXHHHHHHHHHHHHHHC  XCCCXXXXXXXXXHH
+     CCCCCXXCCCC                                                               CCCCCCCCCCCCCCCCCCCXCXXXXXXXXXXXXXX   C   CCCCCCCCCXX
*.+-X+..'-'-------++...'+'.'''+=====+=====++++++++'++'.'++++++''''++=++.-.....------.--..-----'---'''''''''''''''-.+...'.--.-.----'''
+'CC C''+.C.......CC'''+C+'+++CCCCCCCCCCCCCCCCCCCC+CC+'+CCCCCC++++CCCCC'.'''''......'..''.....C...CCCCCCCCCCCCCCC.'C'''+'..'.'....CCC
++    ++C'B'''''''  +++C C+CCC                    C  C+C      CCCC     +'+++++''''''+''++'''''B'''BBBBBBBBBBBBBBB'+ +++C+''+'+''''BBB
+C    CC XHXXXXXXX  CCC   C                           C                CXCCCCCXXXXXXCXXCCXXXXXHXXXHHHHHHHHHHHHHHHXC CCC CXXCXCXXXXHHH
+        CXCCCCCCC                                                      C     CCCCCC CC  CCCCCXCCCXXXXXXXXXXXXXXXC       CC C CCCCXXX
*-'-X-'++-'''''---.+...''....''+====+==+++'''+++++'''''''+''''''+=+++''...------------.--------''''''''''''''''''+++''.''.''..-'''''-
+.+C C+CC.CCCCC...'C'''++''''++CCCCCCCCCCC+++CCCCC+++++++C++++++CCCCC++'''............'........CCCCCCCCCCCCCCCCC+CCC++'++'++''.CCCCC.
+'C   C  'BBBBB'''+ +++CC++++CC           CCC     CCCCCCC CCCCCC     CC+++''''''''''''+''''''''BBBBBBBBBBBBBBBBBC   CC+CC+CC++'BBBBB'
+X       XHHHHHXXXC CCC  CCCC                                          CCCXXXXXXXXXXXXCXXXXXXXXHHHHHHHHHHHHHHHHH      C  C  CCXHHHHHX
+C       CXXXXXCCC                                                        CCCCCCCCCCCC CCCCCCCCXXXXXXXXXXXXXXXXX              CXXXXXC
*'''A-+==-''''''--'+..'..-...''+========++++'''+++'.''.''.'''+++++'''.----------------.------'''''''''''''''''-+==''+'.'++'.-'-----..
++++ CCCC.CCCCCC..+C''+''.'''++CCCCCCCCCCCCC+++CCC+'++'++'+++CCCCC+++'................'......CCCCCCCCCCCCCCCCC.CCC++C+'+CC+'.C.....''
+CCC     'BBBBBB''C ++C++'+++CC             CCC   C+CC+CC+CCC     CCC+''''''''''''''''+''''''BBBBBBBBBBBBBBBBB'   CC C+C  C+'B'''''++
+        XHHHHHHXX  CC CCXCCC                      C  C  C           CXXXXXXXXXXXXXXXXCXXXXXXHHHHHHHHHHHHHHHHHX       C    CXHXXXXXCC
+        CXXXXXXCC       C                                            CCCCCCCCCCCCCCCC CCCCCCXXXXXXXXXXXXXXXXXC             CXCCCCC
*-AMAM+==-'-'''''''+''...-...'++++===+==++++'=-=+'''.'....''+++'''.----'-------.------------'''''''''''''''''-===+++'+++'--''-.-..'..
+C    CCC.C.CCCCCC+C++'''.'''+CCCCCCCCCCCCCC+CCCC+++'+''''++CCC+++'....C.......'............CCCCCCCCCCCCCCCCC.CCCCCC+CCC+..CC.'.''+''
+        'B'BBBBBBC CC+++'+++C              C    CCC+C++++CC   CCC+''''B'''''''+''''''''''''BBBBBBBBBBBBBBBBB'      C   C''BB'+'++C++
+        XHXHHHHHH    CCCXCCC                       C CCCC        CXXXXHXXXXXXXCXXXXXXXXXXXXHHHHHHHHHHHHHHHHHX           XXHHXCXCC CC
+        CXCXXXXXX       C                                         CCCCXCCCCCCC CCCCCCCCCCCCXXXXXXXXXXXXXXXXXC           CCXXC C
*AZZXA=-=-'+'''''-++....'....++++=++==+==+'=A=-+M''.---..++++++'.------------.-...--------'''''''''''''''''-'M='-'++'-+-''''-.'.''''.
+     CCC.CCCCCCC.CC''''+''''CCCCCCCCCCCCC+C     ++'...''CCCCCC+'............'.'''........CCCCCCCCCCCCCCCCC.+ C+.+CC+CC.CCCC.'+'++++'
+        'B BBBBB'  ++++C++++             C      CC+'''++      C+''''''''''''+'+++''''''''BBBBBBBBBBBBBBBBB'C  C'C  C  'BBBB'+C+CCCC+
+        XH HHHHHX  CCCC CCCC                      CXXXCC       CXXXXXXXXXXXXCXCCCXXXXXXXXHHHHHHHHHHHHHHHHHX    X      XHHHHXC C    C
+        CX XXXXXC                                  CCC          CCCCCCCCCCCC C   CCCCCCCCXXXXXXXXXXXXXXXXXC    C      CXXXXC
*AAAX1---''.-''''''+'...-...''+++==+=++==++MXA--MM-.'''.+++++''------------------------''''''''''''''''''--'A==='==-+'-'''''-.'.+++'+
+     CCC+C'.CCCCC+C+'''.'''++CCCCCCCCCCCCC   CC  C'CCC'CCCCC++........................CCCCCCCCCCCCCCCCCC..+ CCC+CCCC+.CCCCC.'+'CCC+C
+        CB+'BBBBBC C+++'+++CC                     +BBB+     CC''''''''''''''''''''''''BBBBBBBBBBBBBBBBBB''C    C    C'BBBBB'+C+   C
+         HCXHHHHH   CCCXCCC                       CHHHC       XXXXXXXXXXXXXXXXXXXXXXXXHHHHHHHHHHHHHHHHHHXX           XHHHHHXC C
+         X CXXXXX      C                           XXX        CCCCCCCCCCCCCCCCCCCCCCCCXXXXXXXXXXXXXXXXXXCC           CXXXXXC
*==+=M--M+--+''''''+'......'+++++=++++===++A+.'+'+=.'''.''''..----------.-------------'''''''''''''''-----=M---==-='-''''''-..''+++'+
+CCCC CC C..CCCCCC+C+''''''+CCCCCCCCCCCCCCC C'+C+CC'CCC'++++''..........'.............CCCCCCCCCCCCCCC.....C CCCCCCC+.CCCCCC.''++CCC+C
+         '' BBBBBC C++++++C                 +C C  +BBB+CCCC++''''''''''+'''''''''''''BBBBBBBBBBBBBBB'''''         C'BBBBBB'++CC   C
+         XX HHHHH   CCCCCC                  C     CHHHC    CCXXXXXXXXXXCXXXXXXXXXXXXXHHHHHHHHHHHHHHHXXXXX          XHHHHHHXCC
+         CC XXXXX                                  XXX       CCCCCCCCCC CCCCCCCCCCCCCXXXXXXXXXXXXXXXCCCCC          CXXXXXXC
*----.-=-==-=-'''''+''...''''+=++++==+===+'='..++=+'''-....'.-----------..----------''''''''''''''--------MMMMAMM+-'''''''-.'..'''+++
+....'CCCCC.C.CCCC+C++'''++++CCCCCCCCCCCCC+C+''CCCCCCCC''''+'...........''..........CCCCCCCCCCCCCC.......C       C.CCCCCCC.'+''+++CCC
+''''+     ' 'BBBBC CC+++CCCC             C C++    BBB ++++C+'''''''''''++''''''''''BBBBBBBBBBBBBB'''''''         'BBBBBBB'+C++CCC
+XXXXC     X XHHHH    CCC                    CC    HHH CCCC CXXXXXXXXXXXCCXXXXXXXXXXHHHHHHHHHHHHHHXXXXXXX         XHHHHHHHXC CC
+CCCC      C CXXXX                                 XXX       CCCCCCCCCCC  CCCCCCCCCCXXXXXXXXXXXXXXCCCCCCC         CXXXXXXXC
*----.+-MMA-+.'''-+++'...+++====+++===-=++'+=+'=+'-'''-.----.---------------------''''''''''''''-....---MMMAAAXA+'''''''--.''.''+'+'+
+....'CC   .C'CCC.CCC+'''CCCCCCCCCCCCCCCCC+CCC+CC+.CCC.'....'.....................CCCCCCCCCCCCCC.''''...        CCCCCCCC..'++'++C+C+C
+''''+     ' +BBB'   C+++                 C   C  C'BBB'+''''+'''''''''''''''''''''BBBBBBBBBBBBBB'++++'''         BBBBBBB''+CC+CC C C
+XXXXC     X CHHHX    CCC                         XHHHXCXXXXCXXXXXXXXXXXXXXXXXXXXXHHHHHHHHHHHHHHXCCCCXXX         HHHHHHHXXC  C
+CCCC      C  XXXC                                CXXXC CCCC CCCCCCCCCCCCCCCCCCCCCXXXXXXXXXXXXXXC    CCC         XXXXXXXCC
*-'--.+==M--..'''-+++'...'++++=++==+=====.'.'=M=--''---------------.------------''''''''''''----.'.....=AAAMAAA''''''''--..''''++++++
+.+..'CCC C.''CCC.CCC+'''+CCCCCCCCCCCCCCC'+'+C C..CC...............'............CCCCCCCCCCCC....'+'''''C       +CCCCCCC..''++++CCCCCC
+'C''+     '++BBB'   C+++C               +C+C   ''BB'''''''''''''''+''''''''''''BBBBBBBBBBBB''''+C+++++        CBBBBBBB''++CCCC
+X XXC     XCCHHHX    CCC                C C    XXHHXXXXXXXXXXXXXXXCXXXXXXXXXXXXHHHHHHHHHHHHXXXXC CCCCC         HHHHHHHXXCC
+C CC      C  XXXC                              CCXXCCCCCCCCCCCCCCC CCCCCCCCCCCCXXXXXXXXXXXXCCCC                XXXXXXXCC
*'+''-A-=-A+-'-''-++'+...''+'+==+++=====+..'+===.--'-------------.---.--------''''''''''--....''.'...'+AAAAAXA+''''-----..''+'''+++++
++C++C CCC C.+.CC.CC+C'''++C+CCCCCCCCCCCC''+CCCC'..C.............'...'........CCCCCCCCCC..''''++'+'''+C       CCCCC.....''++C+++CCCCC
+C CC       'C'BB'  C +++CC C            ++C    +''B'''''''''''''+'''+''''''''BBBBBBBBBB''++++CC+C+++C         BBBB'''''++CC CCC
+           X XHHX    CCC                CC     CXXHXXXXXXXXXXXXXCXXXCXXXXXXXXHHHHHHHHHHXXCCCC  C CCC          HHHHXXXXXCC
+           C CXXC                               CCXCCCCCCCCCCCCC CCC CCCCCCCCXXXXXXXXXXCC                     XXXXCCCCC
*AMXZ+=A+=XM-'-''-'+''''.'+=+===+++==+'.''++==+''.----------.-....--.-.------''''''''--..''''''''''..+AAAAXXA=-''''.--.'.'''''''+'+++
+       CC  .+.CC.+C++++'+CCCCCCCCCCCC+'++CCCCC++'..........'.''''..'.'......CCCCCCCC..''++++++++++''C       C.CCCC'..'+'+++++++C+CCC
+           'C'BB'C CCCC+C            C+CC     CC+''''''''''+'++++''+'+''''''BBBBBBBB''++CCCCCCCCCC++         'BBBB+''+C+CCCCCCC C
+           X XHHX      C              C         CXXXXXXXXXXCXCCCCXXCXCXXXXXXHHHHHHHHXXCC          CC         XHHHHCXXC C
+           C CXXC                                CCCCCCCCCC C    CC C CCCCCCXXXXXXXXCC                       CXXXX CC
*Z1=- -A++-M---''-''''+='''+==+=++-=+..'===++'.-.-------..........--------''''''''-..++'.++++'.''''..AXAXXZZ--''''-'.'''+'+'+=+'''+++
+       CCC ...CC.++++CC+++CCCCCCCCCC''+CCCCC+'.'.......''''''''''........CCCCCCCC.''CC+'CCCC+'++++''       C.CCCC.+'+++C+C+CCC+++CCC
+           '''BB'CCCC  CCC          ++C     C+'+'''''''++++++++++''''''''BBBBBBBB'++  C+    C+CCCC++        'BBBB'C+CCC C C   CCC
+           XXXHHX                   CC       CXCXXXXXXXCCCCCCCCCCXXXXXXXXHHHHHHHHXCC   C     C    CC        XHHHHX C
+           CCCXXC                             C CCCCCCC          CCCCCCCCXXXXXXXXC                          CXXXXC
*-Z)+  1='+X=-.''-....'+'-+=+++++''..+=+==+'''.-------.......-...--.----'''''''''-.'..''''+++''..'.-.XXXXXXX+'''''-'+''+'+''+''''''++
+C      C+C C.'CC.''''+C+CCCCCCCC++''CCCCCC+++'.......'''''''.'''..'....CCCCCCCCC.'+''++++CCC++''+'.'       CCCCCC.+C++C+C++C++++++CC
+        C   '+BB'++++C C        CC++      CCC+'''''''+++++++'+++''+''''BBBBBBBBB'+C++CCCC   CC++C+'+        BBBBB'C CC C CC CCCCCC
+            XCHHXCCCC             CC         CXXXXXXXCCCCCCCXCCCXXCXXXXHHHHHHHHHXC CC         CC CXC        HHHHHX
+            C XXC                             CCCCCCC       C   CC CCCCXXXXXXXXXC                 C         XXXXXC
*A)-== =X+'-M-.-''---.''....---.++'.+==+=++.--..---......'.....-.-----'''''''''-..''''''+'++'.--''..=ZZXZXZ--'''''-++'''++''''''++'+'
+        C+C .'.CC...'++''''...'CC+'CCCCCCC'..''...''''''+'''''.'.....CCCCCCCCC.''++++++C+CC+'..++''C      C.CCCCC.CC+++CC++++++CC+C+
+         C  '+'BB'''+CC++++'''+  C+       +''++'''++++++C+++++'+'''''BBBBBBBBB'++CCCCCC C  C+''CC++        'BBBBB'  CCC  CCCCCC  C C
+            XCXHHXXXC  CCCCXXXC   C       CXXCCXXXCCCCCC CCCCCXCXXXXXHHHHHHHHHXCC           CXX  CC        XHHHHHX
+            C CXXCCC       CCC             CC  CCC            C CCCCCXXXXXXXXXC              CC            CXXXXXC
*X=     =X'+A'-''''''----'-'''--A+.'+++''.---------......'.-.------'-'''''''''-.''''''''++'+.---''.'AXZXZZZ.''''---++'++++''+'+'+=++'
+         +C +.+CCCCC....C.CCC.C C'+CCC++'.........''''''+'.'......C.CCCCCCCCC.'++++++++CC+C'...++'+       'CCCC...CC+CCCC++C+C+CCCC+
+         C  C'CBBBBB''''B'BBB'   +C   CC+'''''''''++++++C+'+''''''B'BBBBBBBBB'+CCCCCCCC  C +'''CC+C       +BBBB'''  C    CC C C    C
+             X HHHHHXXXXHXHHHX   C      CXXXXXXXXXCCCCCC CXCXXXXXXHXHHHHHHHHHXC            CXXX  C        CHHHHXXX
+             C XXXXXCCCCXCXXXC           CCCCCCCCC        C CCCCCCXCXXXXXXXXXC              CCC            XXXXCCC
*1        A'A''..''''''''''''.M-'--..+'-'''''--------..---.--'-''''''''''''---..'''+'''++'+'.---''.+XZZXZZM.'----.'=+'+''+'++'++'++'+
+          + +C''CCCCCCCCCCCC' C+..''C+.CCCCC........''...'..C.CCCCCCCCCCCC...''+++C+++CC+C+'...++'C       'C....'+CC+C++C+CC+CC+CC+C
+          C CB++BBBBBBBBBBBB+  C''++ C'BBBBB''''''''++'''+''B'BBBBBBBBBBBB'''++CCC CCC  C C+'''CC+        +B''''+C  C CC C  C  C  C
+             HCCHHHHHHHHHHHHC   XXCC  XHHHHHXXXXXXXXCCXXXCXXHXHHHHHHHHHHHHXXXCC            CXXX  C        CHXXXXC
+             X  XXXXXXXXXXXX    CC    CXXXXXCCCCCCCC  CCC CCXCXXXXXXXXXXXXCCC               CCC            XCCCC
*=)-       -+='''.-''-'''''''++'-''--.-''''''''------------'''''''''''''''-.....'+++'''+'+''--.=+''AZZXZ11=''..--.'++'+'++++++''+++''
+          CCCCC+'.CC.CCCCCCCCC+.CC..'.CCCCCCCC............CCCCCCCCCCCCCCC.'''''+CCC+++C+C++..'CC++       CCC''..'+CC+C+CCCCCC++CCC++
+             BBC+'BB'BBBBBBB  C'BB''+'BBBBBBBB''''''''''''BBBBBBBBBBBBBBB'+++++C   CCC C CC''+  CC        BB++''+C  C C      CC   CC
+             HH CXHHXHHHHHHH   XHHXXCXHHHHHHHHXXXXXXXXXXXXHHHHHHHHHHHHHHHXCCCCC            XXC            HHCCXXC
+             XX  CXXCXXXXXXX   CXXCC CXXXXXXXXCCCCCCCCCCCCXXXXXXXXXXXXXXXC                 CC             XX  CC
*-=)+      -+=-''.=+''-.--'M''--''''''''''''''--'----'''''''''''''''''''''-'.'..'++++'+'++'.--.'++'ZXXXXZZ''-''.-.'=+++'++''+''+++'''
+           CC.CC'CCCC.'..+ ++..CCCCCCCCCCCCCC..C....CCCCCCCCCCCCCCCCCCCCC.+'+''+CCCC+C+CC+'..'+CC+       +C.++'.'+CCCC+CC++C++CCC+++
+             'BB+  BB'+''C CC''BBBBBBBBBBBBBB''B''''BBBBBBBBBBBBBBBBBBBBB'C+C++C    C C  C+''+C  C       CB'CC+'+C    C  CC CC   CCC
+             XHHC  HHXCXX    XXHHHHHHHHHHHHHHXXHXXXXHHHHHHHHHHHHHHHHHHHHHX C CC           CXXC            HX  CXC
+             CXX   XXC CC    CCXXXXXXXXXXXXXXCCXCCCCXXXXXXXXXXXXXXXXXXXXXC                 CC             XC   C
*++--       ==.-''.A-.+Z11-+.-'''''''''''''''''''''''''''''''''''''''-''--.'.'-.+'=''''+'+.---.++.=ZXZZZZX.'-+'--.'=+''''++'+''+++'''
+            C'.CC' C'C     '.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.CC..'+'+.'C+C++++C+C'...'CC'C       'C.C+..'+CC++++CC+C++CCC+++
+             +'BB+  +      +'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'BB''+C+C'+ C CCCC C +'''+  +        +B' C''+C  CCCC  C CC   CCC
+             CXHHC  C      CXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXHHXXC C XC          CXXXC  C        CHX  XXC
+              CXX           CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCXXCC    C            CCC             XC  CC
*1)==---     )..-''-A-+)=1A.+-'''''''''''''''''''''''''''''''''''''-.+----.''.-.+.'++''''+.--.'++-AZZXZXXZ.'.'+..''+=='''++++'++'''.'
+             ''.CC. CC    'C.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.'C....'++'.'C'+CC++++C'..'+CC.        'C'+C''++CCC+++CCCC+CC+++'+
+             ++'BB'       + 'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'+ ''''+CC+'+ +C  CCCC +''+C  '        +B+C ++CC   CCC    C  CCC+C
+             CCXHHX       C XHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXC XXXXC  CXC C        CXXC   X        CHC  CC                  C
+               CXXC         CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC  CCCC    C            CC    C         X
*ZZZ))        1'.-''----'''++1M-=++'--''''''''''''''''''''''''''''-'+=----.'''-.+.'++++'''.--''++.MAXAXXXX+-.++..'.+++'..'''+'+++.-.'
+              +'.CC....+++C   CCCC+..CCCCCCCCCCCCCCCCCCCCCCCCCCCC.+CC....'+++.'C'+CCCC+++'..++CC'        C.'CC''+'CCC+''+++C+CCC'.'+
+              C+'BB''''CCC        C''BBBBBBBBBBBBBBBBBBBBBBBBBBBB'C  ''''+CCC'+ +C    CCC+''CC  +         '+  ++C+   C++CCC C   +'+C
+               CXHHXXXX            XXHHHHHHHHHHHHHHHHHHHHHHHHHHHHX   XXXXC   XC C        CXX    C         XC  CC C    CC        CXC
+                CXXCCCC            CCXXXXXXXXXXXXXXXXXXXXXXXXXXXXC   CCCC    C            CC              C                      C
*XZX1Z)=-+11XM-+.'''+'++=--AAAZX--=-.'---'''''''''''''''''''''''''-+==.-...'''-.+.''++''''.--.'+'.MXXXXXAX+-'=+'''.'++'...'++''''...+
+             CC'+++C+CCCCC     CCCC'+...CCCCCCCCCCCCCCCCCCCCCCCCC.CCC'.'''+++.'C'++CC++++'..'+C+'        C.+CC+++'+CC+'''+CC++++'''C
+               +CCC C              +C'''BBBBBBBBBBBBBBBBBBBBBBBBB'   +'+++CCC'+ +CC  CCCC+''+C C+         'C  CCC+C  C+++C  CCCC+++
+               C                   C XXXHHHHHHHHHHHHHHHHHHHHHHHHHX   CXCCC   XC C        CXXC   C         X      C    CCC       CCC
+                                     CCCXXXXXXXXXXXXXXXXXXXXXXXXXC    C      C            CC              C
*XXXXZ1ZM+----.'++=-=+==-MMAXXAM+-''---=AA-.---'''''''''''''''''''-+=-=.-..'''-.+...++'''.---.+++.MAXXXXAX=-.++'''.'+''...'+++'.-..++
+        C....'+CCCCCCCCC       C.CC...C  C'...CCCCCCCCCCCCCCCCCCC.CCCC'.''+++.'C'''CC+++'...'CCC'        C.'CC+++'+C++'''+CCC+'.''CC
+         ''''+C                 'BB'''    +'''BBBBBBBBBBBBBBBBBBB'    +'++CCC'+ +++  CCC+'''+   +         '+  CCC+C CC+++C   C+'++
+         XXXXC                  XHHXXX    CXXXHHHHHHHHHHHHHHHHHHHX    CXCC   XC CCC     CXXXC   C         XC     C    CCC     CXCC
+         CCCC                   CXXCCC     CCCXXXXXXXXXXXXXXXXXXXC     C     C           CCC              C                    C
*Z1)11M.-'---.'++'+++'=--MMMAXZZX=.'--.=X1ZXMMZZM'--''''''''''''''-+=--'.-.''+--'...+++'..---.''+.=AXXXXAX=-.++++''++'+'''''+++..-'='
+      '.C...'+CC+CCC+CCC        C'C..'C         +..CCCCCCCCCCCCCC.CCCC+'.'++C..+'''CCC+''...'++C'C       C.'CCCC++CC+C+++++CCC''.+C+
+      +'B'''+C  C   C            +B''+          C''BBBBBBBBBBBBBB'    C+'+CC ''C+++   C++'''+CC +         '+    CC  C CCCCC   ++'C C
+      CXHXXXC                    CHXXC           XXHHHHHHHHHHHHHHX     CXC   XX CCC    CCXXXC   C         XC                  CCX
+       CXCCC                      XCC            CCXXXXXXXXXXXXXXC      C    CC          CCC              C                     C
*)))=Z-'''--+=M))1Z111111+)ZXAAM+'.---.+MMMM+=A11MAZA+'---'''''''''==--=.-.'.'--'...+'+''.---..++.+XXAXAAXM..+'+'+++'.'..''+++'.-'+='
+     .CCC..CC                  C+'...'C    CC       C+...CCCCCCCCCCCCCC'.'+'+..+'''C+C++'...''CC'C        ''C+C+CCC+'+''++CCC+'.+CC+
+     'BBB''                     C+'''+               C'''BBBBBBBBB     +'+C+C''C+++ C CC+'''++  +         ++ C C   C+C++CC   C+'C  C
+     XHHHXX                      CXXXC                XXXHHHHHHHHH     CXC C XX CCC     CXXXCC  C         CC        C CC      CX
+     CXXXCC                       CCC                 CCCXXXXXXXXX      C    CC          CCC                                   C
*=)+==''--+X1Z+=        -   )M=+'.+'''--.'.'.'=AX=AZZXAAA==+'.--''''+=--+--...'-.'.-++'''.---.'+'-'MMAAMAA-'.+++++++.....'.++''--.=+'
+    CCC..C                   CC+'C+CC..'+'+'+C  C       CCC+'..CCC+CCCCC..'''+.'+'.CC+++'...'+C+.+       C+'CCCCCCC'''''+'CC++..'CC+
+     BB''                      C+ CBB''+C+C+C              C+''BBBC     ''+++C'+C+'  CCC+'''+C C'C        C+       +++++C+  CC''+  C
+     HHXX                       C  HHXXC C C                CXXHHH      XXCCC XC CX     CXXXC   X          C       CCCCC C    XXC
+     XXCC                          XXCC                      CCXXX      CC    C   C      CCC    C                             CC
*---=+'-+Z))1ZZ1++  -+)-=   A-----'+''''''''''-.+.+-=--MAAAAAX-AM='''+=--.----.--.--''.''''---.++..-MAAMAAA'-'+++++''-..-.'++''-.++''
+    CC.C                    .....+CCCCCCCCCCC.'C'CCCCC       C  C+++CCCC'....'..'..++'++++...'CC''C       +.+CCCCC++.''.'+CC++.'CC++
+     B'                     '''''C BBBBBBBBBB'+ +                CCC    +''''+''+''CC+CCCC'''+  ++        C'C     CC'++'+C  CC'+  CC
+     HX                     XXXXX  HHHHHHHHHHXC C                       CXXXXCXXCXX  C    XXXC  CC         X        XCCXC     XC
+     XC                     CCCCC  XXXXXXXXXXC                           CCCC CC CC       CCC              C        C  C      C
*=-  =--  =ZXZ1)11+==)1==  =---'''''''''''''''''''''---'=-MA-A-X1ZX1XM++++----.'-..-.+'..''.--.+''--MAMXAAX+-'++=++''.....+''..'=++''
+    C.C                    ...CCCCCCCCCCCCCCCCCCCCC...+CC  C C       CCCC....'+.''.'C+''++'..'C++.C       C.+CCCCC++'''''C++''+CCC++
+     '                     '''BBBBBBBBBBBBBBBBBBBBB'''C                  ''''+C'++'+ C++CC+''+ CC'         'C     CC+++++ CC++C   CC
+     X                     XXXHHHHHHHHHHHHHHHHHHHHHXXX                   XXXXC XCCXC  CC  CXXC   X         X        CCCCC   CC
+     C                     CCCXXXXXXXXXXXXXXXXXXXXXCCC                   CCCC  C  C        CC    C         C
*)   -)    =M-XXZ111+))))--'----'''''''''''''''''''''''''----.'=MMMAXAAMMM-=+..------.....'.---'+'-'MMMXAAAM..==''''+..--''''..++''''
+            C             +....CCCCCCCCCCCCCCCCCCCCCCCCC....'+C          CCC''......'''''+'...+C+.+        ''CC++++C''..++++''CC++++
+                          C''''BBBBBBBBBBBBBBBBBBBBBBBBB''''+C              ++''''''+++++C+'''C C'C        ++  CCCC ++''CCCC++  CCCC
+                           XXXXHHHHHHHHHHHHHHHHHHHHHHHHHXXXXC               CCXXXXXXCCCCC CXXX   X         CC       CCXX    CC
+                           CCCCXXXXXXXXXXXXXXXXXXXXXXXXXCCCC                  CCCCCC       CCC   C                    CC
*)          +AXXZ111))))))M-----'''''''''''''''''''''''''''''''--.'=-MMMMMAXAAM==='--------...--+'.--MMMAMMA=.+=''-.''.-...'..'=''..'
+                          .....CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC..'+CC          CCC+........'''..C+'.C       C'CC++.'++'.'''+''+C++''+
+                          '''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB''+C               C''''''''+++'' C+'         +  CC'+CC+'+++C++C CC++C
+                          XXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXC                 XXXXXXXXCCCXX  CX         C    XC  CXCCC CC    CC
+                          CCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC                  CCCCCCCC   CC   C              C    C
*           -11Z1Z1ZZZ1ZX--.---''''''''''''''''''''''''''''''''''''--.+=-MMAMAMM-AM--++.--'-----.+..+-AMAMMAA''+''.-.''--....'=''...'
+                        C.'...CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC..'CCC       C  CCCC'..C.....'C''CC       ++C++'.'++..''''+C++'''+
+                         '+'''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB''+                 +''B'''''+ ++         CC CC+'+CC''++++C CC+++C
+                         XCXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXC                 CXXHXXXXXC CC              CXC  XXCCCC    CCC
+                         C CCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC                   CCXCCCCC                   C   CC
*-          -)ZZZXAXXMXX1'''.---'-'-''''''-''''-'-''''''''''''''''''''.+-M--=M-++-MAMMAM-++.---''------M-MMMM-.''+'.--+.'+'.'==+.----
+                        +C+'...C.C.CCCCCC.CCCC.C.CCCCCCCCCCCCCCCCCCCC'CC CCC CCCC      CCC'...CC....CC C    C'++C+'..C'+C+'+CCC'....
+                        CBC+'''B'B'BBBBBB'BBBB'B'BBBBBBBBBBBBBBBBBBBB+                    +'''BB''''         +CC C+'' +C C+C   +''''
+                         H CXXXHXHXHHHHHHXHHHHXHXHHHHHHHHHHHHHHHHHHHHC                    CXXXHHXXXX         C    CXX C   C    CXXXX
+                         X  CCCXCXCXXXXXXCXXXXCXCXXXXXXXXXXXXXXXXXXXX                      CCCXXCCCC               CC           CCCC
*+=          +1MMAXZ11)Z1.-.---------'''-''-'-'-'''''''''''''''''''''''.+---='..--'+==----M==--=''---.''+=--=M''-''..-++'.'''++...---
+                        '.'.........CCC.CC.C.C.CCCCCCCCCCCCCCCCCCCCCCC'CCCCC+''..+CCCCCCC CCCCC++...'++CCCCC +C.++''.CC+'+++CC'''...
+                        +'+'''''''''BBB'BB'B'B'BBBBBBBBBBBBBBBBBBBBBBB+     C++''C             CC'''+CC      CB'CC++'  C+CCC  +++'''
+                        CXCXXXXXXXXXHHHXHHXHXHXHHHHHHHHHHHHHHHHHHHHHHHC      CCXX                XXXC         HX  CCX   C     CCCXXX
+                         C CCCCCCCCCXXXCXXCXCXCXXXXXXXXXXXXXXXXXXXXXXX         CC                CCC          XC    C            CCC
*))=        - )AMMZ11+==+-'..----'---''-'---'-''''''''''''-'''''''''-''-+=----'.--.--+...'=+-MMMMM=++-+'+=+'''.--''..--''''+=++''.--'
+                        C+''....C...CC.C...C.CCCCCCCCCCCC.CCCCCCCCC.CC.CCCCCC+'..'..C'''+CCC     CCCCC+CCC+++'..++''..++++CCCC++'..C
+                         C++''''B'''BB'B'''B'BBBBBBBBBBBB'BBBBBBBBB'BB'      C+''+'' +++C             C   CCC+''CC++''CCCC    CC+''B
+                          CCXXXXHXXXHHXHXXXHXHHHHHHHHHHHHXHHHHHHHHHXHHX       CXXCXX CCC                     CXX  CCXX          CXXH
+                            CCCCXCCCXXCXCCCXCXXXXXXXXXXXXCXXXXXXXXXCXXC        CC CC                          CC    CC           CCX
*11++-     ---)ZZ1=+)Z+  AM-'--.------''------'''''''''''--'''''''''''''-=----=+'..--'+.----'''===+'+=--MMMMM-='.'.--''-.'===++'..--'
+                          C+..'......CC......CCCCCCCCCCC..CCCCCCCCCCCCC.CCCCCCC+''..+C'....+++CCCC+CCCC     CC+'+'..CC.'+CCCCC+''..C
+                           C''+''''''BB''''''BBBBBBBBBBB''BBBBBBBBBBBBB'       C++''C +''''CCC    C           C+C+''BB'+C     C++''B
+                            XXCXXXXXXHHXXXXXXHHHHHHHHHHHXXHHHHHHHHHHHHHX        CCXX  CXXXX                    C CXXHHXC       CCXXH
+                            CC CCCCCCXXCCCCCCXXXXXXXXXXXCCXXXXXXXXXXXXXC          CC   CCCC                       CCXXC          CCX
*AZ1)+)=    -=1+=- +1AMZ-A+=)=--------''-'---'''''''''----'''''''''''''''.==-=-=+'.---++'--.+--''...-.'=-MXAAZZXZZ1A-+.--+=+'+'++'-''
+                            C........CC.C...CCCCCCCCC....CCCCCCCCCCCCCCC'CCCCCCC+'...CC+..'C..++'''.'+CC           CC'..CCC+C+CC+.CC
+                             ''''''''BB'B'''BBBBBBBBB''''BBBBBBBBBBBBBBB+       C+'''  C''+ ''CC+++'+C               +''   C C  C'BB
+                             XXXXXXXXHHXHXXXHHHHHHHHHXXXXHHHHHHHHHHHHHHHC        CXXX   XXC XX  CCCXC                CXX         XHH
+                             CCCCCCCCXXCXCCCXXXXXXXXXCCCCXXXXXXXXXXXXXXX          CCC   CC  CC     C                  CC         CXX
*A11Z1)+==-- -+- --)AM-AZ)++))X-.----''''---''''''''''-'---''''''''''''''-+--====+'.-.'='---'--.+'+.--++--MM-AXAAX1ZXM=.--=M===+''---
+                     C        C'....CCCC...CCCCCCCCCC.C...CCCCCCCCCCCCCC.CCCCCCCC+'.'+C+...+..'C+C'..CCCC  C         C'..C CCCC++...
+                               +''''BBBB'''BBBBBBBBBB'B'''BBBBBBBBBBBBBB'        C+'+C C'''C''+ C +''                 +''      CC'''
+                               CXXXXHHHHXXXHHHHHHHHHHXHXXXHHHHHHHHHHHHHHX         CXC   XXX XXC   CXX                 CXX        XXX
+                                CCCCXXXXCCCXXXXXXXXXXCXCCCXXXXXXXXXXXXXXC          C    CCC CC     CC                  CC        CCC
*X11)111+)== =--    =)Z)1-)))))1X-'---------'''''''-''''''''''''''''''''''-MM---==''.-.+'---''--'++'-'--M------M-++=-=.'--.X+=-X='..'
+                                C+.........CCCCCCC.CCCCCCCCCCCCCCCCCCCCCC.  CCCCC++'.'C+...++..+CC+.C.C CCCCCC CCCCCC'+..' CCC C+''+
+                                 C'''''''''BBBBBBB'BBBBBBBBBBBBBBBBBBBBBB'       CC+'+ C'''CC''C  C'B'               +C''+      C++C
+                                  XXXXXXXXXHHHHHHHXHHHHHHHHHHHHHHHHHHHHHHX         CXC  XXX  XX    XHX               C XXC       CC
+                                  CCCCCCCCCXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXC          C   CCC  CC    CXC                 CC
*)1Z11111)++=+---     =)+=+1)11ZXZZM+----''''''''''''''''''''''''''''''''''MM-M-==++...''---.'-'-++'----M--MMM-MA....----.'+-''==+'++
+                                   C....CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+  C CCCCC'''++...'+.C.CC+...C CC   C  ''''....'+C.++CCC+CC
+                                    ''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC         +++CC'''+C'B'  C'''          ++++''''+C 'CC   C
+                                    XXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH          CCC  XXXC XHX   XXX          CCCCXXXXC  X
+                                    CCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX               CCC  CXC   CCC              CCCC   C
*))11Z1)111)==+---  - -Z+))1)ZZZ1Z11)Z=--'''''''''''''''''=.'''''''''''''.XM--M----=+''+'.--..-'-+'''--=-M--MAMMX+.'-''.'.----'''--.=
+                                     C..CCCCCCCCCCCCCCCCCC'CCCCCCCCCCCCC'  CC CCCCCC++C+'..''.C.C+++..CC CC     C'+.CC'+'....CCC..'C
+                                      ''BBBBBBBBBBBBBBBBB +BBBBBBBBBBBBB+           CC C+''++'B' CCC''           +C'BB+C+''''BBB''+
+                                      XXHHHHHHHHHHHHHHHHH CHHHHHHHHHHHHHC               CXXCCXHX    XX           C XHHC CXXXXHHHXXC
+                                      CCXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXX                 CC  CXC    CC             CXX   CCCCXXXCC
*))+)Z1111)+++)--=+1+1X)1)111ZZZXZZX111X=-''''''--'''''''''-'''''''''''''-M-MM----M-+''+'---'..'-..-..-+---MM-A-A=..-''..'.----''''.=
+                                       C.CCCCCC..CCCCCCCCC.+CCCCCCCCCCCCC C  CCCC CC++C+...+''C.''.''.CCCC  C C C''.CC''+'....CCCC'C
+                                        'BBBBBB''BBBBBBBBB'CBBBBBBBBBBBB            CC C'''C++B'++'++'           ++'BB++C+''''BBBB+
+                                        XHHHHHHXXHHHHHHHHHX HHHHHHHHHHHH                XXX CCHXCCXCCX           CCXHHCC CXXXXHHHHC
+                                        CXXXXXXCCXXXXXXXXXC XXXXXXXXXXXX                CCC   XC  C  C             CXX    CCCCXXXX
*)+++)1))1)1))+=-Z=.+=A)1)1)ZZZZXZXZZZZ11Z-.'''---''-'''''''''''''''''''+MM-MM-----M--.+..---'.---.---.-=----MM-M-+.-'''.''..----'-+=
+                 C'CC                    C'CCC...CC.CCCCCCCCCCCCCCCCCCCC  C  CCCCC C.'C''...+'...'...'.CCCCC  C CC'.CC+'++''....C.CC
+                  +                       +BBB'''BB'BBBBBBBBBBBBBBBBBBB             '+ ++'''C+'''+'''+'           +'BBC+CC++''''B'
+                  C                       CHHHXXXHHXHHHHHHHHHHHHHHHHHHH             XC CCXXX CXXXCXXXCX           CXHH C  CCXXXXHX
+                                           XXXCCCXXCXXXXXXXXXXXXXXXXXXX             C    CCC  CCC CCC C            CXX      CCCCXC
*))+)++))))))))++=----+XZ111ZZXXXXXXXZZXXZZXA+--'''''''''''''''''''''''------M-M--MM''-''.---.'--'-.-'--'=------MM='-'-..''..--.---=+
+                C....C                      C..CCCCCCCCCCCCCCCCCCCCCCC.CCCCC C CC  +C.++'...'+..C.'.C..+CCCCCCC  C+.C.''++''..'...CC
+                 ''''                        ''BBBBBBBBBBBBBBBBBBBBBBB'            CB'CC+'''+C''B'+'B''C          C'B'++CC++''+'''
+                 XXXX                        XXHHHHHHHHHHHHHHHHHHHHHHHX             HX  CXXXC XXHXCXHXX            XHXCC  CCXXCXXX
+                 CCCC                        CCXXXXXXXXXXXXXXXXXXXXXXXC             XC   CCC  CCXC CXCC            CXC      CC CCC
*))))))+-=++)++)X-.----=AZZZZXZXXXAXXXAAXZZ1)1X'-''''''''''''''''''''''=M----=------.-'.+...--.'--'-'-''.M==---MMM-'.'.'-+.+'-.-.-'++
+                .'....C                       +.CCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCC'.C'C'''..'+..C.+.CC' CCCCC   C+'C'+.C'C+.'.'.+CC
+                '+''''                        C'BBBBBBBBBBBBBBBBBBBBBB             +'B+ +++''+C''B'C'BB+          C+B+C' + C'+'+'C
+                XCXXXX                         XHHHHHHHHHHHHHHHHHHHHHH             CXHC CCCXXC XXHX XHHC           CHC X C  XCXCX
+                C CCCC                         CXXXXXXXXXXXXXXXXXXXXXX              CX     CC  CCXC CXX             X  C    C C C
*))))1))+-=--+ZM'-.---'-'AXZZXXXAAAAAXXXAXXXZZZ1X=.-''''''''''''''''''+M=======-----='''.'+.---''-''--'+-ZZ++-MMMMM='-''.'.'..-...'++
+               +.'...C.+                        C'.CCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCC+CC'+C'...++.CC..CCC  CCC     C+.++'+'+''.'''+CC
+               C'+'''B'C                         +'BBBBBBBBBBBBBBBBBB               CBB+C +'''CC'BB''B             C'CC+C+C++'+++C
+                XCXXXHX                          CXHHHHHHHHHHHHHHHHHH                HHC  CXXX  XHHXXH              X  C C CCXCCC
+                C CCCXC                           CXXXXXXXXXXXXXXXXXX                XX    CCC  CXXCCX              C        C
*)=+=)))+++=-1+.----------+AXXXXAAXXAXAAAXXXXZZZZ1A-+--'''''''''''''''---=+++++++==++'''-'+'.--''-''-'-'M=M-==----M-+.'.-.''....''+=+
+             C'..........C                        CC..CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+CC.+C+'..++.CC.+.+ C CCCCCCC CC'+'.'++''''++CCC
+              +''''''''''                           ''BBBBBBBBBBBBBBB               CBB'C C+''CC'BB'C'C             +C+'+CC++++CC
+              CXXXXXXXXXX                           XXHHHHHHHHHHHHHHH                HHX   CXX  XHHX X              C CXC  CCCC
+               CCCCCCCCCC                           CCXXXXXXXXXXXXXXX                XXC    CC  CXXC C                 C
*))+++++++==++--.-----------=MAXAAAAAAXMAAAAXXXXXZ1ZZM-.---''''''''''.-==+''''.-.'--'''''-''..--''-'-'.---=---=M--M-=+'---.'''.'''==+
+            C..'...........C                         C'...CCCCCCCCCC'CCCC++++'.'+..CCCCC.++''..++.C.+'.CCCCCCC CC CCC+...'+++'+++CCC
+             ''+'''''''''''                           +'''BBBBBBBBBB+    CCCC+'+C''BBBBB'CC++''CC'B'C+'              C'''+CCC+CCC
+             XXCXXXXXXXXXXX                           CXXXHHHHHHHHHHC        CXC XXHHHHHX  CCXX  XHX CX               XXXC   C
+             CC CCCCCCCCCCC                            CCCXXXXXXXXXX          C  CCXXXXXC    CC  CXC  C               CCC
*11)1++)== )=..-------'---''''.MMAAAXXXXXAZAAAAXXXXXXXXX-=+'.----'-'''-+'...-'''''''''''''-''.---'.--'-'.=+'+ZMAMMAMMM+'.--'+''.--='+
+           C''.C.....+...CCCC'                         CCC+'....C.CC+CC+'''.CCCCCCCCCCCCC.++'...+'..+.C'CC+C         C+'..+C++'..C+C
+            ++' '''''C'''BBBB+                            C+''''B'BBC  C+++'BBBBBBBBBBBBB'CC+'''C+''C'B+  C           C+''C CC+'' C
+            CCX XXXXX XXXHHHHC                             CXXXXHXHH    CCCXHHHHHHHHHHHHHX  CXXX CXX XHC               CXX    CXX
+              C CCCCC CCCXXXX                               CCCCXCXX       CXXXXXXXXXXXXXC   CCC  CC CX                 CC     CC
*1ZZZ1++++Z=....-------------''-'-M-AMAAAAXAAXAXXXMMAMMAAMMAM--===++'==''..-''''''''''''''''...---.'.....--'-MMMMMAM---'..--.'..''+++
+          C''''.............CC.+C C                         CCCCCCC+CC++''.CCCCCCCCCCCCCCCC'''...'+'''''..+.       CCC+''..'+''++CCC
+           ++++'''''''''''''BB'C                                   C  CC++'BBBBBBBBBBBBBBBB+++'''+C+++++''C'          C++''+C++CC
+           CCCCXXXXXXXXXXXXXHHX                                         CCXHHHHHHHHHHHHHHHHCCCXXXC CCCCCXX X           CCXXC CC
+               CCCCCCCCCCCCCXXC                                           CXXXXXXXXXXXXXXXX   CCC       CC C             CC
*=)))Z1)+A'..--.----------.-''''''.'--AMAMAMAAXXXAAAM-=----M----M==-=M+..--'''''''''''''''''-''..----....-'='+M-MMAM-===--.-.'==A-++=
+         +''..'..........'.CCCCCC'+CC               CCCCCC CCCC CCCC C''..CCCCCCCCCCCCCCCCC.++''....''''.+CCC C    CCCC..'.'+CC CCCC
+         C++''+''''''''''+'BBBBBB+C                                   ++''BBBBBBBBBBBBBBBBB'CC++''''++++'C B           ''+'+C
+          CCXXCXXXXXXXXXXCXHHHHHHC                                    CCXXHHHHHHHHHHHHHHHHHX  CCXXXXCCCCX  H           XXCXC
+            CC CCCCCCCCCC CXXXXXX                                       CCXXXXXXXXXXXXXXXXXC    CCCC    C  X           CC C
*+---+11M'..---.------''----'''''''''.+=-MAMMAMAXAAAA---M-=-==M=-+==--=----'-'-----------'--'+'..----''-'XZM.=M-M-M-M=+-'.'+MAA--++++
+        +''...'......CC....CCCCCCCCC'CCC            CCC CCCCC CCCCCCCC....C.C...........C..+C+''....CC.+   'C C C C CCC+'+C   CCCCCC
+        C++'''+''''''BB''''BBBBBBBBB+                                 ''''B'B'''''''''''B''C C++''''BB'C   +           C+C
+         CCXXXCXXXXXXHHXXXXHHHHHHHHHC                                 XXXXHXHXXXXXXXXXXXHXX   CCXXXXHHX    C            C
+           CCC CCCCCCXXCCCCXXXXXXXXX                                  CCCCXCXCCCCCCCCCCCXCC     CCCCXXC
*+++- )='.-.-......----''''''''''''''''-.+-=MMMAMMMAAMAM--=-+------MM--'--''-.--.--..'''''++-+''+..----.+=-----MMXM-AA-=+'=M=-='-'+++
+      C+'.'.''''''....CCCCCCCCCCCCCCCC.'CCC            CCCCCCCCCCC  CC+..CC.'..'..''+++++CCCC++C''....' C..CCC    C  CCC+C CCC+.+CCC
+       C+'+'++++++''''BBBBBBBBBBBBBBBB'+                              C''BB'+''+''++CCCCC    CC ++''''+  ''             C     C'C
+        CXCXCCCCCCXXXXHHHHHHHHHHHHHHHHXC                               XXHHXCXXCXXCC            CCXXXXC  XX                    X
+         C C      CCCCXXXXXXXXXXXXXXXXC                                CCXXC CC CC                CCCC   CC                    C
*--=-)=....------.'.--''''''''''-----'''''--.+-====+-=MM--M--M----MMMMA-'----+++''+=-MMMMMAA=...--.....XZ-'''A-=+M-MMMMMM+-'.----''++
+     C''''......'+'..CCCCCCCCCC.....CCCCC..'CCCCCCCCC  CC CC CCCC     C+....CCC++CCC       C'''..'''''  .CC+ CCC C      C.+'....++CC
+      ++++''''''+C+''BBBBBBBBBB'''''BBBBB''+                           C''''   CC           +++''+++++  'BBC             'C+''''CC
+      CCCCXXXXXXC CXXHHHHHHHHHHXXXXXHHHHHXXC                            XXXX                CCCXXCCCCC  XHH              X CXXXX
+          CCCCCC   CCXXXXXXXXXXCCCCCXXXXXCC                             CCCC                   CC       CXX              C  CCCC
*= -1=..--.-----.---'''''''''''-----''''''''''-.'+'+======-=-M--MMM-MMMMM=+++-AMMAAAMAAAAXA=++'''..--.-+1XM=MM'---'=+=--M=--''''-'+++
+    C''..'.....'...CCCCCCCCCCC.....CCCCCCCCCC.'+C+CCCCCCCCCC CC   C     CCCCC             CCC+++''..'.C   C  +...+CCCCC C..CCCC.+CCC
+     ++''+'''''+'''BBBBBBBBBBB'''''BBBBBBBBBB'+C C                                           CCC++''+'       C'''C       ''BBBB'C
+     CCXXCXXXXXCXXXHHHHHHHHHHHXXXXXHHHHHHHHHHXC                                                 CCXXCX        XXX        XXHHHHX
+       CC CCCCC CCCXXXXXXXXXXXCCCCCXXXXXXXXXXC                                                    CC C        CCC        CCXXXXC
*+=X'.--..--------'''''''''''-..-'--''''''''''''''---'.'++===---=--=---------M-AAAMMAAMAA-==-==++++..---.+==-=.''+X=M------'''--.A+++
+   +'..''........CCCCCCCCCCC.''.C..CCCCCCCCCCCCCC...+'+CCCCCCCCCCCCCCCCCCCCC C          CCCCCCCCCC''...'CCCCC'++C   ......+++..' CCC
+   C+''++''''''''BBBBBBBBBBB'++'B''BBBBBBBBBBBBBB'''C+C                                           ++'''+     +CC    ''''''CCC''+
+    CXXCCXXXXXXXXHHHHHHHHHHHXCCXHXXHHHHHHHHHHHHHHXXX C                                            CCXXXC     C      XXXXXX   XXC
+     CC  CCCCCCCCXXXXXXXXXXXC  CXCCXXXXXXXXXXXXXXCCC                                                CCC             CCCCCC   CC
*)X.-'-----------'''''''''--...-'-'-'-'-'''-'''''''''''''-.-'+=+===--MM=---M=+==++==-=-===---=+=+=+'='+..'=''--- -=--M--'''-+-A))+++'
+  '.+...........CCCCCCCCC..'''.C.C.C.C.CCC.CCCCCCCCCCCCC.'.+CCCCCCCC  CCCC CCCCCCCCCCCCCCCCCCCCCCC+C+C''+C++..C      ..CCC.CC    CC+
+  +'C'''''''''''BBBBBBBBB''+++'B'B'B'B'BBB'BBBBBBBBBBBBB'+'C                                      C C ++C CC''       ''BBB'        C
+  CX XXXXXXXXXXXHHHHHHHHHXXCCCXHXHXHXHXHHHXHHHHHHHHHHHHHXCX                                           CC    XX       XXHHHX
+   C CCCCCCCCCCCXXXXXXXXXCC   CXCXCXCXCXXXCXXXXXXXXXXXXXC C                                                 CC       CCXXXC
*M..-----------'''''''''-----'--'''-''--''''''''''''''''''''''''-----.'''++=+++=+++++===----==+++==++'+.''++'+'=1ZAAAA.---'''----A''+
+ ''...........CCCCCCCCC.....C..CCC.CC..CCCCCCCCCCCCCCCCCCCCCCCC.....'+++CCCCCCCCCCCCCCCCCCCCCCCCCCCC+C'++CC+C+C      '...CCC...C ++C
+ ++'''''''''''BBBBBBBBB'''''B''BBB'BB''BBBBBBBBBBBBBBBBBBBBBBBB'''''+CCC                            C +CC  C C       +'''BBB'''  CC
+ CCXXXXXXXXXXXHHHHHHHHHXXXXXHXXHHHXHHXXHHHHHHHHHHHHHHHHHHHHHHHHXXXXXC                                 C              CXXXHHHXXX
+   CCCCCCCCCCCXXXXXXXXXCCCCCXCCXXXCXXCCXXXXXXXXXXXXXXXXXXXXXXXXCCCCC                                                  CCCXXXCCC
*'.-----------'''''''''..--------'--'''-'-'''''''''''''''''''''''''''''''----------..''.'''+''''''+-A=''+MXZ)-+1ZZZXXMM-=+--''''''++'
++'...........CCCCCCCCC''........C..CCC.C.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC..........''++'+++C++++++CC C++C              CCC..CCCCC+CC+
+C+'''''''''''BBBBBBBBB++''''''''B''BBB'B'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB''''''''''++CC+CCC CCCCCC    CC                  ''BBBBBC  C
+ CXXXXXXXXXXXHHHHHHHHHCCXXXXXXXXHXXHHHXHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXXXXXXXXXCC  C                                  XXHHHHH
+  CCCCCCCCCCCXXXXXXXXX  CCCCCCCCXCCXXXCXCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCCCCCCCCC                                       CCXXXXX
*..---------''''''''''-..--------''--''''-'''''''''''''''''''''''''''''''''''''''''''-'''''''''''--.'---.+MAAXAXX11)1+++1X+'.-''-'+++
+''.........CCCCCCCCCC.''........CC..CCCC.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.CCCCCCCCCCC..'+...'C                C+'.CC.+CCC
+++'''''''''BBBBBBBBBB'++''''''''BB''BBBB'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'BBBBBBBBBBB''+C'''+                  C+'BB'C
+CCXXXXXXXXXHHHHHHHHHHXCCXXXXXXXXHHXXHHHHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXHHHHHHHHHHHXXC XXXC                   CXHHX
+  CCCCCCCCCXXXXXXXXXXC  CCCCCCCCXXCCXXXXCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXCC  CCC                     CXXC
*..--------''''''''''--------------------'''''-'-'''-'-'''''''-''''''''''''''''''''''-''''''''''''-'''''''----.++++=+=-==++=-=.-.'+++
+''........CCCCCCCCCC....................CCCCC.C.CCC.C.CCCCCCC.CCCCCCCCCCCCCCCCCCCCCC.CCCCCCCCCCCC.CCCCCCC....'CCCCCCCCCCCCCCC'.'+CCC
+++''''''''BBBBBBBBBB''''''''''''''''''''BBBBB'B'BBB'B'BBBBBBB'BBBBBBBBBBBBBBBBBBBBBB'BBBBBBBBBBBB'BBBBBBB''''+               +'+C
+CCXXXXXXXXHHHHHHHHHHXXXXXXXXXXXXXXXXXXXXHHHHHXHXHHHXHXHHHHHHHXHHHHHHHHHHHHHHHHHHHHHHXHHHHHHHHHHHHXHHHHHHHXXXXC               CXC
+  CCCCCCCCXXXXXXXXXXCCCCCCCCCCCCCCCCCCCCXXXXXCXCXXXCXCXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXCXXXXXXXCCCC                 C
*-.-------''''''-''------'------------'-'-''''''''''''''--''''''''''''''''''''''''''''''''''''''''''------.''''+++=+======++.'+--'+'+
+.'.......CCCCCC.CC......C............C.C.CCCCCCCCCCCCCC..CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC......'++++CCCCCCCCCCCCC'+C..+C+C
+'+'''''''BBBBBB'BB''''''B''''''''''''B'B'BBBBBBBBBBBBBB''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB''''''+CCCC             +C ''C C
+XCXXXXXXXHHHHHHXHHXXXXXXHXXXXXXXXXXXXHXHXHHHHHHHHHHHHHHXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXXXXXC                 C  XX
+C CCCCCCCXXXXXXCXXCCCCCCXCCCCCCCCCCCCXCXCXXXXXXXXXXXXXXCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCCCCC                     CC
*--------''''''''--------------.------'--'''''''''-'''''''''''''''''''''-'''''''''''''''''''''---.-'+MZXXMM---============+'''-''.'++
+........CCCCCCCC..............'......C..CCCCCCCCC.CCCCCCCCCCCCCCCCCCCCC.CCCCCCCCCCCCCCCCCCCCC...'.+C      CCCCCCCCCCCCCCCC+CC.CC'+CC
+''''''''BBBBBBBB''''''''''''''+''''''B''BBBBBBBBB'BBBBBBBBBBBBBBBBBBBBB'BBBBBBBBBBBBBBBBBBBBB'''+'C                       CBB'BB+C
+XXXXXXXXHHHHHHHHXXXXXXXXXXXXXXCXXXXXXHXXHHHHHHHHHXHHHHHHHHHHHHHHHHHHHHHXHHHHHHHHHHHHHHHHHHHHHXXXCX                         HHXHHC
+CCCCCCCCXXXXXXXXCCCCCCCCCCCCCC CCCCCCXCCXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXCCC C                         XXCXX
*..----'''''''''------.--------------''--'''''''''''-''''''''''''''''''''''''-'''-''''''''''-.=+''.+-Z  ---+=-+++1ZZXXXAAAA+------+++
+''....CCCCCCCCC......'..............CC..CCCCCCCCCCC.CCCCCCCCCCCCCCCCCCCCCCCC.CCC.CCCCCCCCCC.'CC++'CC                      C......CCC
+++''''BBBBBBBBB''''''+''''''''''''''BB''BBBBBBBBBBB'BBBBBBBBBBBBBBBBBBBBBBBB'BBB'BBBBBBBBBB'+  CC+                         ''''''
+CCXXXXHHHHHHHHHXXXXXXCXXXXXXXXXXXXXXHHXXHHHHHHHHHHHXHHHHHHHHHHHHHHHHHHHHHHHHXHHHXHHHHHHHHHHXC    C                         XXXXXX
+  CCCCXXXXXXXXXCCCCCC CCCCCCCCCCCCCCXXCCXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXCXXXCXXXXXXXXXXC                               CCCCCC
*..---''''''''--''------'---------------'''''''''''-'-''''''--'--''--'--''-'-''-'-''''''---.=+---..-AZ==-  --    --         -- 1MA+'+
+''...CCCCCCCC..CC......C...............CCCCCCCCCCC.C.CCCCCC..C..CC..C..CC.C.CC.C.CCCCCC...'CC...''C                              C+C
+++'''BBBBBBBB''BB''''''B'''''''''''''''BBBBBBBBBBB'B'BBBBBB''B''BB''B''BB'B'BB'B'BBBBBB'''+  '''++                                C
+CCXXXHHHHHHHHXXHHXXXXXXHXXXXXXXXXXXXXXXHHHHHHHHHHHXHXHHHHHHXXHXXHHXXHXXHHXHXHHXHXHHHHHHXXXC  XXXCC
+  CCCXXXXXXXXCCXXCCCCCCXCCCCCCCCCCCCCCCXXXXXXXXXXXCXCXXXXXXCCXCCXXCCXCCXXCXCXXCXCXXXXXXCCC   CCC
*----''''''''---------.--'---------------'-'-'-''''-'''''''''''''''-''''''''---..''--.''++'.'.-.'=-=AA1=- -------=---=          +1='+
+....CCCCCCCC.........'..C...............C.C.C.CCCC.CCCCCCCCCCCCCCC.CCCCCCCC...''CC..'++CC+'+'.'+CCC                              C+C
+''''BBBBBBBB'''''''''+''B'''''''''''''''B'B'B'BBBB'BBBBBBBBBBBBBBB'BBBBBBBB'''++BB''+CC  C+C+'+C                                  C
+XXXXHHHHHHHHXXXXXXXXXCXXHXXXXXXXXXXXXXXXHXHXHXHHHHXHHHHHHHHHHHHHHHXHHHHHHHHXXXCCHHXXC     C CXC
+CCCCXXXXXXXXCCCCCCCCC CCXCCCCCCCCCCCCCCCXCXCXCXXXXCXXXXXXXXXXXXXXXCXXXXXXXXCCC  XXCC         C
*----'''''''----------.-----------'---------''''-''''''''''''---'''--''-----''+-=.'+++-='--''.'+===+=MX==-+--  =--===-=-          M'+
+....CCCCCCC..........'...........C.........CCCC.CCCCCCCCCCCC...CCC..CC.....++CCC'+CCCCC+..++'+CCCCCC                              +C
+''''BBBBBBB''''''''''+'''''''''''B'''''''''BBBB'BBBBBBBBBBBB'''BBB''BB'''''CC   +C     C''CC+C                                    C
+XXXXHHHHHHHXXXXXXXXXXCXXXXXXXXXXXHXXXXXXXXXHHHHXHHHHHHHHHHHHXXXHHHXXHHXXXXX     C       XX  C
+CCCCXXXXXXXCCCCCCCCCC CCCCCCCCCCCXCCCCCCCCCXXXXCXXXXXXXXXXXXCCCXXXCCXXCCCCC             CC
*---''''''----------------------'-'---------''''''''''-''''''''--''------..'=-AAM=..------+..-.-++=+=-A+=-==---==- -+-=   - -   - M''
+...CCCCCC......................C.C.........CCCCCCCCCC.CCCCCCCC..CC......''+CC   C''......C''.'CCCCCCC                             ++
+'''BBBBBB''''''''''''''''''''''B'B'''''''''BBBBBBBBBB'BBBBBBBB''BB''''''++C      ++'''''' ++'+                                    CC
+XXXHHHHHHXXXXXXXXXXXXXXXXXXXXXXHXHXXXXXXXXXHHHHHHHHHHXHHHHHHHHXXHHXXXXXXCC       CCXXXXXX CCXC
+CCCXXXXXXCCCCCCCCCCCCCCCCCCCCCCXCXCCCCCCCCCXXXXXXXXXXCXXXXXXXXCCXXCCCCCC           CCCCCC   C
*--''''''----------------.-----------------------'-'--''---''-'''--'--.'.==-AMA+----'--'--..-.+-'-===MX+=-=+-)=+==---=+   - -     M''
+..CCCCCC................'.......................C.C..CC...CC.CCC..C..'+'CCC   C....C..C..''.'CC+CCCC                              ++
+''BBBBBB''''''''''''''''+'''''''''''''''''''''''B'B''BB'''BB'BBB''B''+C+       ''''B''B''++'+  C                                  CC
+XXHHHHHHXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXHXHXXHHXXXHHXHHHXXHXXC C       XXXXHXXHXXCCXC
+CCXXXXXXCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCXCXCCXXCCCXXCXXXCCXCC          CCCCXCCXCC  C
*-''''''------------------------'----------------'-----''-'''--'----.-'-==M='--'''''-----''-'.+'+-====A)-=======--= ===  ==--     -''
+.CCCCCC........................C................C.....CC.CCC..C....'.+CCC C+..CCCCC.....CC.+'C+CCCCCC                            C++
+'BBBBBB''''''''''''''''''''''''B''''''''''''''''B'''''BB'BBB''B''''+'C     C''BBBBB'''''BB'C+ C                                   CC
+XHHHHHHXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXHXXXXXHHXHHHXXHXXXXCX       XXHHHHHXXXXXHHX C
+CXXXXXXCCCCCCCCCCCCCCCCCCCCCCCCXCCCCCCCCCCCCCCCCXCCCCCXXCXXXCCXCCCC C       CCXXXXXCCCCCXXC
*''''''-------------------------------'--------.--------'------'--..=+--''.-'''''''''-''---'-..+++==---1=+=++==-  --=-= -=- --    -''
+CCCCCC...............................C........'........C......C..''CCCC++'.CCCCCCCCC.CC...C.''CCCCCCCC                           C++
+BBBBBB'''''''''''''''''''''''''''''''B''''''''+''''''''B''''''B''++    CC+'BBBBBBBBB'BB'''B'++                                    CC
+HHHHHHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXCXXXXXXXXHXXXXXXHXXCC      CXHHHHHHHHHXHHXXXHXCC
+XXXXXXCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCXCCCCCCCC CCCCCCCCXCCCCCCXCC         CXXXXXXXXXCXXCCCXC
*'''''-----.--------------.--------'--'''-'''-----------''------+'=M-'--''--'''''-'''''''-'''--..===MMMX===)=-=  -+==-==--=--=    1''
+CCCCC.....'..............'........C..CCC.CCC...........CC......C+C C+..CC..CCCCC.CCCCCCC.CCC..''CCC                               ++
+BBBBB'''''+''''''''''''''+''''''''B''BBB'BBB'''''''''''BB'''''' C   C''BB''BBBBB'BBBBBBB'BBB''++                                  CC
+HHHHHXXXXXCXXXXXXXXXXXXXXCXXXXXXXXHXXHHHXHHHXXXXXXXXXXXHHXXXXXX      XXHHXXHHHHHXHHHHHHHXHHHXXCC
+XXXXXCCCCC CCCCCCCCCCCCCC CCCCCCCCXCCXXXCXXXCCCCCCCCCCCXXCCCCCC      CCXXCCXXXXXCXXXXXXXCXXXCC
*'''''----------------.----------'--------''''''-----------'-.+MX-.--''''''--''''''--''''-'-'-----.+MA-A)- =+==-=---=------       -''
+CCCCC................'..........C........CCCCCC...........C.'C  C'..CCCCCC..CCCCCC..CCCC.C.C.....'C  C                            ++
+BBBBB''''''''''''''''+''''''''''B''''''''BBBBBB'''''''''''B'+    +''BBBBBB''BBBBBB''BBBB'B'B'''''+                                CC
+HHHHHXXXXXXXXXXXXXXXXCXXXXXXXXXXHXXXXXXXXHHHHHHXXXXXXXXXXXHXC    CXXHHHHHHXXHHHHHHXXHHHHXHXHXXXXXC
+XXXXXCCCCCCCCCCCCCCCC CCCCCCCCCCXCCCCCCCCXXXXXXCCCCCCCCCCCXC      CCXXXXXXCCXXXXXXCCXXXXCXCXCCCCC
*'''--'.---..--.--------------------'--'--''-'-'---------..'+MA=''''''''''''--'-''''-''''''''-''---''A-X)  +)==-=-+===---=        Z''
+CCC..+'...''..'....................C..C..CC.C.C.........''+C  C+CCCCCCCCCCC..C.CCCC.CCCCCCCC.CC...++ C                            ++
+BBB''C+'''++''+''''''''''''''''''''B''B''BB'B'B'''''''''++C    CBBBBBBBBBBB''B'BBBB'BBBBBBBB'BB'''CC                              CC
+HHHXX CXXXCCXXCXXXXXXXXXXXXXXXXXXXXHXXHXXHHXHXHXXXXXXXXXCC      HHHHHHHHHHHXXHXHHHHXHHHHHHHHXHHXXX
+XXXCC  CCC  CC CCCCCCCCCCCCCCCCCCCCXCCXCCXXCXCXCCCCCCCCC        XXXXXXXXXXXCCXCXXXXCXXXXXXXXCXXCCC
*''-.-.----.------------------------'----'''-'-'''-------=MM-+-'''''-''''''''---'''''''''''''''''-----=A1  -+===----=-=----       =''
+CC.'.'....'........................C....CCC.C.CCC.......C  CC.CCCCC.CCCCCCCC...CCCCCCCCCCCCCCCCC....CC                            ++
+BB'+'+''''+''''''''''''''''''''''''B''''BBB'B'BBB'''''''     'BBBBB'BBBBBBBB'''BBBBBBBBBBBBBBBBB''''                              CC
+HHXCXCXXXXCXXXXXXXXXXXXXXXXXXXXXXXXHXXXXHHHXHXHHHXXXXXXX     XHHHHHXHHHHHHHHXXXHHHHHHHHHHHHHHHHHXXXX
+XXC C CCCC CCCCCCCCCCCCCCCCCCCCCCCCXCCCCXXXCXCXXXCCCCCCC     CXXXXXCXXXXXXXXCCCXXXXXXXXXXXXXXXXXCCCC
*'--'-.-..-------.---.--------------------''-----'--'+=-Z+-'---'''''-'''''''''--''''''''''''''''''''-=+MZ--======--=-==--==-     --+'
+C..+.'.''.......'...'....................CC.....C..+CCC  C+...CCCCC.CCCCCCCCC..CCCCCCCCCCCCCCCCCCCC.CC                            C+
+B''C'+'++'''''''+'''+''''''''''''''''''''BB'''''B''C      C'''BBBBB'BBBBBBBBB''BBBBBBBBBBBBBBBBBBBB'                               C
+HXX XCXCCXXXXXXXCXXXCXXXXXXXXXXXXXXXXXXXXHHXXXXXHXX        XXXHHHHHXHHHHHHHHHXXHHHHHHHHHHHHHHHHHHHHX
+XCC C C  CCCCCCC CCC CCCCCCCCCCCCCCCCCCCCXXCCCCCXCC        CCCXXXXXCXXXXXXXXXCCXXXXXXXXXXXXXXXXXXXXC
*-.-.------'-------------------------..-....'-1=-A=A      =-''-'''''---'''''''----'-''-'''''''''''''-++AZ -==--= -=  -= =---      --+
+.'.'......+.........................''.''''+C    C       C.CC.CCCCC...CCCCCCC....C.CC.CCCCCCCCCCCCC.CC                            CC
+'+'+''''''C'''''''''''''''''''''''''++'++++C              'BB'BBBBB'''BBBBBBB''''B'BB'BBBBBBBBBBBBB'
+XCXCXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXCCXCCCC               XHHXHHHHHXXXHHHHHHHXXXXHXHHXHHHHHHHHHHHHHX
+C C CCCCCC CCCCCCCCCCCCCCCCCCCCCCCCC  C                   CXXCXXXXXCCCXXXXXXXCCCCXCXXCXXXXXXXXXXXXXC
*.-.-------.----------.--.--..'++'+'.+=+-..+Z     +=-=    1--'-'-'''-'-''''''''-'-''''''''''''''''''.--MA=++==----==- -  +=     =--M'
+'.'.......'..........'..'..''+CC+C+'CCCC''C       CC      ..C.C.CCC.C.CCCCCCCC.C.CCCCCCCCCCCCCCCCCC'.C                             +
++'+'''''''+''''''''''+''+''++C  C C+    ++                ''B'B'BBB'B'BBBBBBBB'B'BBBBBBBBBBBBBBBBBB+'                              C
+CXCXXXXXXXCXXXXXXXXXXCXXCXXCC      C    CC                XXHXHXHHHXHXHHHHHHHHXHXHHHHHHHHHHHHHHHHHHCX
+ C CCCCCCC CCCCCCCCCC CC CC                               CCXCXCXXXCXCXXXXXXXXCXCXXXXXXXXXXXXXXXXXX C
*--.--.------.---------..-.+=+===''.-.'--.M+       -Z-A=   +''''''''''-''''''''-'''-''''''''''''''''--'-A+=++ -=-==-     ==-    =- 1'
+..'..'......'.........''.'CCCCCC++'.'+..'           C     CCCCCCCCCCC.CCCCCCCC.CCC.CCCCCCCCCCCCCCCC..+C                            +
+''+''+''''''+'''''''''++'+      CC+'+C''+                  BBBBBBBBBB'BBBBBBBB'BBB'BBBBBBBBBBBBBBBB''C                             C
+XXCXXCXXXXXXCXXXXXXXXXCCXC        CXC XXC                  HHHHHHHHHHXHHHHHHHHXHHHXHHHHHHHHHHHHHHHHXX
+CC CC CCCCCC CCCCCCCCC  C          C  CC                   XXXXXXXXXXCXXXXXXXXCXXXCXXXXXXXXXXXXXXXXCC
*-..-----.---.----------..'++'..---'----')           -A+X  1''''-'''''''-''''''''-'-'''''''''''''''-...+A+-=+ -==---    -=--   --- =+
+.''.....'...'..........''+CC+''...C....+              C    CCCC.CCCCCCC.CCCCCCCC.C.CCCCCCCCCCCCCCC.'''C                            C
+'++'''''+'''+''''''''''++C  C++'''B''''C                   BBBB'BBBBBBB'BBBBBBBB'B'BBBBBBBBBBBBBBB'+++
+XCCXXXXXCXXXCXXXXXXXXXXCC    CCXXXHXXXX                    HHHHXHHHHHHHXHHHHHHHHXHXHHHHHHHHHHHHHHHXCCC
+C  CCCCC CCC CCCCCCCCCC        CCCXCCCC                    XXXXCXXXXXXXCXXXXXXXXCXCXXXXXXXXXXXXXXXC
*-.--------..---------.-...-----------+Z-              ++=- .''-''-'--'---''''''''''''-''''''''''-+-..'-M=-=+=-==+-= -   =-   -     +
+.'........''.........'.'''...........C                 CC  'CC.CC.C..C...CCCCCCCCCCCC.CCCCCCCCCC.C.''+C                            C
+'+''''''''++'''''''''+'+++'''''''''''                      +BB'BB'B''B'''BBBBBBBBBBBB'BBBBBBBBBB' '++C
+XCXXXXXXXXCCXXXXXXXXXCXCCCXXXXXXXXXXX                      CHHXHHXHXXHXXXHHHHHHHHHHHHXHHHHHHHHHHX XCC
+C CCCCCCCC  CCCCCCCCC C   CCCCCCCCCCC                       XXCXXCXCCXCCCXXXXXXXXXXXXCXXXXXXXXXXC C
*-.---.-----.---.----------------'--'X+                  )MM--'-''''-'-''''''''''-''-'-'''''''''''-'--'-M1====-====+++       --     -
+.'...'.....'...'................C..+                       C.C.CCCC.C.CCCCCCCCCC.CC.C.CCCCCCCCCCC.+..+C                            C
+'+'''+'''''+'''+''''''''''''''''B''C                        'B'BBBB'B'BBBBBBBBBB'BB'B'BBBBBBBBBBB'C''C
+XCXXXCXXXXXCXXXCXXXXXXXXXXXXXXXXHXX                         XHXHHHHXHXHHHHHHHHHHXHHXHXHHHHHHHHHHHX XX
+C CCC CCCCC CCC CCCCCCCCCCCCCCCCXCC                         CXCXXXXCXCXXXXXXXXXXCXXCXCXXXXXXXXXXXC CC
*---------------------------------'X1    =                 +Z+-''''--''-''''''''''-'-''''''''''''''--.+=-1-=--==-+=-+==     --      Z
+.................................+                          C.CCCC..CC.CCCCCCCCCC.C.CCCCCCCCCCCCCC..'CCC
+'''''''''''''''''''''''''''''''''C                           'BBBB''BB'BBBBBBBBBB'B'BBBBBBBBBBBBBB''+
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                            XHHHHXXHHXHHHHHHHHHHXHXHHHHHHHHHHHHHHXXC
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                            CXXXXCCXXCXXXXXXXXXXCXCXXXXXXXXXXXXXXCC
*----.---------------------------+1     ---  - -             =-'''''--''''''''''''-'''''''''''''''.'.-+=M)-+=====+-====-  ===       +
+....'...........................C                            .CCCCC..CCCCCCCCCCCC.CCCCCCCCCCCCCCC'C'.CC
+''''+'''''''''''''''''''''''''''                             'BBBBB''BBBBBBBBBBBB'BBBBBBBBBBBBBBB+B+'
+XXXXCXXXXXXXXXXXXXXXXXXXXXXXXXXX                             XHHHHHXXHHHHHHHHHHHHXHHHHHHHHHHHHHHHCHCX
+CCCC CCCCCCCCCCCCCCCCCCCCCCCCCCC                             CXXXXXCCXXXXXXXXXXXXCXXXXXXXXXXXXXXX X C
*----.---------------------------= - -- --    --              Z-'''-----'''''''''''''''-''-''--'''''.'=-A+-+=== == ++==  =+=---   =--
+....'..........................C                              .CCC.....CCCCCCCCCCCCCCC.CC.CC..CCCCC'+CC
+''''+''''''''''''''''''''''''''                               'BBB'''''BBBBBBBBBBBBBBB'BB'BB''BBBBB+C
+XXXXCXXXXXXXXXXXXXXXXXXXXXXXXXX                               XHHHXXXXXHHHHHHHHHHHHHHHXHHXHHXXHHHHHC
+CCCC CCCCCCCCCCCCCCCCCCCCCCCCCC                               CXXXCCCCCXXXXXXXXXXXXXXXCXXCXXCCXXXXX
*----------------------------.+A- ----=----   =               --'''''-'''--''''''''''''-''-'''''''-'-'=-M1  =++==+==+=-=-=+==-=    -
+............................'C                                .CCCCC.CCC..CCCCCCCCCCCC.CC.CCCCCCC.C.+CC
+''''''''''''''''''''''''''''+                                 'BBBBB'BBB''BBBBBBBBBBBB'BB'BBBBBBB'B'C
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXC                                 XHHHHHXHHHXXHHHHHHHHHHHHXHHXHHHHHHHXHX
+CCCCCCCCCCCCCCCCCCCCCCCCCCCC                                  CXXXXXCXXXCCXXXXXXXXXXXXCXXCXXXXXXXCXC
*---------------------------.A+- --- -------                +-.--'''''-'''''--''''''-''''--'''''''.--=--A1  =+==-+=++===++=----    --
+...........................'                                C'..CCCCC.CCCCC..CCCCCC.CCCC..CCCCCCC'..CCC
+'''''''''''''''''''''''''''+                                 +''BBBBB'BBBBB''BBBBBB'BBBB''BBBBBBB+''
+XXXXXXXXXXXXXXXXXXXXXXXXXXXC                                 CXXHHHHHXHHHHHXXHHHHHHXHHHHXXHHHHHHHCXX
+CCCCCCCCCCCCCCCCCCCCCCCCCCC                                   CCXXXXXCXXXXXCCXXXXXXCXXXXCCXXXXXXX CC
*--------------------'------Z= -=--- - -                =)X=-'''-'''''''''--'''''''''''''''''''--'-.-'--Z=  -==+=+-+=-==)=+=-+=-    -
+....................C......                               C.CCC.CCCCCCCCC..CCCCCCCCCCCCCCCCCCC..C.'.+CC
+''''''''''''''''''''B''''''                                'BBB'BBBBBBBBB''BBBBBBBBBBBBBBBBBBB''B'+'C
+XXXXXXXXXXXXXXXXXXXXHXXXXXX                                XHHHXHHHHHHHHHXXHHHHHHHHHHHHHHHHHHHXXHXCX
+CCCCCCCCCCCCCCCCCCCCXCCCCCC                                CXXXCXXXXXXXXXCCXXXXXXXXXXXXXXXXXXXCCXC C
*--.-.----------------''-.++-XZZ11Z+  --             -Z'-'''''''--''''''--'-'''''''''-'''''''''''-.-..=-X=  -====+)=---==++----
+..'.'................CC.'CCC                          +.CCCCCCC..CCCCCC..C.CCCCCCCCC.CCCCCCCCCCC.'.''CC
+''+'+''''''''''''''''BB'+                             C'BBBBBBB''BBBBBB''B'BBBBBBBBB'BBBBBBBBBBB'+'++
+XXCXCXXXXXXXXXXXXXXXXHHXC                              XHHHHHHHXXHHHHHHXXHXHHHHHHHHHXHHHHHHHHHHHXCXCC
+CC C CCCCCCCCCCCCCCCCXXC                               CXXXXXXXCCXXXXXXCCXCXXXXXXXXXCXXXXXXXXXXXC C
*---------.------'------'==''AZXXXAMM+             =M----------'''-'''''''''''''''''''''''''''''''---.=-M1- - ====)+-=====-==- -  -
+.........'......C......+CC++                        ..........CCC.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...'CC
+'''''''''+''''''B''''''C  CC                        ''''''''''BBB'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'''+
+XXXXXXXXXCXXXXXXHXXXXXX                             XXXXXXXXXXHHHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXXC
+CCCCCCCCC CCCCCCXCCCCCC                             CCCCCCCCCCXXXCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCC
*--------------''''----.'+..+AZZXXM'''M-     --+ZXX=----'---'--'''--'''''''''-'''''''''--''''-''''''''=-A1 ---=-=+=+=+=-======---==-
+..............CCCC....'+C''C      +++             C....+...C..CCC..CCCCCCCCC.CCCCCCCCC..CCCC.CCCCCC++CC
+''''''''''''''BBBB''''+C ++       CCC              ''''C'''B''BBB''BBBBBBBBB'BBBBBBBBB''BBBB'BBBBBBCC
+XXXXXXXXXXXXXXHHHHXXXXC  CC                        XXXX XXXHXXHHHXXHHHHHHHHHXHHHHHHHHHXXHHHHXHHHHHH
+CCCCCCCCCCCCCCXXXXCCCC                             CCCC CCCXCCXXXCCXXXXXXXXXCXXXXXXXXXCCXXXXCXXXXXX
*-----------'-'''''--...--.--'-MMXM'--.M1ZZZAM+'.-.---.=-'----.--'--''''''''''''''''''''''''''''''--+'--M= --=======++=-=+=+++++++--
+...........C.CCCCC..'''..'..+C    +..'       C+'.'...'CC+....'..C..CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC..C+CC
+'''''''''''B'BBBBB''+++''+''C     C''+        C+'+'''+  C''''+''B''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'' C
+XXXXXXXXXXXHXHHHHHXXCCCXXCXX       XXC         CXCXXXC   XXXXCXXHXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXX
+CCCCCCCCCCCXCXXXXXCC   CC CC       CC           C CCC    CCCC CCXCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC
*--------'-''-''----''.+..'-'---'-..-..+=++++.-.--..----'-----..-''--''''''''''--''''''-.''''''''''.-.=MA1 --+-= -==-+)++-=+++++)=-
+........C.CC.CC....++'C''+.C...C.''.''CCCCCC'.'..''....+.....''.CC..CCCCCCCCCC..CCCCCC.'CCCCCCCCCC'.'C
+''''''''B'BB'BB''''CC+ ++C'B'''B'++'++      +'+''++''''C'''''++'BB''BBBBBBBBBB''BBBBBB'+BBBBBBBBBB+'+
+XXXXXXXXHXHHXHHXXXX  C CC XHXXXHXCCXCC      CXCXXCCXXXX XXXXXCCXHHXXHHHHHHHHHHXXHHHHHHXCHHHHHHHHHHCXC
+CCCCCCCCXCXXCXXCCCC       CXCCCXC  C         C CC  CCCC CCCCC  CXXCCXXXXXXXXXXCCXXXXXXC XXXXXXXXXX C
*----''''''''''---.'++'..++----''----.''='++'''.-.+'----.------.-''---''''''''''-'''''''''''''''''''.M.=A1-===+===++-==+=++=+++)+=+
+....CCCCCCCCCC...'+CC+''CC....CC....'++C+CC+++'.'C+....'......'.CC...CCCCCCCCCC.CCCCCCCCCCCCCCCCCCC' 'C
+''''BBBBBBBBBB'''+C  C++  ''''BB''''+CC C  CCC+'+ C''''+''''''+'BB'''BBBBBBBBBB'BBBBBBBBBBBBBBBBBBB+ +
+XXXXHHHHHHHHHHXXXC    CC  XXXXHHXXXXC         CXC  XXXXCXXXXXXCXHHXXXHHHHHHHHHHXHHHHHHHHHHHHHHHHHHHC C
+CCCCXXXXXXXXXXCCC         CCCCXXCCCC           C   CCCC CCCCCC CXXCCCXXXXXXXXXXCXXXXXXXXXXXXXXXXXXX
*---''''''''''---.'+''..''+.--'''''---..+++.....-''------...------''-'''''''''''''''''''-''''''''-'.+==MM) =+=-======-===-=+++=+==+
+...CCCCCCCCCC...'+C++''++C'..CCCCC...''CCC'''''.++......'''......CC.CCCCCCCCCCCCCCCCCCC.CCCCCCCC.C'CCC
+'''BBBBBBBBBB'''+C CC++CC +''BBBBB'''++   +++++'CC''''''+++''''''BB'BBBBBBBBBBBBBBBBBBB'BBBBBBBB'B+
+XXXHHHHHHHHHHXXXC    CC   CXXHHHHHXXXCC   CCCCCX  XXXXXXCCCXXXXXXHHXHHHHHHHHHHHHHHHHHHHXHHHHHHHHXHC
+CCCXXXXXXXXXXCCC           CCXXXXXCCC          C  CCCCCC   CCCCCCXXCXXXXXXXXXXXXXXXXXXXCXXXXXXXXCX
*''''''''''----.--..'---.''.--'''------'=+.-..'....------.....--.-'''-'''''''''''''''''''''-'''''.-.''+-A1 -+==-=====--==-=++===-=+-
+CCCCCCCCCC....'..''+...'++'..CCC......+CC'.''+''''......'''''..'.CCC.CCCCCCCCCCCCCCCCCCCCC.CCCCC'.'++CC
+BBBBBBBBBB''''+''++C'''+CC+''BBB''''''C  +'++C++++''''''+++++''+'BBB'BBBBBBBBBBBBBBBBBBBBB'BBBBB+'+CC
+HHHHHHHHHHXXXXCXXCC XXXC  CXXHHHXXXXXX   CXCC CCCCXXXXXXCCCCCXXCXHHHXHHHHHHHHHHHHHHHHHHHHHXHHHHHCXC
+XXXXXXXXXXCCCC CC   CCC    CCXXXCCCCCC    C       CCCCCC     CC CXXXCXXXXXXXXXXXXXXXXXXXXXCXXXXX C
*'''''''''----------.---....--''--..-.'++---.-''.--------........--'--'''''''''''''''''''''''''''--'--+MA)=--= -==+-=--====-+=--===-
+CCCCCCCCC..........'...''''..CC..''.'+CC...'.++'........''''''''..C..CCCCCCCCCCCCCCCCCCCCCCCCCCC..C..C
+BBBBBBBBB''''''''''+'''++++''BB''++'+C  '''+'CC+''''''''++++++++''B''BBBBBBBBBBBBBBBBBBBBBBBBBBB''B''
+HHHHHHHHHXXXXXXXXXXCXXXCCCCXXHHXXCCXC   XXXCX  CXXXXXXXXCCCCCCCCXXHXXHHHHHHHHHHHHHHHHHHHHHHHHHHHXXHXX
+XXXXXXXXXCCCCCCCCCC CCC    CCXXCC  C    CCC C   CCCCCCCC        CCXCCXXXXXXXXXXXXXXXXXXXXXXXXXXXCCXCC
*'''''''----.----------'------'''---.-'+.----''...--------...-...---''''''''''''''''''''''''''''''''..'1 1-------+===---==+=  =----
+CCCCCCC....'..........C......CCC...'.+C'....++'''........'''.'''...CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC''+
+BBBBBBB''''+''''''''''B''''''BBB'''+'C +''''CC+++''''''''+++'+++'''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB++C
+HHHHHHHXXXXCXXXXXXXXXXHXXXXXXHHHXXXCX  CXXXX  CCCXXXXXXXXCCCXCCCXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHCC
+XXXXXXXCCCC CCCCCCCCCCXCCCCCCXXXCCC C   CCCC     CCCCCCCC   C   CCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
*-'''-''-.--'''--------------.-''---..''-----..'''---------..-...-----'''''''''''''''''''''''''''''--.+-MZ- -= -====---=+==---=-    -
+.CCC.CC.'..CCC..............'.CC...''++.....''+++.........''.'''.....CCCCCCCCCCCCCCCCCCCCCCCCCCCCC..'CC
+'BBB'BB'+''BBB''''''''''''''+'BB'''++CC'''''++CCC'''''''''++'+++'''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBB''+
+XHHHXHHXCXXHHHXXXXXXXXXXXXXXCXHHXXXCC  XXXXXCC   XXXXXXXXXCCXCCCXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXC
+CXXXCXXC CCXXXCCCCCCCCCCCCCC CXXCCC    CCCCC     CCCCCCCCC  C   CCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC
*--'----.---''''----------'--'-''-'-'.------..''..---------...----.-----'''''''''''''''''''''''''''''.-=MX-   ===+======+==--==    ==
+..C....'...CCCC..........C..+.CC.C.+'......''++''.........'''....'.....CCCCCCCCCCCCCCCCCCCCCCCCCCCCC'.C
+''B''''+'''BBBB''''''''''B''C'BB'B'C+''''''++CC++'''''''''+++''''+'''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBB+'
+XXHXXXXCXXXHHHHXXXXXXXXXXHXX XHHXHX CXXXXXXCC  CCXXXXXXXXXCCCXXXXCXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHCX
+CCXCCCC CCCXXXXCCCCCCCCCCXCC CXXCXC  CCCCCC      CCCCCCCCC   CCCC CCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C
*-'--''=+----'''----------'-'..--''-..------.''..--.--------...--.-.-----'''''''''''''''''''''''''''--.-MZ=     -+=====--===-=+  ==--
+.+..++CC....CCC..........C.C''..CC.''......'++''..'........'''..'.'.....CCCCCCCCCCCCCCCCCCCCCCCCCCC..'C
+'C''CC  ''''BBB''''''''''B'B++''BB'++''''''+CC++''+''''''''+++''+'+'''''BBBBBBBBBBBBBBBBBBBBBBBBBBB''+
+X XX    XXXXHHHXXXXXXXXXXHXHCCXXHHXCCXXXXXXC  CCXXCXXXXXXXXCCCXXCXCXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHXXC
+C CC    CCCCXXXCCCCCCCCCCXCX  CCXXC  CCCCCC     CC CCCCCCCC   CC C CCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXCC
*----M-------'''''-''----'-'--..----..-.---.'....------.----.-.----------'''''''''''''''''''''''''''--='M1=  -- -+=- -==  ====++)Z1)1
+...C C......CCCCC.CC....C.C..''....''.'...'+''''......'....'.'..........CCCCCCCCCCC+CCCCCCCCCCCCCCC..C+
+'''   ''''''BBBBB'BB''''B'B''++''''++'+'''+C++++''''''+''''+'+''''''''''BBBBBBBBBBBCBBBBBBBBBBBBBBB'' C
+XXX   XXXXXXHHHHHXHHXXXXHXHXXCCXXXXCCXCXXXC CCCCXXXXXXCXXXXCXCXXXXXXXXXXHHHHHHHHHHH HHHHHHHHHHHHHHHXX
+CCC   CCCCCCXXXXXCXXCCCCXCXCC  CCCC  C CCC      CCCCCC CCCC C CCCCCCCCCCXXXXXXXXXXX XXXXXXXXXXXXXXXCC
*+'-M'-------'-''''-'-------''-.----.------....-...---------...-----------'''''''''-A'''''''''''''''--.+M1=   -  +-   -==+ZZX1))XM--'
+C+C +.......C.CCCC.C.......CC.'....'......''''.'''.........'''...........CCCCCCCCCC CCCCCCCCCCCCCCC..'C                          CC+
+ C  C'''''''B'BBBB'B'''''''BB'+''''+''''''++++'+++'''''''''+++'''''''''''BBBBBBBBB  BBBBBBBBBBBBBBB''+                             C
+     XXXXXXXHXHHHHXHXXXXXXXHHXCXXXXCXXXXXXCCCCXCCCXXXXXXXXXCCCXXXXXXXXXXXHHHHHHHHH  HHHHHHHHHHHHHHHXXC
+     CCCCCCCXCXXXXCXCCCCCCCXXC CCCC CCCCCC    C   CCCCCCCCC   CCCCCCCCCCCXXXXXXXXX  XXXXXXXXXXXXXXXCC
*-='-----------''''-'-------''-.---..----..-..--.-.---------....----------'''''''''--''''''''''''''''-.=A)   -   +====+X-+.'+=-+'-.''
+CC+...........CCCC.C.......CC.'...''....''.''..'.'.........''''..........CCCCCCCCC..CCCCCCCCCCCCCCCC.'C                CC'+CCCC+.'++
+  C'''''''''''BBBB'B'''''''BB'+'''++''''++'++''+'+'''''''''++++''''''''''BBBBBBBBB''BBBBBBBBBBBBBBBB'+                   +C    C'+CC
+   XXXXXXXXXXXHHHHXHXXXXXXXHHXCXXXCCXXXXCCXCCXXCXCXXXXXXXXXCCCCXXXXXXXXXXHHHHHHHHHXXHHHHHHHHHHHHHHHHXC                   C      XC
+   CCCCCCCCCCCXXXXCXCCCCCCCXXC CCC  CCCC  C  CC C CCCCCCCCC    CCCCCCCCCCXXXXXXXXXCCXXXXXXXXXXXXXXXXC                           C
*-''------------''''''-------''-.--.....-..-..........-.+......-------'''-'''''''''''''''''''''''''''-.MXZ--=11XX+'..--'''------++=A-
+.CC............CCCCCC.......CC.'..'''''.''.''''''''''.'C''''''.......CCC.CCCCCCCCCCCCCCCCCCCCCCCCCCC.'          C+''..CCC.....CCCC C
+'BB''''''''''''BBBBBB'''''''BB'+''+++++'++'++++++++++'+ ++++++'''''''BBB'BBBBBBBBBBBBBBBBBBBBBBBBBBB'+           C++''BBB'''''
+XHHXXXXXXXXXXXXHHHHHHXXXXXXXHHXCXXCCCCCXCCXCCCCCCCCCCXC CCCCCCXXXXXXXHHHXHHHHHHHHHHHHHHHHHHHHHHHHHHHXC            CCXXHHHXXXXX
+CXXCCCCCCCCCCCCXXXXXXCCCCCCCXXC CC     C  C          C        CCCCCCCXXXCXXXXXXXXXXXXXXXXXXXXXXXXXXXC               CCXXXCCCCC
*-''-----.--------''''----------.---..---....'.''..'..'''...---------'''''''''''''''''''''''''''''----'''+.--''''''''''--.-.'=+MX=.--
+.CC.....'........CCCC..........'...''...''''+'++''+''+++'''.........CCCCCCCCCCCCCCCCCCCCCCCCCCCCC....+++C'..CCCCCCCCCC..'.'+CC  C'..
+'BB'''''+''''''''BBBB''''''''''+'''++'''++++C+CC++C++CCC+++'''''''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBB''''CCC +''BBBBBBBBBB''+'+C     +''
+XHHXXXXXCXXXXXXXXHHHHXXXXXXXXXXCXXXCCXXXCCCC C  CC CC   CCCXXXXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXXX    CXXHHHHHHHHHHXXCXC      CXX
+CXXCCCCC CCCCCCCCXXXXCCCCCCCCCC CCC  CCC                   CCCCCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCCC     CCXXXXXXXXXXCC C        CC
*--''---------..----'''--------'-.'............--..-......-.-----'''''''''''''''''''''''''''-'''------'''''''''--------.'MA==+.....'=
+..CC.........''....CCC........C.'+''''''''''''..''.''''''.'.....CCCCCCCCCCCCCCCCCCCCCCCCCCC.CCC......CCCCCCCCC........'+  CCC'''''+C
+''BB'''''''''++''''BBB''''''''B'+C++++++++++++''++'++++++'+'''''BBBBBBBBBBBBBBBBBBBBBBBBBBB'BBB''''''BBBBBBBBB''''''''+C     +++++C
+XXHHXXXXXXXXXCCXXXXHHHXXXXXXXXHXC CCCCCCCCCCCCXXCCXCCCCCCXCXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHXHHHXXXXXXHHHHHHHHHXXXXXXXXC      CCCCC
+CCXXCCCCCCCCC  CCCCXXXCCCCCCCCXC              CC  C      C CCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXCXXXCCCCCCXXXXXXXXXCCCCCCCC
*--------------------''---------'-++''''''--------------.---.--'''''''''''''''''''''''''''''''''--'''''''''-------'-AMAAXZ1Z111)))+==
+....................CC.........C.CC++++++..............'...'..CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC..CCCCCCCCC.......+C
+''''''''''''''''''''BB'''''''''B'  CCCCCC''''''''''''''+'''+''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB''BBBBBBBBB'''''''C
+XXXXXXXXXXXXXXXXXXXXHHXXXXXXXXXHX        XXXXXXXXXXXXXXCXXXCXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXHHHHHHHHHXXXXXXX
+CCCCCCCCCCCCCCCCCCCCXXCCCCCCCCCXC        CCCCCCCCCCCCCC CCC CCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCXXXXXXXXXCCCCCCC
*'-.-------------------'-----------''.''.-'''--------'--''----''''''''''''''''''''''''''----''''--''-------.+'..'=X+  -------=--=++=-
+C.'...................C...........++'++'.CCC........C..CC....CCCCCCCCCCCCCCCCCCCCCCCCCC....CCCC..CC.......'C+''+C
+B'+'''''''''''''''''''B'''''''''''CC+CC+'BBB''''''''B''BB''''BBBBBBBBBBBBBBBBBBBBBBBBBB''''BBBB''BB'''''''+ C++C
+HXCXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXX  C  CXHHHXXXXXXXXHXXHHXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHXXXXHHHHXXHHXXXXXXXC  CC
+XC CCCCCCCCCCCCCCCCCCCXCCCCCCCCCCC      CXXXCCCCCCCCXCCXXCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXCCCCXXXXCCXXCCCCCCC
*''-------------------.------.-----.'..----''''''''''''''''''''''''''''''''''''-'-''''''--''''''--..+--='..++X1Z1-    -++--=-=--=+1++
+CC...................'......'.....'+''....CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.C.CCCCCC..CCCCCC..''CCCC+''CC
+BB'''''''''''''''''''+''''''+'''''+C++''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'B'BBBBBB''BBBBBB''++    C++
+HHXXXXXXXXXXXXXXXXXXXCXXXXXXCXXXXXC CCXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXHXHHHHHHXXHHHHHHXXCC     CC
+XXCCCCCCCCCCCCCCCCCCC CCCCCC CCCCC    CCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCXCXXXXXXCCXXXXXXCC
*------..---------------...--........'--.-'''''''''''''''''''''''''''''--...--+A'-''''''-'''''''--..++=MM+=+'A-        )+==----===+)+
+......''...............'''..''''''''+..'.CCCCCCCCCCCCCCCCCCCCCCCCCCCCC..'''..C +.CCCCCC.CCCCCCC..''CCC  CCC+
+''''''++'''''''''''''''+++''++++++++C''+'BBBBBBBBBBBBBBBBBBBBBBBBBBBBB''+++''  C'BBBBBB'BBBBBBB''++        C
+XXXXXXCCXXXXXXXXXXXXXXXCCCXXCCCCCCCC XXCXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXCCCXX   XHHHHHHXHHHHHHHXXCC
+CCCCCC  CCCCCCCCCCCCCCC   CC         CC CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC   CC   CXXXXXXCXXXXXXXCC
*'----------.-.---''----------.-------''-''''''''''''''''''''''-'-.+-MA))ZAX1+'++--'''''-''''--.'''+=--A---'=--   -    =)+==+=+==-=))
+C..........'.'...CC..........'.......CC.CCCCCCCCCCCCCCCCCCCCCC.C.'CC        C+  C.CCCCC.CCCC..'+++CCCC C..CC
+B''''''''''+'+'''BB''''''''''+'''''''BB'BBBBBBBBBBBBBBBBBBBBBB'B'+           C   'BBBBB'BBBB''+CCC      ''B
+HXXXXXXXXXXCXCXXXHHXXXXXXXXXXCXXXXXXXHHXHHHHHHHHHHHHHHHHHHHHHHXHXC               XHHHHHXHHHHXXC         XXH
+XCCCCCCCCCC C CCCXXCCCCCCCCCC CCCCCCCXXCXXXXXXXXXXXXXXXXXXXXXXCXC                CXXXXXCXXXXCC          CCX
*''''-------'----''--'--'-''''''''''''''''''''''''''''''''--.+MZ+--       ==  =    Z.''--'''--.+M+===''''''.- -=  =     +===-=== =++)
+CCCC.......C....CC..C..C.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC..'C                      'CC..CCC..'C     +CCCCC'
+BBBB'''''''B''''BB''B''B'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB''+                       +BB''BBB''+      CBBBBB+
+HHHHXXXXXXXHXXXXHHXXHXXHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXC                       CHHXXHHHXXC       HHHHHC
+XXXXCCCCCCCXCCCCXXCCXCCXCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC                         XXCCXXXCC        XXXXX
*----'-'---'-------''----'''''''''''''''-------..'+=-AXZ1)=            -- )-        M--.'+===MZ=  -=''''''-= --  -=     )++===+++)==+
+....C.C...C.......CC....CCCCCCCCCCCCCCC.......''+CCC                                ..'+CCCC      CCCCCCC.
+''''B'B'''B'''''''BB''''BBBBBBBBBBBBBBB'''''''++C                                   ''+C           BBBBBB'
+XXXXHXHXXXHXXXXXXXHHXXXXHHHHHHHHHHHHHHHXXXXXXXCC                                    XXC            HHHHHHX
+CCCCXCXCCCXCCCCCCCXXCCCCXXXXXXXXXXXXXXXCCCCCCC                                      CC             XXXXXXC
*----.--.-.++.'.-.-'----------'.'+=-MAX1)++1)=++)++==   -=--- ----=+---- ----  ++ZZM'--+-X)=1)=- -A''''''--  -    -     +++++++=+))++
+....'..'.'CC'+'.'.C..........+'+CCC                                                +..CC          CCCCCC.C
+''''+''+'+  +C+'+'B''''''''''C+C                                                   C''            BBBBBB'
+XXXXCXXCXC  C CXCXHXXXXXXXXXX C                                                     XX            HHHHHHX
+CCCC CC C      C CXCCCCCCCCCC                                                       CC            XXXXXXC
*''-.+--..-AM+='.''..'AA1X11==- -                =-====-++=+==----=++==-   -+1A=+.+=MMM1-   +===)=''''''-M---- - --     +)=++==+)))))
+CC.'C..''C  CC+'++''+                                                         CC'CC             CCCCCCC.
+BB'+ ''++     C+CC++C                                                           +                BBBBBB'
+HHXC XXCC      C  CC                                                            C                HHHHHHX
+XXC  CC                                                                                          XXXXXXC
*''------.+=MAXZXZ))X-Z                               --=-===---==-+-==--+1M+.-.'=M1)MAZ=   -+A'-''''''-X-=--- --       -=+==-+-)++))
+CC......'CC         C                                                      C'.'+C             +.CCCCCC.
+BB''''''+                                                                   +'+C              C'BBBBBB'
+HHXXXXXXC                                                                   CXC                XHHHHHHX
+XXCCCCCC                                                                     C                 CXXXXXXC
*''---------.''.'-=''M                                            -==+ZM+.-.=AXX1-  Z-'''-..-''''''''-M= =-=-===-      - =+)+===++=++
+CC.........'++'+CC++                                                   C'.'C        .CCC.''.CCCCCCCC.
+BB'''''''''+CC+C  CC                                                    +'+         'BBB'++'BBBBBBBB'
+HHXXXXXXXXXC  C                                                         CXC         XHHHXCCXHHHHHHHHX
+XXCCCCCCCCC                                                              C          CXXXC  CXXXXXXXXC
*''----------''--.'=MZ                                            +ZM-++.+-A1=--     M-''''''''''''-=1---=-++==-=--    =  )1)+=+=++))
+CC..........++..'+C                                                 CCC'CC           .CCCCCCCCCCCC.C
+BB''''''''''CC''+C                                                     +             'BBBBBBBBBBBB'
+HHXXXXXXXXXX  XXC                                                      C             XHHHHHHHHHHHHX
+XXCCCCCCCCCC  CC                                                                     CXXXXXXXXXXXXC
*''''---------.++-MXX1                                         =1-'..+-ZZ+-    - --  -1+-'''''--'M1===--===))++=-=--   -  =)1=+=+=))+
+CCCC.........'CCC                                               C+''CC                C.CCCCC..+
+BBBB'''''''''+                                                   C++                   'BBBBB''C
+HHHHXXXXXXXXXC                                                    CC                   XHHHHHXX
+XXXXCCCCCCCCC                                                                          CXXXXXCC
*--''---------.+XZAXX                              -      - =X-+.-.=MZ)          -- -   +)ZZ)=-     -===+++)))+-=-= -     +))+++)+==)
+..CC.........'C                                              CC'.'C
+''BB'''''''''+                                                 +'+
+XXHHXXXXXXXXXC                                                 CXC
+CCXXCCCCCCCCC                                                   C
*AA.''--------.+-M-M1                                   -1M+..+-Z1)              -=------            =+==++))1)+=--       )))++)++)+)
+  'CC........'CC C                                        C''CC
+  +BB''''''''+                                             ++
+  CHHXXXXXXXXC                                             CC
+   XXCCCCCCCC
*'+----------.+'+=-X                                 +1AM=..'=A+                                     -)+++=++)+)+==       )1+++)+++)+
++C..........'C+CCC                                      C''+C
+C ''''''''''+ C                                          ++C
+  XXXXXXXXXXC                                            CC
+  CCCCCCCCCC
*-----------.'+++--)                              )X-'''-XXX)=- =)1+ -                                -===-  -=++==+==    +)+)111)))+
+...........'+CCCCC                                 C+++C
+'''''''''''+C                                       CCC
+XXXXXXXXXXXC
+CCCCCCCCCCC
*----------.'=-=MAZ                           -)ZM+.-'=MX=   --=-=)= -- -        -    - --   --                    ---    )1++)))1++)
+..........'+CCC                                  C'.+C
+''''''''''+C                                      +'C
+XXXXXXXXXXC                                       CX
+CCCCCCCCCC                                         C
*------.----'-AXZ1X                         +A+''=MAXZ)-         -=++++==--     --       -  --              -  --     -    -==+++)+))
+......'....+C                                C++C
+''''''+''''C                                  CC
+XXXXXXCXXXX
+CCCCCC CCCC
*'----------.=AXA-A                     =)X-+..'=A+             -==+11+=-=--    ----   - -- ---                --       --   -     -=
+C..........'C   C                         CC''+C
+B''''''''''+                                ++C
+HXXXXXXXXXXC                                CC
+XCCCCCCCCCC
*'--'---.---'-M-++Z                  =1M=++MM-A1=      --   --  -+++)1+==-      --- ---- -- ---      --    ---       - - -      -  -
+C..C...'...+C CCC                      CCC  C
+B''B'''+'''C
+HXXHXXXCXXX
+XCCXCCC CCC
*-----'-----'==.'M-                +X+.-.+-X-                =  --+==-- -- --      -    -   -             - - -     --  ----    -
+.....C.....+CC'+                    C'.'CC
+'''''B'''''C  +C                     +'+
+XXXXXHXXXXX   C                      CXC
+CCCCCXCCCCC                           C
*..---------.''-Z             -=1X-==---X)-                 -===---  -----=-=    --=-  ------         -             - -- -----      -
+''.........'++C                  CCCCCC
+++'''''''''+CC
+CCXXXXXXXXXC
+  CCCCCCCCC
*..---------.+A=           --1X-+'+=A+==                      --   -----  -     -        --   -       -    ---     -- -   --
+''.........'C                 CC+CC
+++'''''''''+                    C
+CCXXXXXXXXXC
+  CCCCCCCCC
*-.----''--+X=          -=1AMMM-=-X)-             -                  --   =--- ---            -         -   ---     --- - - --
+.'....CC..C                   CCC
+'+''''BB''
+XCXXXXHHXX
+C CCCCXXCC
*=MM'..-.=Z           =ZM+..+A1)+     -    - --        -                  -  -   -   -        -                 -     ---       -   -
+C  +''.'C               C''C
+   C++'+                 ++
+    CCXC                 CC
+      C
*Z+1MZ))=           +1M='+=MZ)-       --  -----   -- -                 -            -  -  -    -         -     -- ------ -- -   -  --
+                      C+CC
+                       C
*+ --           -)X-+=MZZ1+                   --  -- -                              - --      -          -   -- --- ---- --- -   -
+                  CCC
*--          +1M=+''+M1-     -                --    -=-           --           ---- --=-= -  =-     -   - -- ==--==-=---- --
+               CC++C
+                 CC
*--      -+XM++MM--X+                       -       -=            --   ---- -      =--- ----     -  - - --=-==---=---  - -
+            CC  CC
*      +Z=..'+=X+=-       -             -         --===             -        -------    --- ---=- -------------===------
+        C''+CC
+         ++C
+         CC
*  -+ZM=+''=MZ)=         - -                -      ----          -  -   --   -=-      ---====-----  -- ----=- ----- --
+      CC++C
+        CC
*1A=+'+-XZ)-                                        ---         -   --   -          -=-=====     -- ------  ---- ----=
+  CC+CC
+    C
*'...+-A=           -                   -       --              - -- ----    --  -  -=--===-       - -      -   - -  =    -
++'''CC
+C+++
+ CCC
*-MMX+-           --- ---        -      -        --  --        -- -- -          -      --      -=   --   -  -- --  - - -   -        -
+C
*Z=            -  --       --          -             -  -        --  -     -  -                 -   -        -
*                  -      -=-         --                        --=      ----                       -                    -
*                                     --        -     -         -- -      ---     -                                -  -
*                           -    -   ---                       --          -                                -     --- - -
*                                     -                                 -  --                                --   -=---  --
*-                                    -                               - -- -   ---             -      -  ---- -- ----------- - -
*)+=--                       --                                       -         --    -           --   -====-  - -=-  -- -  -
*))))))+)+=                                         -                                             --  -- =++=   ---  ----
*)11)1)11)))))+==---       ----                                                                   --     +11=    -     --
*111))))1))11)+++--==+===-  -+==--                                 -                               -     +1-      -    ---        -
*)+++++)))+))))++- -++)))++=++=-                                   -          - - - --                   --    -    --=-         --
*)))))))))+))++))++))11)1)))1)+++-         -=--                             --- -                  -       --  -  - -==          --
*)1)1))))))))+)))+))+)))111)1))))+===-      +))+==-                                               -)= -    --    -- --        -  -=
*11))1)11)11)+)))))))1))1)1))))1)))1)+       =11))1+++==-                          --              ++ -   --   -    -            --
*))))))))111)+))))111111Z11)11)++1Z111+-     -ZZ111111)))=-                       -                   -       -    -       -        -
*)))1))1Z111)))1)111111111111111))1)111+=     +)1ZZZZZZ11)++-                   -==                 -=-----  ---  -        -     ----
*)))11111111111111)11111ZZZZZ1ZZ1))))11)+++   +)1ZZZ1)ZZXZ111)=                                     --    - ---                 -----
*11)11111111111111)1111ZZZZXZZXXX1))11111111--1ZZZ1Z)=11ZZ111))=                      --          ---      -=-     -    -     -  ---
*11)1111Z1)111111)11111Z1111ZZZZ1==1111ZXXZZ111ZZZZZ11XZ)))11))11+=     --                       ----    - -=   - --  -           -
*ZZ1ZXXZZ1)111111)1Z11ZZ111ZZZXZ1= )ZZXXXXXXZZZZZZZZZXAXZ1)1ZZZXZZ1+=-   -+                        -=------++-  -    -           -- -
*XZZXMAZZZ11Z111ZZ11ZZZZXZ111ZZZ1+=+ZXXXZXXXXXZXXXXZXXXAXZ1)=)1ZZZ1Z1)=   --  -- -                  ---  --==-  ---              -
*XZXZXXZZZ11Z1Z1XZ111ZZZZ111ZZZZZ)))ZXXXZZZXXXZXXXXZXAXAXZ1+=+)=+)+ZXZ1+   - -1+ =)=                 --- --- - -=-         ---  -
*XXXZZZXZZZZZZ1ZXZZZ11)ZZ11ZZZZZ1)))1XXXZ11ZZZX-AXXZZZZXXZ)++11= - +XZZ1)+=-==+)  ))+=--                 --    -=-   -    ------
+                                              C
*AXX111ZZZZZZZZXXXZ1111XXZZZXZXZX1+==+=1XXXXXZZZXXXZ1)ZXZZ11)1Z)    1XX1)ZX111)1=     +1+---             -    --  -         -=--- - -
*AAXXZ11ZZXZZXZZ1ZZ11ZZXXXXXAAXXZZ)==-  =ZXXXXXZXZZZ)-)XZZZZ111)=-=+ZXZ11XAXXXZZ1)+    ZZ)+=+++               -              ------
*XXZXXZZXXXXXXXXZ1ZZ1ZXXXXXXAAXXXZ1+=-   -)XXXAAXZZ1+-=ZAXZZ1ZZ111ZXXXXZZXXXXXZXXZ1+=  )1+-  )1-        -         -             - --
*11)1ZZXXXXXXXAZ1ZZXZZXXXXXXAAAAAX11)-    =XXXAXXX1)--+XMXZ111ZXZXXXXXAXZZZXAAXXXXXZ1)+1)+   1Z)-            -    -             ---
*)))1XXAAAXAAAAXZZXXXXAAAXXAAXXXXZZXX)-  +)XAXXXAXZ)= +ZAAXZ11ZZ111)++XXXXXXMMMAXXAAXZ111+-  =1Z1+==          ---   --- -       -----
*11ZAAAMAAAAAAAXXXXXAAAAAXAAXXXXXXXXXZ)--=+1Z1ZAAXX1)==ZAXXXZZZZ1)+-- -)ZXXXXAMMXXAAAXZ1))+-  --==))=          -    ---    -   - ----
*ZAM---MMAAXXXXZXAAAAXXAXAAAXXAAAAAAXX1))+===+1XAAXXX11XXXZXXXXXZ11)+-  -1AZ1)XAAMXXAMAZ111+===---++---        -   -- -------- --=---
+   CCC
*MM--=-MMMXZXXXXXAAAXXXXXAAXXXAAAAMAAXZ1ZZ)+-  -+1XAXZ))ZZZZZZXAZZ11))=   1X1)+))111ZXXZZZ1++=+11)Z1+-  -       - --  -           - -
+  CCCC
*AMA-=-AAAXXAAAAAAAAAXXXAAAAXXZZXXAAAAAXAAXZ)+-   --+)+===+===+1ZZZ1)+-    )11Z)=--  ==-=)+=))))1ZXX1+- -    -    -=-- -     -     -=
+   CCC
*ZXXAMAXXXAAMAAAAMMAAAAAAAAXXZZZZXXXAAAAAMAZ)+=--    +11)+==---+111Z1))+=    -1Z+=-  --  --  -- =1XX1)+=+- =)+=    ------          --
*11ZZZ1)++1XMAXXXXAXAAAAAAAXZ1)1ZXXXAMMAXAAZ)==-     -11)==)))))1)1Z11111)+=  =Z)+=-    - --=     +))--=+++1Z1)      -=-          ---
*1)1Z11+= =)ZXZZXXXXAAAAAAXXXZ1ZZXZXAMAXXXXZZ)+===   =1)=  )Z))11))1ZZZ1))))=  )11)+==     =)=      -     +1ZZZ+      -- - -        -
1I ++)11111111))111))))))))))))))+)))))111))1)1)1111111111111111111++==++)))+))))))))))))++++===    '-  '- -'- ='' +'' ='' +'' +''
*++)11111111))111))))))))))))))+)))))111))1)1)1111111111111111111++==++)))+))))))))))))++++===    '-  '- -'- ='' +'' ='' +'' +'' +''
+                                                                                                 C.  C.  C.  CC  CC  CC  CC  CC  CC
+                                                                                                 B'  B'  B'  BB  BB  BB  BB  BB  BB
+                                                                                                 HX  HX  HX  HH  HH  HH  HH  HH  HH
+                                                                                                 XC  XC  XC  XX  XX  XX  XX  XX  XX
*ZA-===++===--==----MMMMMMMMAAAXXAAM-==-M---=-===========+=++==++A1+=+)ZXXZXAAMMMMMM--X1))+=- =+1)1Z11ZXZXXMAAA-=++-M-=+==---=--=--==
+  CCCCCCCCCCCCCCCCC                CCCC CCCCCCCCCCCCCCCCCCCCCCCC                   CC                         CCCCC CCCCCCCCCCCCCCCC
*=''+'++'++''++===+=++'+++++++====++++++====+==+++++++++===+++'.-.'-MMM-+===++''''''''=MAXXZ1))1ZAMAMMMMMAAAXXZXXXXZXXAMMMMM-MMMMMMMM
+C++C+CC+CC++CCCCCCCCC+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+'.'+C   CCCCCCC++++++++C                                     C
+ CC C  C  CC         C                                       C+'+C           CCCCCCCC
+                                                              CXC
+                                                               C
*-+++++++++'+========++++'+'+++=-==++++++===+===+=====-----=''.-.....'''..'==='++'...+MAAXXX1))ZXMMMAMMMAXXAAXAAAZAAMMMMAMM-M----=---
+CCCCCCCCCC+CCCCCCCCCCCCC+C+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++'.'''''+++''+CCC+CC+'''C                                     C CCCCCCCC
+          C             C C                                CC+'+++++CCC++C   C  C+++
+                                                             CXCCCCC   CC        CCC
+                                                              C
*X=++++'+'+++======++==+++'+'++===+++++++==========-===-----+...+''''+=+-'+=-='''.'..+MAXX111))1XZXAAMAXXXAXAXXXZXXMMMM-MMMMM-MMM--MM
+ CCCCC+C+CCCCCCCCCCCCCCCC+C+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'''C++++CCCC+CCCC+++'+''C                                 C     C   CC
+      C C                C C                                +++ CCCC    C    CCC+C++
+                                                            CCC                 C CC
*1X=+++''++++========+===+++'++=+=+=+++++==+=---===---=-----=....'''''''++''++''''''''=MAXXZZZXXXXXXAAMAAXAAAAAXAAAMM---AMMMMMMM---MM
+  CCCC++CCCCCCCCCCCCCCCCCCC+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC''''+++++++CC++CC++++++++C                              CCC        CCC
+      CC                   C                                ++++CCCCCCC  CC  CCCCCCCC
+                                                            CCCC
*ZZ-+++++++++=+=========-+++++++===++++++====-=---==--==-----+....'..''''++''+++''''=++=MAAAAMAAAAAXAAAAAAAMAXAAAXXAMM-MMMMAMMAMM--MM
+  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC''''+''++++CC++CCC++++CCCC                              C          CC
+                                                             ++++C++CCCC  CC   CCCC
+                                                             CCCC CC
*AZX=++++++++==--====+=--+=++=++==++'++++=+==-===-==-------MM-+''....'+'''+=++++++'++-==MXXAAAXAXXAXAXXAAXXXXAXAXXXXAAAMMA-AMAMMMM-M-
+   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCCCCCCCCCCCCCCCCCCCC  CC++''''+C+++CCCCCCCC+CCCCC                                  C       C C
+                                   C                          CC++++C CCC        C
+                                                                CCCC
*XXX-=++++++++=---========+====+=+=++++=++-===-=====-===----MM-='...''''''+++++==+.''++=-MAAAXXXXXZXXXAAXXZZAXAXAXXXXAXAAAAXAMMMMMMMM
+   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC  CC+'''++++++CCCCCCCC'++CCCC
+                                                               C+++CCCCCC        +CC
+                                                                CCC              C
*XXZX-+++++++=-----==-=========++++=+++=+=====-----=-=------MMM-+.....'''=+'+''+++''+==++=-MAAAAXXXAXAAMAAXAXAAXAXXAAXXAAAXXAAMMMM-MM
+    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC   CC'''''+++CC+C++CCC++CCCCCCC                                       C
+                                                                +++++CCC  C CC   CC
+                                                                CCCCC
*)111Z-++++++=----======--==-+++=++=====+++==---M------==-----MM-'-...'++==+'''''++======+=-AAMMAXAAAAXAAAAAAAAXXXAAAAXAAAAAAMMMMMMMM
+     CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCC  C+.'''+CCCCC+++++CCCCCCCCCCC
+                                                                C'+++C     CCCCC
+                                                                 XCCC
+                                                                 C
*=)++1A=+=+====--==-=++====-=====+=======++===MM-------=-==+==-M=+'.''+=M++''''''=---M-====MMAAMAAXXAXXAAAAAXAAAXXAAAAAXXAXAXAAAAAMAA
+      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC  CCCCCCCCCCCCCCC CC+'++CC CC++++++CCCC CCCCC
+                                                                 C+CC     CCCCCC
+                                                                  C
*)))11ZX-===++==--=--=+-======M-===+=--=+======-=--A---=-==++--==+++++=--+'''.'''+=----+===-AAAMAMMAAXXXXXAAAXXAXXXXAAXXZXZ11ZXAAAAXA
+       CCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCC+++'+++CCCCCCCCCCC
+                                                                         CCC+CCC
+                                                                            C
*XM-==MAMMMM-==-----=++-----=---=====--=======-----M-----M---MM-==+'+'=--=+++++''+==--++-++=MAMAXAXXXAXXAXAXAAXXAXXXXXXXZXZ11)1XAAXXA
+  CCC      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCC CCC  CCCC+C+CCCCCCCCC++CCCCCCCCCCC
+                                                                  C C         CC
*1A'-'--'=AXAAM----+---+---M----==---M-=--==+==-----------MM-M---=+''++M-===--=+''+==++++++=MAAAAXXZXAAAAAXXZAXZXXZXZXXXZZZZ1)+1ZZXXA
+  +.C..+C     CCCCC...CCCC CCCCCCCCC CCCCCCCCCCCCCCCCCCCC  C CCCCC++CC CCCCCCCC++CCCCCCCCCC
+  C'B''C           '''                                            CC           CC
+   XHXX            XXX
+   CXCC            CCC
*'-'''-..-.-MXXM=+'-'''-MXAAMMMMM--XM---=----===--M-MMM-MMM--M-=====+=---=-MAAM-++=-+++=+'=MMAXXXXZXZZAAAMAXXXXXZ1)))111)))))++++1XXX
++.CCC.''.'C    CC+.CCC.         CC  CCCCCCCCCCCCC C   C   CC CCCCCCCCCCCCC    CCCCCCCCCC+C
+C'BBB'++'+       C'BBB'                                                                 C
+ XHHHXCCXC        XHHHX
+ CXXXC  C         CXXXC
*''''''-'-'---.'.--'''''MMMMMMMMMM-M-MM-=--===+=-=-MMM-MM-=++=++'++++=++=MMMAAAAM=MM-=++'+-MMMAXXZZXXXAAAMAAZZZ11))+11))))++)+++=+1Z1
+CCCCCC.+.C...'+'..CCCC+          C C  CCCCCCCCCCCC   C  CCCCCCC+CCCCCCCC        C  CCCC+CC
+BBBBBB'C'B'''+C+''BBBBC                                        C                       C
+HHHHHHX XHXXXC CXXHHHH
+XXXXXXC CXCCC   CCXXXX
*'''''''--'''--.---'''----.'++=---AMMMAM-M--=====---MMM--=====+'+'+++=+'+=MMMAAMAMMMA-++==--==MXZZXZZXXAAM-AZ111))1)1))1)+++++++-=+))
+CCCCCCC..CCC..'...CCC....'+CCCCCC      C CCCCCCCCCC   CCCCCCCC+C+CCCCC+CC           CCCCCCCCC            C
+BBBBBBB''BBB''+'''BBB''''+C                                   C C     C
+HHHHHHHXXHHHXXCXXXHHHXXXXC
+XXXXXXXCCXXXCC CCCXXXCCCC
*'---'''''''------'-''''''''---.'+-MMMAAMMAM=====--MMMM---MMA='''+=++=++++-MMM-MAAAMAM=+----==-MXXXZZXXAM--MAXZ1))1))))))=+)+=+=-==++
+C...CCCCCCC......C.CCCCCCCC...'+CC         CCCCCCC    CCC   C+++CCCCCCCCCC   C       CCCCCCCCC          CC
+B'''BBBBBBB''''''B'BBBBBBBB'''+C                             CCC
+HXXXHHHHHHHXXXXXXHXHHHHHHHHXXXC
+XCCCXXXXXXXCCCCCCXCXXXXXXXXCCC
*''---'''''''''''''''''-''''''-'--.=MAAMM-MM=-===-MM-MMMMMMMM=++=+++''''++=M--=-MAMMAXM==-MMM--==-XZXXAAMMMMM-MXZ11))1))++++==-=--=))
+CC...CCCCCCCCCCCCCCCCC.CCCCCC.C..'C     C  CCCCCC  C        CCCCCCC++++CCC CCCC       CCC   CCCCC           C
+BB'''BBBBBBBBBBBBBBBBB'BBBBBB'B''+                                 CCCC
+HHXXXHHHHHHHHHHHHHHHHHXHHHHHHXHXXC
+XXCCCXXXXXXXXXXXXXXXXXCXXXXXXCXCC
*''----'''---'--''''''''''-''''-----'+--MAA---M-----MMMMAMAAMMM-----+'++==++===+==MAAA-==--AMMM-''+MAAAMMAAAAXAAAX1))11))))==-=-- =++
+CC....CCC...C..CCCCCCCCCC.CCCC.....+CCC   CCC CCCCC           CCCCCC+CCCCCCCCCCCC    CCCCC    C++C
+BB''''BBB'''B''BBBBBBBBBB'BBBB'''''C                                C                          CC
+HHXXXXHHHXXXHXXHHHHHHHHHHXHHHHXXXXX
+XXCCCCXXXCCCXCCXXXXXXXXXXCXXXXCCCCC
*'---.---'MX-+'--''''''''-.'-'''-.+==.-.''=++'++''++----MMM-=-MMAMAM----MM=+++++++-MMM-AAMMMMM-=+'++=AAAMAAXAXAAAAX11)))))1====-  =++
+C...'...+  CC+..CCCCCCCC.'C.CCC.'CCC'.'++CCC+CC++CCCCCC   CCC      CCCC  CCCCCCCCC   C       CCC+CCC
+B'''+'''C    C''BBBBBBBB'+B'BBB'+   +'+CC   C  CC                                               C
+HXXXCXXX      XXHHHHHHHHXCHXHHHXC   CXC
+XCCC CCC      CCXXXXXXXXC XCXXXC     C
*-.----'--=1+)+)1XAM+.-'''------'--=+'-'-''-'''''''------------.'+=-=MAAAAM=+++++=+--==MAAMMMA-=+====AAXAAXAAXAAAXXZZ11+)))+==--  ==)
+.'....C..C         C'.CCC......+CCCC+.C.CC.CCCCCCC............'+CCCC      CCCCCCCCCCCC       CCCCCCC
+'+''''B''           +'BBB''''''C    C'B'BB'BBBBBBB''''''''''''+C
+XCXXXXHXX           CXHHHXXXXXX      XHXHHXHHHHHHHXXXXXXXXXXXXC
+C CCCCXCC            CXXXCCCCCC      CXCXXCXXXXXXXCCCCCCCCCCCC
*'--.----'-'+-AX)++))XA='----.'=XA+-.'-'-''-''''''''''''''''''''-'----.'++++'''++==+==++--MMAAM-=---MZZZXXZXAAXAAXZXZZ1)+))+=----  -+
+C..'....C.+CC         C+....'+C  C.'+.C.CC.CCCCCCCCCCCCCCCCCCCC.C....'+CCCC+++CCCCCCCCCCC     CCCCC
+B''+''''B'C            C''''+C    '+C'B'BB'BBBBBBBBBBBBBBBBBBBB'B''''+C    CCC
+HXXCXXXXHX              XXXXC     XC XHXHHXHHHHHHHHHHHHHHHHHHHHXHXXXXC
+XCC CCCCXC              CCCC      C  CXCXXCXXXXXXXXXXXXXXXXXXXXCXCCCC
*'''--------''---------...'''==-MM+'+-'---.'.'.....----------'''''''''''''--------.-------''=MM=-==+-ZZZXXAXAAXXXXXXAX1+)+)=--=     -
+CCC........CC.........'''+++CCC  C+C.C...'+'+'''''..........CCCCCCCCCCCCC........'.......++C  CCCCCC
+BBB''''''''BB'''''''''+++CCC      C 'B'''+C+C+++++''''''''''BBBBBBBBBBBBB''''''''+'''''''CC
+HHHXXXXXXXXHHXXXXXXXXXCCC           XHXXXC C CCCCCXXXXXXXXXXHHHHHHHHHHHHHXXXXXXXXCXXXXXXX
+XXXCCCCCCCCXXCCCCCCCCC              CXCCC         CCCCCCCCCCXXXXXXXXXXXXXCCCCCCCC CCCCCCC
*''''''-----''----'-----.'+=+='=+.---''----.-...'''++....'+=.--------------...-------.---'''-+M-M-=MXXZXXXAXXXXZZXXAAAX))+)+---
+CCCCCC.....CC....C.....'+CCCC+CC'...CC....'.'''+++CC''''+CC'..............'''.......'...CCC.C C CC
+BBBBBB'''''BB''''B'''''+C    C  +'''BB''''+'+++CCC  ++++C  +''''''''''''''+++'''''''+'''BBB'
+HHHHHHXXXXXHHXXXXHXXXXXC        CXXXHHXXXXCXCCC     CCCC   CXXXXXXXXXXXXXXCCCXXXXXXXCXXXHHHX
+XXXXXXCCCCCXXCCCCXCCCCC          CCCXXCCCC C                CCCCCCCCCCCCCC   CCCCCCC CCCXXXC
*''''''''------'+'..+'..-..---..--''''----------..........'''-----------...+.------.+='--''''-=MM-M1)11ZZXXZZZXXZZZXXAAZ1++++--   --
+CCCCCCCC......+C+''C+''.''...''..CCCC..........''''''''''+++...........'''C'......'CC+..CCCC.C  C
+BBBBBBBB''''''C C++ C++'++'''++''BBBB''''''''''++++++++++CCC'''''''''''+++ +''''''+  C''BBBB'
+HHHHHHHHXXXXXX   CC  CCXCCXXXCCXXHHHHXXXXXXXXXXCCCCCCCCCC   XXXXXXXXXXXCCC CXXXXXXC   XXHHHHX
+XXXXXXXXCCCCCC         C  CCC  CCXXXXCCCCCCCCCC             CCCCCCCCCCC     CCCCCC    CCXXXXC
*''''--'-.=-='+=--+'..-------...--'''--...'.---'--..-......'.-----------...--'-.+====+'..-....=='M1++Z1)ZZ111111Z)XXXAZ1==+--
+CCCC..C.'CCC+CCCCC+''.......'''..CCC..'''+'...C..''.''''''+'...........'''..C.'CCCCCC+''.''''CC+
+BBBB''B'+   C     C++'''''''+++''BBB''+++C+'''B''++'++++++C+'''''''''''+++''B'+      C++'++++  C
+HHHHXXHXC          CCXXXXXXXCCCXXHHHXXCCC CXXXHXXCCXCCCCCC CXXXXXXXXXXXCCCXXHXC       CCXCCCC
+XXXXCCXC             CCCCCCC   CCXXXCC     CCCXCC  C        CCCCCCCCCCC   CCXC          C
*-''-'.--.++.-.---'---''---'=+'---'''---.''+'.----------'..------'-'''-'---'--'++====++..+-.+.'-'-M1)ZZZZZZZ11ZZ11ZAAAAX1)))+-  -
+.CC.+'..'CC'.'...C...CC...+CC+...CCC...'++C+'..........+''......C.CCC.C...C..+CCCCCCCC''CC'C'+.C.
+'BB'C+''+  +'+'''B'''BB'''C  C'''BBB'''+CC C+''''''''''C++''''''B'BBB'B'''B''C        ++  + +C'B'
+XHHX CXXC  CXCXXXHXXXHHXXX    XXXHHHXXXC    CXXXXXXXXXX CCXXXXXXHXHHHXHXXXHXX         CC  C C XHX
+CXXC  CC    C CCCXCCCXXCCC    CCCXXXCCC      CCCCCCCCCC   CCCCCCXCXXXCXCCCXCC                 CXC
*.----'--'---'''''''''''''''-''''+'''''---.''''''.'.--''--..-.--''---''-----.'.'--MXZXX=.-A.'+=-'-'-11XZ1Z1Z111111ZAAAAAXZ11+=  --
+'....C..C...CCCCCCCCCCCCCCC.CCC+CCCCCC...'++++++'+'..CC..''.'..CC...CC.....'+'+CC     C'C '+CC.C.+C
++''''B''B'''BBBBBBBBBBBBBBB'BBBC BBBBB'''+CCCCCC+C+''BB''++'+''BB'''BB'''''+C+C        +  +C  'B'C
+CXXXXHXXHXXXHHHHHHHHHHHHHHHXHHH  HHHHHXXXC      C CXXHHXXCCXCXXHHXXXHHXXXXXC C         C  C   XHX
+ CCCCXCCXCCCXXXXXXXXXXXXXXXCXXX  XXXXXCCC          CCXXCC  C CCXXCCCXXCCCCC                   CXC
*...--'''''-'''''''''''''''''''-=--''''''-.....''.'+''---..------------.-.'.---=+++=-==X=..---ZM+.--1))111)1)11111ZXAXXZXAXZ++---
+'''..CCCCC.CCCCCCCCCCCCCCCCCCC.CC.CCCCCC.'''''++'+C++...''............'.'+'...C        C''..C  C'..
++++''BBBBB'BBBBBBBBBBBBBBBBBBB'  'BBBBBB'+++++CC+C CC'''++''''''''''''+'+C+'''          ++''    +''
+CCCXXHHHHHXHHHHHHHHHHHHHHHHHHHX  XHHHHHHXCCCCC  C    XXXCCXXXXXXXXXXXXCXC CXXX          CCXX    CXX
+   CCXXXXXCXXXXXXXXXXXXXXXXXXXC  CXXXXXXC            CCC  CCCCCCCCCCCC C   CCC            CC     CC
*....-''''''''''''''''''''''''''+=-''--'''----''''+.''+'==='--'''''''--'----'''=+===++-=+M-'-'-A=.'-)+))1)11ZZ111XZZX1ZZAXXAZ)+----
+''''.CCCCCCCCCCCCCCCCCCCCCCCCC+CC.CC..CCC....++++C'++C+CCC+..CCCCCCC..C....CCCC          .C.+C C'C.
+++++'BBBBBBBBBBBBBBBBBBBBBBBBBC  'BB''BBB''''CCCC +CC C   C''BBBBBBB''B''''BBB           'B'C   +B'
+CCCCXHHHHHHHHHHHHHHHHHHHHHHHHH   XHHXXHHHXXXX     C        XXHHHHHHHXXHXXXXHHH           XHX    CHX
+    CXXXXXXXXXXXXXXXXXXXXXXXXX   CXXCCXXXCCCC              CCXXXXXXXCCXCCCCXXX           CXC     XC
*....--'''''''''''''''''''''''-=++'-''''''''----.++'''''+=+...+=='-'''''''------M)==+)++1A+.-''------1)1111111111111)ZZAAAAAX1)++
+''''..CCCCCCCCCCCCCCCCCCCCCCC.CCC+.CCCCCCCC....'CC+++++CCC'''CCC+.CCCCCCC......          C'.CC.....C
+++++''BBBBBBBBBBBBBBBBBBBBBBB'   C'BBBBBBBB''''+  CCCCC   +++   C'BBBBBBB''''''           +'BB'''''
+CCCCXXHHHHHHHHHHHHHHHHHHHHHHHX    XHHHHHHHHXXXXC          CCC    XHHHHHHHXXXXXX           CXHHXXXXX
+    CCXXXXXXXXXXXXXXXXXXXXXXXC    CXXXXXXXXCCCC                  CXXXXXXXCCCCCC            CXXCCCCC
*..''..-''''''''''''''''--'----=-MM.'''-'--'''--.''+'+++++++.-+=-=+---------------)==+)ZX)XX.'''--'-=1)111111)1)))11ZZZXAAXAAZ1)=
+''++''.CCCCCCCCCCCCCCCC..C....CC  'CCC.C..CCC..'++C+CCCCCCC'.CCCCC..............C          'CCC..C.C
+++CC++'BBBBBBBBBBBBBBBB''B''''    +BBB'B''BBB''+CC C       +'     ''''''''''''''           +BBB''B'
+CC  CCXHHHHHHHHHHHHHHHHXXHXXXX    CHHHXHXXHHHXXC           CX     XXXXXXXXXXXXXX           CHHHXXHX
+      CXXXXXXXXXXXXXXXXCCXCCCC     XXXCXCCXXXCC             C     CCCCCCCCCCCCCC            XXXCCXC
*..'''.-'''''''''''''''''-'----=MXM''''''----'-'---''+++=++-+.'+++++.....''.+...-.X111)-M11-'''''-'-=1+)11111)1111Z1111ZAAAMAZ1)=
+''+++'.CCCCCCCCCCCCCCCCC.C....C   +CCCCC....C.C...++CCCCCCCC'+CCCCC'''''++'C'''.'     C   CCCCC+.C.C
+++CCC+'BBBBBBBBBBBBBBBBB'B''''    CBBBBB''''B'B'''CC        +C     +++++CC+ +++'+          BBBBC'B'
+CC   CXHHHHHHHHHHHHHHHHHXHXXXX     HHHHHXXXXHXHXXX          C      CCCCC  C CCCXC          HHHH XHX
+      CXXXXXXXXXXXXXXXXXCXCCCC     XXXXXCCCCXCXCCC                             C           XXXX CXC
*'...'.-''''''''''''''''''----.-AXX=----''-----------'++==+==+..+=+=+''''++'++=='-'=-MZA=MM-''''M.'.-A)))111Z111)11)1)1ZZXAAXX1+=- -
++'''+'.CCCCCCCCCCCCCCCCCC....'C   C....CC...........+CCCCCCCC''CCCCC++++CC+CCCC+.+CC   C  .CCCC 'C'.
+C+++C+'BBBBBBBBBBBBBBBBBB''''+     ''''BB'''''''''''C        ++     CCCC  C    C'C        'BBBB +B+'
+ CCC CXHHHHHHHHHHHHHHHHHHXXXXC     XXXXHHXXXXXXXXXXX         CC                 X         XHHHH CHCX
+      CXXXXXXXXXXXXXXXXXXCCCC      CCCCXXCCCCCCCCCCC                            C         CXXXX  X C
*'..'.-'''''''''''''''''''''--.-AXZ=-''--'''------''---..''+='.'+====+++.'''++++.'--.-=-+=''''-+-''-.AZ))11ZZ1Z1ZZ1)11Z1ZZXAXXZ)= - -
++''+'.CCCCCCCCCCCCCCCCCCCCC..'C   C.CC..CCC......CC...''++CC+'+CCCCCCCC'+++CCCC'+..'.CCCCCCCC.CCC+C'
+C++C+'BBBBBBBBBBBBBBBBBBBBB''+     'BB''BBB''''''BB'''++CC  C+C        +CCC    +C''+'    BBBB'  BC +
+ CC CXHHHHHHHHHHHHHHHHHHHHHXXC     XHHXXHHHXXXXXXHHXXXCC     C         C       C XXCX    HHHHX  H  C
+     CXXXXXXXXXXXXXXXXXXXXXCC      CXXCCXXXCCCCCCXXCCC                           CC C    XXXXC  X
*.'''-'--''''''''''''''''''''--=AAX--'---''''---..-''''----...--'''+++=+''+''.''.--''-----''''-X+''X-X-X+)1))111Z1111111)ZXXXXZ)-
+'+++.C..CCCCCCCCCCCCCCCCCCCC..C   C.C...CCCC...''.CCCC....'''..+++CCCCC++C++'++'..++.....CCCC. CC+ C C
++CCC'B''BBBBBBBBBBBBBBBBBBBB''     'B'''BBBB'''++'BBBB''''+++''CCC     CC CC+CC+''CC'''''BBBB'  BC
+C   XHXXHHHHHHHHHHHHHHHHHHHHXX     XHXXXHHHHXXXCCXHHHHXXXXCCCXX             C  CXX  XXXXXHHHHX  H
+    CXCCXXXXXXXXXXXXXXXXXXXXCC     CXCCCXXXXCCC  CXXXXCCCC   CC                 CC  CCCCCXXXXC  X
*..'.---''''''''''''''''''''''-+M-M=-------'''''-----'''------.-..-..'..-''.-...--'''--''''''--1M+'MM---+)11)1)1111111Z11ZXXXXZ)=
+''+'...CCCCCCCCCCCCCCCCCCCCCC.C C C.......CCCCC.....CCC......'.''.''+''.++'.'''..+++..CCCCCC.C  C+  C.C
+++C+'''BBBBBBBBBBBBBBBBBBBBBB'     '''''''BBBBB'''''BBB''''''+'++'++C++'CC+'+++''CCC''BBBBBB'    C   '
+CC CXXXHHHHHHHHHHHHHHHHHHHHHHX     XXXXXXXHHHHHXXXXXHHHXXXXXXCXCCXCC CCX  CXCCCXX   XXHHHHHHX        X
+    CCCXXXXXXXXXXXXXXXXXXXXXXC     CCCCCCCXXXXXCCCCCXXXCCCCCC C  C     C   C   CC   CCXXXXXXC        C
*..'.-.-'''''''''''''''''''''''--=--..--------'''-------'-'---...-...-.-....--.---+'--'-''''.XX+-Z-=A.---)111)1)))1)ZZZZXAXZZX1+-
+''+'.'.CCCCCCCCCCCCCCCCCCCCCCC.CCCC''........CCC.......C.C...'''.'''.'.''''..'...C+..C.CCCC'  CC CC '.C
+++C+'+'BBBBBBBBBBBBBBBBBBBBBBB'    ++''''''''BBB'''''''B'B'''+++'+++'+'++++''+''' C''B'BBBB+        +'
+CC CXCXHHHHHHHHHHHHHHHHHHHHHHHX    CCXXXXXXXXHHHXXXXXXXHXHXXXCCCXCCCXCXCCCCXXCXXX  XXHXHHHHC        CX
+    C CXXXXXXXXXXXXXXXXXXXXXXXC      CCCCCCCCXXXCCCCCCCXCXCCC   C   C C    CC CCC  CCXCXXXX          C
*...+..--''''''''''''''''''''''-==-=----------''-''------''-----.----------..--..'+.-'''-'''=Z='-Z'==--'=+)+)11+))11ZZZXZ1111Z1)=  -
+'''C''..CCCCCCCCCCCCCCCCCCCCCC.CCCC..........CC.CC......CC.....'..........''..''+C'.CCC.CCCC CC. +CC..+
++++ ++''BBBBBBBBBBBBBBBBBBBBBB'    ''''''''''BB'BB''''''BB'''''+''''''''''++''++C +'BBB'BBB   B' C  ''C
+CCC CCXXHHHHHHHHHHHHHHHHHHHHHHX    XXXXXXXXXXHHXHHXXXXXXHHXXXXXCXXXXXXXXXXCCXXCC  CXHHHXHHH   HX    XX
+      CCXXXXXXXXXXXXXXXXXXXXXXC    CCCCCCCCCCXXCXXCCCCCCXXCCCCC CCCCCCCCCC  CC     CXXXCXXX   XC    CC
*'.--..-''''''''''''''''''''''''-'++-'--'--''-'--'''---..---------------------...'.-'''--''''.''+X'--'-M==)))11))))ZXZXX111)11Z)=-
++'..''.CCCCCCCCCCCCCCCCCCCCCCCC.+CC.C..C..CC.C..CCC...''.....................'''+'.CCC..CCC+'CCC C..C.
+C+''++'BBBBBBBBBBBBBBBBBBBBBBBB'C  'B''B''BB'B''BBB'''++'''''''''''''''''''''+++C+'BBB''BBBC+BB  B''B'
+ CXXCCXHHHHHHHHHHHHHHHHHHHHHHHHX   XHXXHXXHHXHXXHHHXXXCCXXXXXXXXXXXXXXXXXXXXXCCC CXHHHXXHHH CHH  HXXHX
+  CC  CXXXXXXXXXXXXXXXXXXXXXXXXC   CXCCXCCXXCXCCXXXCCC  CCCCCCCCCCCCCCCCCCCCC     CXXXCCXXX  XX  XCCXC
*''--.-'''-''''--''''''''''''''''--'-'''''--'-'-'''-'''---..-----------'''-''-----''''''''''''''A=''''-X=+))11)))))1ZZZZ)1Z11111=-
+++..'.CCC.CCCC..CCCCCCCCCCCCCCCC..+.CCCCC..C.C.CCC.CCC...''...........CCC.CC.....CCCCCCCCCCCCCC CCCCC.
+CC''+'BBB'BBBB''BBBBBBBBBBBBBBBB''C'BBBBB''B'B'BBB'BBB'''++'''''''''''BBB'BB'''''BBBBBBBBBBBBBB  BBBB'
+  XXCXHHHXHHHHXXHHHHHHHHHHHHHHHHXX XHHHHHXXHXHXHHHXHHHXXXCCXXXXXXXXXXXHHHXHHXXXXXHHHHHHHHHHHHHH  HHHHX
+  CC CXXXCXXXXCCXXXXXXXXXXXXXXXXCC CXXXXXCCXCXCXXXCXXXCCC  CCCCCCCCCCCXXXCXXCCCCCXXXXXXXXXXXXXX  XXXXC
*.''..-----''''-+-''''''''''''''''--''''''--''''''----'----.'..-''--''''''''''''''''''''''''''''A''''''.1=)1))1)++))1XZZ)1)1ZZZ11-
+'++''.....CCCC.C.CCCCCCCCCCCCCCCC..CCCCCC..CCCCCC....C....'+''.CC..CCCCCCCCCCCCCCCCCCCCCCCCCCCC +CCCCC'
++CC++'''''BBBB' 'BBBBBBBBBBBBBBBB''BBBBBB''BBBBBB''''B''''+C++'BB''BBBBBBBBBBBBBBBBBBBBBBBBBBBB CBBBBB+
+C  CCXXXXXHHHHX XHHHHHHHHHHHHHHHHXXHHHHHHXXHHHHHHXXXXHXXXXC CCXHHXXHHHHHHHHHHHHHHHHHHHHHHHHHHHH  HHHHHC
+     CCCCCXXXXC CXXXXXXXXXXXXXXXXCCXXXXXXCCXXXXXXCCCCXCCCC    CXXCCXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXX
*--..----''''''''M+--'''''''''''''-'+='--''''''''-'''--'''-----''''''''''''''''''''''''''''''''+X''''''-A-+)1 11)))))1+Z11ZZZZZZ)-=--
+..''....++CCCCC+ C..CCCCCCCCCCCCC.+CC+..CCCCCCCC.CCC..CCC.....CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCC.
+''++''''CCBBBBBC  ''BBBBBBBBBBBBB'C  C''BBBBBBBB'BBB''BBB'''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB  BBBBBB'
+XXCCXXXX  HHHHH   XXHHHHHHHHHHHHHX    XXHHHHHHHHXHHHXXHHHXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH  HHHHHHX
+CC  CCCC  XXXXX   CCXXXXXXXXXXXXXC    CCXXXXXXXXCXXXCCXXXCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXC
*-------.X-''''''=A-=-'''-''''---'.MZ-)X-.-''''''''''''''''''''''''''''''''''''''''''''''''''''--'.--'''+ +)1+)11))=+11ZZZZZZZZ11=++=
+.......' CCCCCCCC CC.CCC.CCCC...C'     C'.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'C.CCCC
+'''''''+  BBBBBB    'BBB'BBBB'''B+      +'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB  B+ 'BBB
+XXXXXXXC  HHHHHH    XHHHXHHHHXXXHC      CXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH  HC XHHH
+CCCCCCC   XXXXXX    CXXXCXXXXCCCX        CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  X  CXXX
*---'---+)M'''''''+M-=-'''''''.-'-''1 +))1A'-''''''''''''''''''''''''''''''''''''''''''''''''''A++Z1.'''+=++)11))1))+)1ZZXZZZZX11+++=
+...C...C  CCCCCCCC CC.CCCCCCC'.+.C+       +.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CC  'CCCC
+'''B'''   BBBBBBB    'BBBBBBB+'C'BC       C'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB     +BBB
+XXXHXXX   HHHHHHH    XHHHHHHHCX XH         XHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH     CHHH
+CCCXCCC   XXXXXXX    CXXXXXXX C CX         CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      XXX
*').'---')Z''''''''=M=M.''''''-..'---==)))++Z.''''''--'''''''''''''''''''''''-'''''''''''''''''AM)=)+'''+-==1))ZZ)Z111ZZ1XZZZ1Z1+1)+
++ 'C...+  CCCCCCCCC C 'CCCCCC.''+..C        'CCCCCC..CCCCCCCCCCCCCCCCCCCCCCC.CCCCCCCCCCCCCCCCC     CCCCC
+C +B'''C  BBBBBBBB    +BBBBBB'++C''         +BBBBBB''BBBBBBBBBBBBBBBBBBBBBBB'BBBBBBBBBBBBBBBBB      BBB
+  CHXXX   HHHHHHHH    CHHHHHHXCC XX         CHHHHHHXXHHHHHHHHHHHHHHHHHHHHHHHXHHHHHHHHHHHHHHHHH      HHH
+   XCCC   XXXXXXXX     XXXXXXC   CC          XXXXXXCCXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXX      XXX
*'==----.11''''''''-+--M+-'''''-.---.-)))11)+)A+.--'''''''''''''''''''''''''''''''''''''''''--''A=)+--''=+++)1+)Z11Z1Z1111ZZZ11111Z=
+CCC....'  CCCCCCCC.CCC C.CCCCC.'...'C         C'..CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC..C+   C..CCC
+B  ''''+  BBBBBBBB'     'BBBBB'+'''+           +''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB''BC    ''BB
+H  XXXXC  HHHHHHHHX     XHHHHHXCXXXC           CXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXH     XXHH
+X  CCCC   XXXXXXXXC     CXXXXXC CCC             CCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCX     CCXX
*--+--''-X1-'''''''''+A--+-'''-'-.-''-=1)1111))ZX-=.--'''''''''''''''''''''''''''''''''''''-----+1---1+-=+)))+)1))111))))+)Z11))))X1
+..C..CC.  .CCCCCCCCCC CCC.CCC.C.'.CC.C          CC'..CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.CC..C C.C C.C
+'' ''BB'  'BBBBBBBBB     'BBB'B'+'BB'             +''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'  ''   '   '
+XX XXHHX  XHHHHHHHHH     XHHHXHXCXHHX             CXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHX  XX   X   X
+CC CCXXC  CXXXXXXXXX     CXXXCXC CXXC              CCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC  CC   C   C
*---..''--M''''''''''--A===-''-'''..'''=X1))11)+1ZXAM=+--''''''''''''''''''''''''''''''''''+AX.'-+'.Z+Z==++++++))+))11))++))1Z1ZZ1Z1-
+...''CC.C CCCCCCCCCC.C CCC.CC.CCC''CCCC             CC..CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC  'C.C+'   CC
+'''++BB'  BBBBBBBBBB'     'BB'BBB++BBB                ''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB   +B' C+
+XXXCCHHX  HHHHHHHHHHX     XHHXHHHCCHHH                XXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH   CHX  C
+CCC  XXC  XXXXXXXXXXC     CXXCXXX  XXX                CCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX    XC
*'----'--'-'-'''''''''-AX===-''''''+'''..M))Z1Z1)ZAZAXZXAA'--.-'''''''''''''''''''''''''''-+.-''-=--M1=)A=++-++)=)=)++)=+++)11XX1ZZ)-
+C....+..+.C.CCCCCCCCC.  CCC.CCCCCCC+CC''                 +..'.CCCCCCCCCCCCCCCCCCCCCCCCCCC.C'.CC.CCC
+B''''C''C'B'BBBBBBBBB'     'BBBBBB CBB++                 C''+'BBBBBBBBBBBBBBBBBBBBBBBBBBB' +'BB'
+HXXXX XX XHXHHHHHHHHHX     XHHHHHH  HHCC                  XXCXHHHHHHHHHHHHHHHHHHHHHHHHHHHX CXHHX
+XCCCC CC CXCXXXXXXXXXC     CXXXXXX  XX                    CC CXXXXXXXXXXXXXXXXXXXXXXXXXXXC  CXXC
*-'''--.-'.==='.-.-''''-ZX-==-'''''''=.''=X))1Z1))11ZXAMA1)XXAZAMXXXX.-''''''''''''''''''''-''''-.-'+-1++))+++))++=+++++)+=+1)1111ZZ+
+.CCC..'.+'CCC+'.'.CCCC.  CCC.CCCCCC+C'++C                           '.CCCCCCCCCCCC+CCCCCCC.CCCC.'.+CC
+'BBB''+'C+   C+'+'BBBB'     'BBBBBBC +CC                            +'BBBBBBBBBBBBCBBBBBBB'BBBB'+'C
+XHHHXXCX C    CXCXHHHHX     XHHHHHH  C                              CXHHHHHHHHHHHH HHHHHHHXHHHHXCX
+CXXXCC C       C CXXXXC     CXXXXXX                                  CXXXXXXXXXXXX XXXXXXXCXXXXC C
*''''-..'==M+XA-=''---'--ZA=-+.'''-'''MM-MXAZZ111)1+11XAAX))XX111)++M.-''''''''''''.--'.+'--''''''-=1ZZ1Z1ZZ++++++==++++++=+)111ZZZZ)
+CCCC.''+CC C  CC++...C.C  CCC'CCC.CC+  .                            '.CCCCCCCCCCCC'..C'C+..CCCCCC.C
+BBBB'++C        CC'''B'      +BBB'BBC  '                            +'BBBBBBBBBBBB+''B+ C''BBBBBB'
+HHHHXCC           XXXHX      CHHHXHH   X                            CXHHHHHHHHHHHHCXXHC  XXHHHHHHX
+XXXXC             CCCXC       XXXCXX   C                             CXXXXXXXXXXXX CCX   CCXXXXXXC
*'''''-.+=-M-M-AA+--'-..=XZMM-=-+.-.-'.+'.X-))Z1Z))))+1ZXXZ11ZZ11ZZXM=.---''''-'''''--'A)='''''''''-'==++--A1))+===+==+=)==+)1ZZZZXZ+
+CCCCC.'CCC C C  C..+C''C    CC.C'C'.C'CC' C                         C'...CCCC.CCCCC..C  CCCCCCCCCC.+CCCCCC
+BBBBB'+          ''C ++       ' + +'B+ B+                            +'''BBBB'BBBBB''B   BBBBBBBBB'C
+HHHHHXC          XX  CC       X C CXHC HC                            CXXXHHHHXHHHHHXXH   HHHHHHHHHX
+XXXXXC           CC           C    CX  X                              CCCXXXXCXXXXXCCX   XXXXXXXXXC
*---''''-.'-MZM-M'=--XAA=MZMAA-+M----''-''=M=+)Z1Z1)+==)Z1X11111MAXXM=--''''''''''-''''.-''''''''''''''''..'=X+--+=====+=+=+=+11Z1Z1-
+...CCCC.'+C   C +C..   C     CC ....CC.CCC                          C..CCCCCCCCCC.CCCC'.CCCCCCCCCCCCCCCC''+C
+'''BBBB'+C      C ''            ''''BB'BB                            ''BBBBBBBBBB'BBBB+'BBBBBBBBBBBBBBBB++C
+XXXHHHHXC         XX            XXXXHHXHH                            XXHHHHHHHHHHXHHHHCXHHHHHHHHHHHHHHHHCC
+CCCXXXXC          CC            CCCCXXCXX                            CCXXXXXXXXXXCXXXX CXXXXXXXXXXXXXXXX
*----''''--'=MAAM'.-==+A--AMAAA=-A''-.-''''+= =+)11))))1))ZZ11)X-AA-'-+'----''''''''''''''''''''''''''''''''-+)1+==+++))+)+=))))11))=
+....CCCC..+C    +'.C   CC     CC CC.'.CCCCC                    C  C+.C+....CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.C
+''''BBBB''C     C+'              BB'+'BBBB                         C' C''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'
+XXXXHHHHXX       CX              HHXCXHHHH                          X  XXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHX
+CCCCXXXXCC        C              XXC CXXXX                          C  CCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
*-----'''''--'-AX=---+M==-AMMAMM-Z'''.'-'''-X  =)1+11ZZ1++1))+1---+=MMZ='-'''''''''''''''''''''''''''''''''''-'A)=)+)+))+))++)))))))-
+.....CCCCC..+C  C..C  CCC      C +CC'+.CCC.                   CCCCC   C+C+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.+
+'''''BBBBB''C    ''              CBB+C'BBB'                            C CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'C
+XXXXXHHHHHXX     XX               HHC XHHHX                               HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHX
+CCCCCXXXXXCC     CC               XX  CXXXC                               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
*---'''''''''-.'+'-'-=--.+'+=MMAAAA=''-'-'-'-)  -+)1ZZ11)))++=X=.--XZM-.--''''''''''''''''''''''''''''''''''''-M)+=+=+=+=+=++))1))))-
+...CCCCCCCCC.'+C+.CCC..'C+CC      CCC.+.C.C.                  C'.C   C'..CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.
+'''BBBBBBBBB'+C C'B  ''+ C         BB'C'B'B'                   +'     +''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'
+XXXHHHHHHHHHXC   XH  XXC           HHX XHXHX                   CX     CXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHX
+CCCXXXXXXXXXC    CX  CC            XXC CXCXC                    C      CCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
*'-'''''''''''''''''-''-+Z-'-.+=--X1=''-+..''X--- )ZZ11))))+ ZM-'A=.-''''''''''''''''''''''''''''''''''''''''''.MZ-=----= ==-++))))++
+C.CCCCCCCCCCCCCCCCC.CC.C .C.'CCCC  CCC.C''CC                  .+ C'.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
+B'BBBBBBBBBBBBBBBBB'BB'  'B'+       BB' ++BB                  'C  +'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB+
+HXHHHHHHHHHHHHHHHHHXHHX  XHXC       HHX CCHH                  X   CXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHC
+XCXXXXXXXXXXXXXXXXXCXXC  CXC        XXC   XX                  C    CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
*'-''''''''''''''''''''-M1+'=+-.'+MMM.--.=---Z+-  =1Z11)+)++1'-..'''''''''''''''''''''''''''''''''''''''''''''''-.-Z+=  -----==+==+=+
+C.CCCCCCCCCCCCCCCCCCCC.  C+CC.'+C   '..'C...                +.''CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.'C
+B'BBBBBBBBBBBBBBBBBBBB'   C  '+C    +''+ '''                C'++BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'+
+HXHHHHHHHHHHHHHHHHHHHHX      XC     CXXC XXX                 XCCHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXC
+XCXXXXXXXXXXXXXXXXXXXXC      C       CC  CCC                 C  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
*''''''''''''''''''''''--'--M +X-..+MMMM=-.'-+Z---=1ZZ1)+++1M'--''''''''''''''''''''''''''''''''''''''''''''''''''--1+- -----===+=++=
+CCCCCCCCCCCCCCCCCCCCCC.C+..    C''C    CC'C.C               C..CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.C
+BBBBBBBBBBBBBBBBBBBBBB' C''     ++       +B'                B''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'
+HHHHHHHHHHHHHHHHHHHHHHX  XX     CC       CHX                HXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHX
+XXXXXXXXXXXXXXXXXXXXXXC  CC               XC                XCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
*''''''''''''''''''''''-MA.--X    X'-=A'===-.-)-=-+111)++1X'-''''''''''''''''''''''''''''''''''''''''''''''''''''''-.1+---= =-=====+=
+CCCCCCCCCCCCCCCCCCCCCC.  '..      C.C +C C.'.             +.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.'
+BBBBBBBBBBBBBBBBBBBBBB'  +''      B'  C   '+'             C'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'+
+HHHHHHHHHHHHHHHHHHHHHHX  CXX      HX      XCX              XHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXC
+XXXXXXXXXXXXXXXXXXXXXXC   CC      XC      C C              CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
*''''''''''''''''''''''++=X--'-MZ  ''---'=)AZ-+--- =+)+=)M-'''''''''''''''''''''''''''''''''''''''''''''''''''-'''''''Z=-= -=---=+===
+CCCCCCCCCCCCCCCCCCCCCCC   ..+C    CC...+    C            .CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.CCCCCC+
+BBBBBBBBBBBBBBBBBBBBBB    ''C     BB'''C                 'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'BBBBBBC
+HHHHHHHHHHHHHHHHHHHHHH    XX      HHXXX                  XHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXHHHHHH
+XXXXXXXXXXXXXXXXXXXXXX    CC      XXCCC                  CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXX
*'''''''''''''''''''''''.MX-.-=----'''''--1Z)MX-+  -=)==M'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''-M+-=---=-=-=-+
+CCCCCCCCCCCCCCCCCCCCCCC'  .'.CC...CCCCC.      C         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.
+BBBBBBBBBBBBBBBBBBBBBBB+  '+'  '''BBBBB'                BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'
+HHHHHHHHHHHHHHHHHHHHHHHC  XCX  XXXHHHHHX                HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHX
+XXXXXXXXXXXXXXXXXXXXXXX   C C  CCCXXXXXC                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
*''''''''''''''''''''''''''-+'-=-'''''''--.+X11-=-  =+-1-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''.-''''A=----=--=+==
+CCCCCCCCCCCCCCCCCCCCCCCCCC.C+.C.CCCCCCC.C'C   .C       .CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'.CCCC
+BBBBBBBBBBBBBBBBBBBBBBBBBB' C' 'BBBBBBB' +    '        'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB+'BBBB
+HHHHHHHHHHHHHHHHHHHHHHHHHHX  X XHHHHHHHX C    X        XHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHCXHHHH
+XXXXXXXXXXXXXXXXXXXXXXXXXXC  C CXXXXXXXC      C        CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX CXXXX
*'''''''''''''''''''''''''''+----''''''''''''==M--  -=+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''=-'--'.Z))==--==+==
+CCCCCCCCCCCCCCCCCCCCCCCCCCCC....CCCCCCCCCCC+   C      +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.C..C'
+BBBBBBBBBBBBBBBBBBBBBBBBBBB ''''BBBBBBBBBBBC          CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 'B''B+
+HHHHHHHHHHHHHHHHHHHHHHHHHHH XXXXHHHHHHHHHHH            HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XHXXHC
+XXXXXXXXXXXXXXXXXXXXXXXXXXX CCCCXXXXXXXXXXX            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX CXCCX
*'-+--'''''''''''''''''''----'---+-'''''''''-Z -- - )X='''''''''''''''''''''''''''''''''''''''''''''''''''''''''''.M-'.=-+===-==+++
+C.C..CCCCCCCCCCCCCCCCCCC...C+...C.CCCCCCCCC.         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC' .C'C.
+B' ''BBBBBBBBBBBBBBBBBBB''' C''' 'BBBBBBBBB'          BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB+ 'B+ '
+HX XXHHHHHHHHHHHHHHHHHHHXXX  XXX XHHHHHHHHHX          HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHC XHC X
+XC CCXXXXXXXXXXXXXXXXXXXCCC  CCC CXXXXXXXXXC          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  CX  C
*'''----'''''''''''--'''-.-'.+'-''''''''''''-M-)+- -+X-'''''''''''''''.'''''''''''''''''''''''''''''''''''''''''''.-'''--+ -==+=+++--
+CCC....CCCCCCCCCCC..CCC.'.C'C+.CCCCCCCCCCCC.         .CCCCCCCCCCCCCCC'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'CCCC..
+BBB''''BBBBBBBBBBB''BBB'+'B+ C'BBBBBBBBBBBB'         'BBBBBBBBBBBBBBB+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB+ BBB''
+HHHXXXXHHHHHHHHHHHXXHHHXCXHC  XHHHHHHHHHHHHX         XHHHHHHHHHHHHHHHCHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHC HHHXX
+XXXCCCCXXXXXXXXXXXCCXXXC CX   CXXXXXXXXXXXXC         CXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXCC
*''''''''----'-----.----..-''-+.-''---'''---.MMZ=-== -''''''''''''''''-'''''''''''''''''''''''''''''''''''''''''''--'''''-+=-  ----==
+CCCCCCCC....C.....'....''.CC.C'.CC...CCC...'        CCCCCCCCCCCCCCCCC.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC..CCCCCC
+BBBBBBBB''''B'''''+''''++'BB' +'BB'''BBB'''+         BBBBBBBBBBBBBBBB'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB''BBBBB
+HHHHHHHHXXXXHXXXXXCXXXXCCXHHX CXHHXXXHHHXXXC         HHHHHHHHHHHHHHHHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXHHHHH
+XXXXXXXXCCCCXCCCCC CCCC  CXXC  CXXCCCXXXCCC          XXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCXXXXX
*''''''---.--'..--..-.-.''.''--..---.'---------'M))  +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''-''''''Z+=    ==--
+CCCCCC...'..C''..''.'.'++'CC..''...'+.........+     CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+.CCCCC+
+BBBBBB'''+''B++''++'+'+CC+BB''++'''+C'''''''''C      BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC'BBBBBC
+HHHHHHXXXCXXHCCXXCCXCXC  CHHXXCCXXXC XXXXXXXXX       HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XHHHHH
+XXXXXXCCC CCX  CC  C C    XXCC  CCC  CCCCCCCCC       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX CXXXXX
*'---.--..-..-..''''''.'+'.''---.+..-'.'.-------'-.A+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''-''''''-A1-   --  -
+C...'..''.''.''++++++'+C+'CC...'C''.+'+'.......C.' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.CCCCCC.
+B'''+''++'++'++CCCCCC+C C+BB'''+ ++'C+C+'''''''B'+  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'BBBBBB'
+HXXXCXXCCXCCXCC      C   CHHXXXC CCX C CXXXXXXXHXC  HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXHHHHHHX
+XCCC CC  C  C             XXCCC    C    CCCCCCCXC   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXC
*.-..''.''.......''.+'++''.------'..-.-.'--------'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''---X+-   ----
+'.''++'++'''''''++'C+CC++'......+''.'.'+........CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...
++'++CC+CC+++++++CC+ C  CC+''''''C++'+'+C''''''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'''
+CXCC  C  CCCCCCC  C      CXXXXXX CCXCXC XXXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXX
+ C                        CCCCCC   C C  CCCCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCC
*.''''.'''...''..''''++'+''-------.------+---.---'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''-'-M+      --
+'++++'+++'''++''++++CC+C++.......'......C...'...CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.C.
++CCCC+CCC+++CC++CCCC  C CC'''''''+'''''' '''+'''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'B'
+C    C   CCC  CC          XXXXXXXCXXXXXX XXXCXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXHX
+                          CCCCCCC CCCCCC CCC CCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCXC
*.''+'..'.'.''''.'.'''''+..-.------------='------'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''-''+)
+'++C+''+'+'++++'+'+++++C''.'............C+......CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.CCC
++CC C++C+C+CCCC+C+CCCCC ++'+'''''''''''' C''''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'BB
+C    CC C C    C C      CCXCXXXXXXXXXXXX  XXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXHH
+                          C CCCCCCCCCCCC  CCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCXX
*'''+''++..''+.''++''+'''''...-----------'='---'------''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''--+1  - -
++++C++CC''++C'++CC++C+++++'''...........+C+...+......CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC..C
+CCC CC  ++CC +CC  CC CCCCC+++'''''''''''C C'''C''''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB''
+        CC   C            CCCXXXXXXXXXXX   XXX XXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXX
+                             CCCCCCCCCCC   CCC CCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC
*''+''''+.'''.''.''''++'+='.--------''----==.--.-----''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''--'=  --
+++C++++C'+++'++'++++CC+CC+'........CC....CC'..'.....CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC..+
+CC CCCC +CCC+CC+CCCC  C  C+''''''''BB''''  +''+'''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB''C
+        C   C  C          CXXXXXXXXHHXXXX  CXXCXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXX
+                           CCCCCCCCXXCCCC   CC CCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC
*''+''''+'''''''''''''+'++'.-----------''---+---.----''''-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''-.)  --
+++C++++C+++++++++++++C+CC+'...........CC.CCC...'....CCCC.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+.'
+CC CCCC CCCCCCCCCCCCC C  C+'''''''''''BB'   '''+''''BBBB'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC'+
+                          CXXXXXXXXXXXHHX   XXXCXXXXHHHHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XC
+                           CCCCCCCCCCCXXC   CCC CCCCXXXXCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C
*+''''''+''''''++''+''+'''..----------'''-=M=.--.-''''''''''''''''''''''''''---'--'''''''''''''''''''''''''''''''''''''''''...Z-
+C++++++C++++++CC++C++C+++''..........CCC.C C'..'.CCCCCCCCCCCCCCCCCCCCCCCCCC...C..CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'''
+ CCCCCC CCCCCC  CC CC CCC++''''''''''BBB'   +''+'BBBBBBBBBBBBBBBBBBBBBBBBBB'''B''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB+++
+                         CCXXXXXXXXXXHHHX   CXXCXHHHHHHHHHHHHHHHHHHHHHHHHHHXXXHXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHCCC
+                           CCCCCCCCCCXXXC    CC CXXXXXXXXXXXXXXXXXXXXXXXXXXCCCXCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
*'+''+''+'''++='+'+++'++'+'...--------'-'-=-=+---.''-''''''''''''''''''''''--'''''-''''''''''''''''''''''''''''''''''''''''-.-A  -
++C++C++C+++CCC+C+CCC+CC+C+'''........C.C.CCCC...'CC.CCCCCCCCCCCCCCCCCCCCCC..CCCCC.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.'C
+C CC CC CCC   C C   C  C C+++''''''''B'B'    '''+BB'BBBBBBBBBBBBBBBBBBBBBB''BBBBB'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'+
+                          CCCXXXXXXXXHXHX    XXXCHHXHHHHHHHHHHHHHHHHHHHHHHXXHHHHHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXC
+                             CCCCCCCCXCXC    CCC XXCXXXXXXXXXXXXXXXXXXXXXXCCXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
*''''''+'+''+'++'+'+''++'''...-------'''''+--=.-------''''''''''''''''''''''''---'''''''''''''''''''''''''''''''''''''''''''.+-=  -
+++++++C+C++C+CC+C+C++CC+++'''.......CCCCCCCCC'.......CCCCCCCCCCCCCCCCCCCCCCCC...CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'CC
+CCCCCC C CC C  C C CC  CCC+++'''''''BBBBB    +'''''''BBBBBBBBBBBBBBBBBBBBBBBB'''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB+
+                          CCCXXXXXXXHHHHH    CXXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHC
+                             CCCCCCCXXXXX     CCCCCCCXXXXXXXXXXXXXXXXXXXXXXXXCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
*+'+'''+'''+'++++''++'++''''...--''-'-'''''---'---.--'''''''''''''''''''''''----''''''''''''''''''''''''''''''''''''''''''''+=A- --
+C+C+++C+++C+CCCC++CC+CC++++'''..CC.C.CCCC+CCC+...'..CCCCCCCCCCCCCCCCCCCCCCC....CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+ C CCC CCC C    CC  C  CCCC+++''BB'B'BBBBC   C'''+''BBBBBBBBBBBBBBBBBBBBBBB''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+                           CCCXXHHXHXHHHH     XXXCXXHHHHHHHHHHHHHHHHHHHHHHHXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                              CCXXCXCXXXX     CCC CCXXXXXXXXXXXXXXXXXXXXXXXCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
*'+'''++'+'+'++++'+''++'''.....------'''''-+=-+--..---''''''''''''''''''''-----''''-'''-'''''''''''''''''''''''''''''''''''''=Z--=
++C+++CC+C+C+CCCC+C++CC+++'''''......CCCCC.CCCC..''...CCCCCCCCCCCCCCCCCCCC.....CCCC.CCC.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+C
+C CCC  C C C    C CC  CCC+++++''''''BBBBB'    ''++'''BBBBBBBBBBBBBBBBBBBB'''''BBBB'BBB'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC
+                         CCCCCXXXXXXHHHHHX    XXCCXXXHHHHHHHHHHHHHHHHHHHHXXXXXHHHHXHHHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                              CCCCCCXXXXXC    CC  CCCXXXXXXXXXXXXXXXXXXXXCCCCCXXXXCXXXCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
*++''++++''+++++.''.''+''.......-.--''''''-+--=-------''''''''''''''''''''--'''''---''''''''''''''''''''''-'''''''''''''''''-AA+ -
+CC++CCCC++CCCCC'++'++C++'''''''.'..CCCCCC.CCCC.......CCCCCCCCCCCCCCCCCCCC..CCCCC...CCCCCCCCCCCCCCCCCCCCCC.CCCCCCCCCCCCCCCCC.
+  CC    CC     +CC+CC CC+++++++'+''BBBBBB'    '''''''BBBBBBBBBBBBBBBBBBBB''BBBBB'''BBBBBBBBBBBBBBBBBBBBBB'BBBBBBBBBBBBBBBBB'
+               C  C     CCCCCCCXCXXHHHHHHX    XXXXXXXHHHHHHHHHHHHHHHHHHHHXXHHHHHXXXHHHHHHHHHHHHHHHHHHHHHHXHHHHHHHHHHHHHHHHHX
+                               C CCXXXXXXC    CCCCCCCXXXXXXXXXXXXXXXXXXXXCCXXXXXCCCXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXC
*+''+'''++++''+''+''+''''''......----'-''''.=---------'-''''''''''''''''---'''''--'''''''''''''''''''''''''''''''''''''''''--+1-
+C++C+++CCCC++C++C++C++++++''''''....C.CCCC'CCC.......C.CCCCCCCCCCCCCCCC...CCCCC..CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.CC
+ CC CCC    CC CC CC CCCCCC++++++''''B'BBBB+   '''''''B'BBBBBBBBBBBBBBBB'''BBBBB''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'
+                          CCCCCCXXXXHXHHHHC   XXXXXXXHXHHHHHHHHHHHHHHHHXXXHHHHHXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHX
+                                CCCCXCXXXX    CCCCCCCXCXXXXXXXXXXXXXXXXCCCXXXXXCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
*++'+'++++'++'+'''''+''''''...-.------'''''-+==------''--'''''''''''''''....'''--''''''''''''''''''''-'''''-''''''''''''''')'++-
+CC+C+CCCC+CC+C+++++C++++++'''.'......CCCCC.CCC......CC..CCCCCCCCCCCCCCC''''CCC..CCCCCCCCCCCCCCCCCCCC.CCCCC.CCCCCCCCCCCCCCC +C
+  C C    C  C CCCCC CCCCCC+++'+''''''BBBBB'   ''''''BB''BBBBBBBBBBBBBBB++++BBB''BBBBBBBBBBBBBBBBBBBB'BBBBB'BBBBBBBBBBBBBBB C
+                          CCCXCXXXXXXHHHHHX   XXXXXXHHXXHHHHHHHHHHHHHHHCCCCHHHXXHHHHHHHHHHHHHHHHHHHHXHHHHHXHHHHHHHHHHHHHHH
+                             C CCCCCCXXXXXC   CCCCCCXXCCXXXXXXXXXXXXXXX    XXXCCXXXXXXXXXXXXXXXXXXXXCXXXXXCXXXXXXXXXXXXXXX
*+++++++'+++'+''..''''+''''...-.------'-'''-==''-----''.-'-'''''''''''''+===-'-'''''''''''''-'''''''''----'--'-''''''''''''A'.)+   -
+CCCCCCC+CCC+C++''++++C++++'''.'......C.CCC.CC+C.....CC'.C.CCCCCCCCCCCCCCCCC.C.+CCCCCCCCCCC+.CCCCCCCCC....C..C.CCCCCCCCCCCC C'
+       C   C CC++CCCC CCCC+++'+''''''B'BBB'  CB'''''BB+'B'BBBBBBBBBBBBB    'B'CBBBBBBBBBBBC'BBBBBBBBB''''B''B'BBBBBBBBBBBB B+
+               CC         CCCXCXXXXXXHXHHHX   HXXXXXHHCXHXHHHHHHHHHHHHH    XHX HHHHHHHHHHH XHHHHHHHHHXXXXHXXHXHHHHHHHHHHHH HC
+                             C CCCCCCXCXXXC   XCCCCCXX CXCXXXXXXXXXXXXX    CXC XXXXXXXXXXX CXXXXXXXXXCCCCXCCXCXXXXXXXXXXXX X
*++++++=+++===''''''+++''''.....---------''-'=.'-----'---'-''''''''''''-++'=-'--''''''''''''''''''''---------'--''''''''''-''+=+  -
+CCCCCCCCCCCCC++++++CCC++++'''''.........CC.+C'C.....C...C.CCCCCCCCCCCC.CC+C.C..CCCCCCCCCCCCCCCCCCCC.........C..CCCCCCCCCC.CCCC
+             CCCCCC   CCCC+++++'''''''''BB'C +B'''''B'''B'BBBBBBBBBBBB'  C 'B''BBBBBBBBBBBBBBBBBBBB'''''''''B''BBBBBBBBBB'BB
+                          CCCCCXXXXXXXXXHHX  CHXXXXXHXXXHXHHHHHHHHHHHHX    XHXXHHHHHHHHHHHHHHHHHHHHXXXXXXXXXHXXHHHHHHHHHHXHH
+                               CCCCCCCCCXXC   XCCCCCXCCCXCXXXXXXXXXXXXC    CXCCXXXXXXXXXXXXXXXXXXXXCCCCCCCCCXCCXXXXXXXXXXCXX
*'+++'+'+'++''.'''''''++.'..'..-----------'-+''-----''---'-'-''''''''''-..-''''''''''''''''''''''''---''-------'''''''''''''-'A
++CCC+C+C+CC++'+++++++CC'+''+''...........C.C+C.....CC...C.C.CCCCCCCCCC.''.CCCCCCCCCCCCCCCCCCCCCCCC...CC.......CCCCCCCCCCCCC.+
+C   C C C  CC+CCCCCCC  +C++C++'''''''''''B' CB'''''BB'''B'B'BBBBBBBBBB'++'BBBBBBBBBBBBBBBBBBBBBBBB'''BB'''''''BBBBBBBBBBBBB'C
+             C         C CC CCXXXXXXXXXXXHX  HXXXXXHHXXXHXHXHHHHHHHHHHXCCXHHHHHHHHHHHHHHHHHHHHHHHHXXXHHXXXXXXXHHHHHHHHHHHHHX
+                              CCCCCCCCCCCXC  XCCCCCXXCCCXCXCXXXXXXXXXXC  CXXXXXXXXXXXXXXXXXXXXXXXXCCCXXCCCCCCCXXXXXXXXXXXXXC
*++++'+++'+''''.'''''++'''..'..-------------'-''---''-------'--''''''''----'''''''''''''''''-.'''''''''''------'''''''''''--.A+
+CCCC+CCC+C++++'+++++CC+++''+''.............+.CC...CC.......C..CCCCCCCC....CCCCCCCCCCCCCCCCC.'CCCCCCCCCCC......CCCCCCCCCCC..'
+    C   C CCCC+CCCCC  CCC++C++'''''''''''''C'BB'''BB'''''''B''BBBBBBBB''''BBBBBBBBBBBBBBBBB'+BBBBBBBBBBB''''''BBBBBBBBBBB''+
+              C          CC CCXXXXXXXXXXXXX XHHXXXHHXXXXXXXHXXHHHHHHHHXXXXHHHHHHHHHHHHHHHHHXCHHHHHHHHHHHXXXXXXHHHHHHHHHHHXXC
+                              CCCCCCCCCCCCC CXXCCCXXCCCCCCCXCCXXXXXXXXCCCCXXXXXXXXXXXXXXXXXC XXXXXXXXXXXCCCCCCXXXXXXXXXXXCC
*+='+=++++''''.'''''++''+''.'---.------------''''--'------'-'--''''''''----'''''''''''''''''''-'''''''''''-''-.---'''''-+'-A)==
+CC+CCCCCC++++'+++++CC++C++'+...'............CCCC..C......C.C..CCCCCCCC....CCCCCCCCCCCCCCCCC++.CCCCCCCCCCC.CC.'...CCCCC.C+.
+  C      CCCC+CCCCC  CC CC+C'''+''''''''''''BBBB''B''''''B'B''BBBBBBBB''''BBBBBBBBBBBBBBBBBCC'BBBBBBBBBBB'BB'+'''BBBBB' C'
+             C            C XXXCXXXXXXXXXXXXHHHHXXHXXXXXXHXHXXHHHHHHHHXXXXHHHHHHHHHHHHHHHHH  XHHHHHHHHHHHXHHXCXXXHHHHHX  X
+                            CCC CCCCCCCCCCCCXXXXCCXCCCCCCXCXCCXXXXXXXXCCCCXXXXXXXXXXXXXXXXX  CXXXXXXXXXXXCXXC CCCXXXXXC  C
*=+++='++'+'''+''++''+'++...'.....-----------''-'-'-------'----'''''''''-'-'''''''''''''''''.'.-'''''''''--X.'=A---''''+Z=A=-=---
+CCCCC+CC+C+++C++CC++C+CC'''+'''''...........CC.C.C.......C....CCCCCCCCC.C.CCCCCCCCCCCCCCCCC'+'.CCCCCCCCC.C '+  ...CCCCC C
+     C  C CCC CC  CC C  +++C+++++'''''''''''BB'B'B'''''''B''''BBBBBBBBB'B'BBBBBBBBBBBBBBBBB+C+'BBBBBBBBB'  +C  '''BBBB
+                        CCC CCCCCXXXXXXXXXXXHHXHXHXXXXXXXHXXXXHHHHHHHHHXHXHHHHHHHHHHHHHHHHHC CXHHHHHHHHHX  C   XXXHHHH
+                                 CCCCCCCCCCCXXCXCXCCCCCCCXCCCCXXXXXXXXXCXCXXXXXXXXXXXXXXXXX   CXXXXXXXXXC      CCCXXXX
*+'+++'+'''''+''''''++'++''..'....----------''''''''------'--'''''''''''''''''''''''''''-''-...-''''''''''A)X+ '---'-=-=-- -= =-   -
+C+CCC+C+++++C++++++CC+CC++''+''''..........CCCCCCCC......C..CCCCCCCCCCCCCCCCCCCCCCCCCCC.CC.'''.CCCCCCCCCC     +...C.CC
+ C   C CCCCC CCCCCC  C  CC++C++++''''''''''BBBBBBBB''''''B''BBBBBBBBBBBBBBBBBBBBBBBBBBB'BB'+++'BBBBBBBBBB     C'''B'
+                          CC CCCCXXXXXXXXXXHHHHHHHHXXXXXXHXXHHHHHHHHHHHHHHHHHHHHHHHHHHHXHHXCCCXHHHHHHHHHH      XXXHX
+                                 CCCCCCCCCCXXXXXXXXCCCCCCXCCXXXXXXXXXXXXXXXXXXXXXXXXXXXCXXC   CXXXXXXXXXX      CCCXC
*++++''''+''+''''''++++'''''''.-----------.-'''''---------'--'''''''''''-'''''''''''''''---...-''''''''''''1XX).'.-=1 -    =+--=- --
+CCCC++++C++C++++++CCCC+++++++'...........'.CCCCC.........C..CCCCCCCCCCC.CCCCCCCCCCCCCCC...'''.CCCCCCCCCCCC    '+'CC
+    CCCC CC CCCCCC    CCCCCCC+'''''''''''+'BBBBB'''''''''B''BBBBBBBBBBB'BBBBBBBBBBBBBBB'''+++'BBBBBBBBBBBB    +C+
+                             CXXXXXXXXXXXCXHHHHHXXXXXXXXXHXXHHHHHHHHHHHXHHHHHHHHHHHHHHHXXXCCCXHHHHHHHHHHHH    C C
+                              CCCCCCCCCCC CXXXXXCCCCCCCCCXCCXXXXXXXXXXXCXXXXXXXXXXXXXXXCCC   CXXXXXXXXXXXX
*++'''.'++''+''+''''''''''''...-.---------.-'''''---------''''''''''''''-'''''''''''''''--'..--'''''''-'''- 1.MAZ)=)-    ---- ---- --
+CC+++'+CC++C++C++++++++++++'''.'.........'.CCCCC.........CCCCCCCCCCCCCC.CCCCCCCCCCCCCCC..+''..CCCCCCC.CCC.  '
+  CCC+C  CC CC CCCCCCCCCCCC+++'+'''''''''+'BBBBB'''''''''BBBBBBBBBBBBBB'BBBBBBBBBBBBBBB''C++''BBBBBBB'BBB'  +
+     C                     CCCXCXXXXXXXXXCXHHHHHXXXXXXXXXHHHHHHHHHHHHHHXHHHHHHHHHHHHHHHXX CCXXHHHHHHHXHHHX  C
+                              C CCCCCCCCC CXXXXXCCCCCCCCCXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXCC   CCXXXXXXXCXXXC
*'++'''++'''+'+++++''++++'+''.'..-.------'--'''''-'-------'''''''''''''''''''''''''''''-.''.---'''''''''''Z 1M1)-=--=-  --    -
++CC+++CC+++C+CCCCC++CCCC+C++'+''.'......C..CCCCC.C.......CCCCCCCCCCCCCCCCCCCCCCCCCCCCC.'++'...CCCCCCCCCCC
+C  CCC  CCC C     CC    C CC+C++'+''''''B''BBBBB'B'''''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBB'+CC+'''BBBBBBBBBBB
+                            C CCXCXXXXXXHXXHHHHHXHXXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXC  CXXXHHHHHHHHHHH
+                                C CCCCCCXCCXXXXXCXCCCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC    CCCXXXXXXXXXXX
*.'''++++''++''+''++'++++'''.....---.-----.'''''''''------''''''''''''''''''''''''''''--.....'-''''''''''-Z-)) =======---  -  -
+'+++CCCC++CC++C++CC+CCCC+++'''''...'.....'CCCCCCCCC......CCCCCCCCCCCCCCCCCCCCCCCCCCCC..'''''+.CCCCCCCCCC.
++CCC    CC  CC CC  C    CCC+++++'''+'''''+BBBBBBBBB''''''BBBBBBBBBBBBBBBBBBBBBBBBBBBB''+++++C'BBBBBBBBBB'
+C                          CCCCCXXXCXXXXXCHHHHHHHHHXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXCCCCC XHHHHHHHHHHX
+                                CCC CCCCC XXXXXXXXXCCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC      CXXXXXXXXXXC
*''.++='++''++''+'++++''++'......--.-------'''''--''------'''''''''''''''''-''-''''''-------.'-'''''''''+AAMX++++++=+===   -===
+++'CCC+CC++CC++C+CCCC++CC+''''''..'.......CCCCC..CC......CCCCCCCCCCCCCCCCC.CC.CCCCCC.......'+.CCCCCCCCCC
+CC+   C  CC  CC C    CC  C++++++''+'''''''BBBBB''BB''''''BBBBBBBBBBBBBBBBB'BB'BBBBBB'''''''+C'BBBBBBBBB
+  C                       CCCCCCXXCXXXXXXXHHHHHXXHHXXXXXXHHHHHHHHHHHHHHHHHXHHXHHHHHHXXXXXXXC XHHHHHHHHH
+                                CC CCCCCCCXXXXXCCXXCCCCCCXXXXXXXXXXXXXXXXXCXXCXXXXXXCCCCCCC  CXXXXXXXXX
*...+++'''+'=+++++'++'''''''.....-.--------'''''-'--'-----'''''''''''''-''''''-''--''---...----'''''''--M= ++)))+++===+++ =-----
+'''CCC+++C+CCCCCC+CC+++++++'''''.'........CCCCC.C..C.....CCCCCCCCCCCCC.CCCCCC.CC..CC...'''....CCCCCCC.C
++++   CCC C      C  CCCCCCC+++++'+''''''''BBBBB'B''B'''''BBBBBBBBBBBBB'BBBBBB'BB''BB'''+++''''BBBBBBB'
+CCC                        CCCCCXCXXXXXXXXHHHHHXHXXHXXXXXHHHHHHHHHHHHHXHHHHHHXHHXXHHXXXCCCXXXXHHHHHHHX
+                                C CCCCCCCCXXXXXCXCCXCCCCCXXXXXXXXXXXXXCXXXXXXCXXCCXXCCC   CCCCXXXXXXXC
*''+++++'++++=++'''=+.''''...''.....--..--''''-''--'-------''''''''''-''''------'''-----..-.--.-'''''-M--  -+11Z)))==+=+===- --+- -
+++CCCCC+CCCCCCC+++CC'++++'''++'''''..''..CCCC.CC..C.......CCCCCCCCCC.CCCC......CCC.....''.'..'.CCCCC. ..
+CC     C       CCC  +CCCC+++CC+++++''++''BBBB'BB''B'''''''BBBBBBBBBB'BBBB''''''BBB'''''++'+''+'BBBBB' ''
+                    C    CCC  CCCCCXXCCXXHHHHXHHXXHXXXXXXXHHHHHHHHHHXHHHHXXXXXXHHHXXXXXCCXCXXCXHHHHHX XX
+                                   CC  CCXXXXCXXCCXCCCCCCCXXXXXXXXXXCXXXXCCCCCCXXXCCCCC  C CC CXXXXXC CC
*'+++++++++'''++.'+'''''''.'.......-.--.--''''''''''----.--'''''''''''''''---''''''''''--..--.--''''-'''. -==++1)+)++)++)==- -=----=
++CCCCCCCCC+++CC'+C+++++++'+'''''''.'..'..CCCCCCCCCC....'..CCCCCCCCCCCCCCC...CCCCCCCCCC..''..'..CCCC.CCC'
+C         CCC  +C CCCCCCC+C+++++++'+''+''BBBBBBBBBB''''+''BBBBBBBBBBBBBBB'''BBBBBBBBBB''++''+''BBBB'BBB+
+               C         C CCCCCCCXCXXCXXHHHHHHHHHHXXXXCXXHHHHHHHHHHHHHHHXXXHHHHHHHHHHXXCCXXCXXHHHHXHHHC
+                                  C CC CCXXXXXXXXXXCCCC CCXXXXXXXXXXXXXXXCCCXXXXXXXXXXCC  CC CCXXXXCXXX
*=++=++++++''+'++'+'''''''..........---..-''''''''-'-------''''''''''''''''-'-''''''----.......--''--'''X --==-+))))++=+)++=- ----==
+CCCCCCCCCC++C+CC+C+++++++''''''''''...''.CCCCCCCC.C.......CCCCCCCCCCCCCCCC.C.CCCCCC....'''''''..CC..CCC
+          CC C  C CCCCCCC++++++++++'''++'BBBBBBBB'B'''''''BBBBBBBBBBBBBBBB'B'BBBBBB''''+++++++''BB''BBB
+                         CCCCCCCCCCXXXCCXHHHHHHHHXHXXXXXXXHHHHHHHHHHHHHHHHXHXHHHHHHXXXXCCCCCCCXXHHXXHHH
+                                   CCC  CXXXXXXXXCXCCCCCCCXXXXXXXXXXXXXXXXCXCXXXXXXCCCC       CCXXCCXXX
*=++=++++++''+'++++'.'+''''.......-.---..-'''''''''--------'''''''''''''''''-''''-''----------'''''-'''.  =-=-=+)++)+++)+==-- - =--=
+CCCCCCCCCC++C+CCCC+'+C++++'''''''.'...''.CCCCCCCCC........CCCCCCCCCCCCCCCCC.CCCC.CC..........CCCCC.CCC'
+          CC C    C+C CCCC+++++++'+'''++'BBBBBBBBB''''''''BBBBBBBBBBBBBBBBB'BBBB'BB''''''''''BBBBB'BBB+
+                   C      CCCCCCCXCXXXCCXHHHHHHHHHXXXXXXXXHHHHHHHHHHHHHHHHHXHHHHXHHXXXXXXXXXXHHHHHXHHHC
+                                 C CCC  CXXXXXXXXXCCCCCCCCXXXXXXXXXXXXXXXXXCXXXXCXXCCCCCCCCCCXXXXXCXXX
*+'+=+=+++''+''''''''..''''.'....-...-...-''''-'''--------.'''''''''''''''''''''''----''''''''''''-X.''+  === =)=-=+=++)===  ----- -
+C+CCCCCCC++C++++++++''++++'+''''.'''.'''.CCCC.CCC........'CCCCCCCCCCCCCCCCCCCCCCC....CCCCCCCCCCCC. 'CCC
+ C       CC CCCCCCCC++CCCC+C++++'+++'+++'BBBB'BBB''''''''+BBBBBBBBBBBBBBBBBBBBBBB''''BBBBBBBBBBBB' +BB
+                    CC    C CCCCXCCCXCCCXHHHHXHHHXXXXXXXXCHHHHHHHHHHHHHHHHHHHHHHHXXXXHHHHHHHHHHHHX CHH
+                                C   C   CXXXXCXXXCCCCCCCC XXXXXXXXXXXXXXXXXXXXXXXCCCCXXXXXXXXXXXXC  XX
*-'===+++''''''.'''+'''''..-.'.--...---..''''''-''-------'--''''''''''''''''''''-''--'--.+'--'''''-.---' ===+=++)===++=+))= -   =--
+.+CCCCCC++++++'+++C+++++''.'+'..'''...''CCCCCC.CC.......C..CCCCCCCCCCCCCCCCCCCC.CC..C..'C+..CCCCC.'...+
+'C      CCCCCC+CCC CCCCC++'+C+''+++'''++BBBBBB'BB'''''''B''BBBBBBBBBBBBBBBBBBBB'BB''B''+ C''BBBBB'+'''C
+X             C         CCXC CXXCCCXXXCCHHHHHHXHHXXXXXXXHXXHHHHHHHHHHHHHHHHHHHHXHHXXHXXC  XXHHHHHXCXXX
+C                         C   CC   CCC  XXXXXXCXXCCCCCCCXCCXXXXXXXXXXXXXXXXXXXXCXXCCXCC   CCXXXXXC CCC
*-+===+++'++++++''.''+'''''''...--..---.-'''''------------.-'''''''''''''''''''''''--'==A+1)--'-.-1+--.--+++==++==+==)==1++  -==-  -
+.CCCCCCC+CCCCCC++'++C+++++++'''..''...'.CCCCC............'.CCCCCCCCCCCCCCCCCCCCCCC..+CC    C.C.'C C..'C
+'       C      CC+CC CCCCCCC+++''++'''+'BBBBB''''''''''''+'BBBBBBBBBBBBBBBBBBBBBBB''C       'B'+   ''+
+X                C          CCCXXCCXXXCXHHHHHXXXXXXXXXXXXCXHHHHHHHHHHHHHHHHHHHHHHHXX        XHXC   XXC
+C                              CC  CCC CXXXXXCCCCCCCCCCCC CXXXXXXXXXXXXXXXXXXXXXXXCC        CXC    CC
*-==+=+++++'++'+'''''+'''''''...---..---''''--...''----.-----'-'+=-'''''''''''''''''+=A1 -)XM)MX1+-)MMX=+++++)++=+))++=+++)- -=-
+.CCCCCCCCC+CC+C+++++C+++++++'''...''...CCCC..'''++....'.....C.+CC.CCCCCCCCCCCCCCCCCCC
+'         C  C CCCCC CCCCCCC+++'''++'''BBBB''+++CC''''+'''''B'C  'BBBBBBBBBBBBBBBBB
+X                           CCCXXXCCXXXHHHHXXCCC  XXXXCXXXXXHX   XHHHHHHHHHHHHHHHHH
+C                              CCC  CCCXXXXCC     CCCC CCCCCXC   CXXXXXXXXXXXXXXXXX
*+++++'++'+'+''++''''='.''.'.'.--.---.-'-----'.'++'--'-.-'-..-=Z)-'-'''''''''''''''-.'-M  -'. --=++=+=+==+)+)+==+++++)===))=
+CCCCC+CC+C+C++CC++++C+'++'+'+'..'...'.C.....+'+CC+..C.'.C.''.C  CC.CCCCCCCCCCCCCCC.'+C   CC'
+     C  C C CC  CCCC C+CC+C+C+''+'''+'B'''''C+C  C''B'+'B'++'    B'BBBBBBBBBBBBBBB'+C     B+
+                      C  C C CXXCXXXCXHXXXXX C    XXHXCXHXCCX    HXHHHHHHHHHHHHHHHXC      HC
+                              CC CCC CXCCCCC      CCXC CXC  C    XCXXXXXXXXXXXXXXXC       X
*=+++'''''''''+'''''.'.'.''''....-..-'-----.-----'''''''''-.''.=-''-'''''''''''''''--+M11)'''- --===)++)))))++)))))+=))+1))+-
+CCCC+++++++++C+++++'+'+'++++''''.''.+.....'.....CCCCCCCCC.'CC'C.CC.CCCCCCCCCCCCCCC..C    CCCC
+    CCCCCCCCC CCCCC+C+C+CCCC++++'++'C'''''+'''''BBBBBBBBB'+BB+ 'BB'BBBBBBBBBBBBBBB''     BBB
+                   C C C    CCCCXCCX XXXXXCXXXXXHHHHHHHHHXCHHC XHHXHHHHHHHHHHHHHHHXX     HHH
+                                C  C CCCCC CCCCCXXXXXXXXXC XX  CXXCXXXXXXXXXXXXXXXCC     XXX
*==++'++'''+'++++'''..'..''.'''....=+---'--------'''-''''''''''''---''''''''''''''-++A==M'''--=Z==--=+++)+++)+++++)=+)++)++)+-
+CCCC+CC+++C+CCCC+++''+''++'+++''''CCC..C........CCC.CCCCCCCCCCCC...CCCCCCCCCCCCCC.CC    CCC..C
+    C  CCC C    CCC++C++CC+CCC++++   ''B''''''''BBB'BBBBBBBBBBBB'''BBBBBBBBBBBBBB'      BBB''
+                   CC CC  C   CCCC   XXHXXXXXXXXHHHXHHHHHHHHHHHHXXXHHHHHHHHHHHHHHX      HHHXX
+                                     CCXCCCCCCCCXXXCXXXXXXXXXXXXCCCXXXXXXXXXXXXXXC      XXXCC
*+=++++=''''+'''''..'.....'.+'..'''=-''-------'-'-'''''''--'-'''--'''''''''''''''-=XX=+-'''''''-'A)   -++)+)1++)+++=)+++)++++=
+CCCCCCC++++C+++++''+'''''+'C+''+++CC+C.......C.C.CCCCCCC..C.CCC..CCCCCCCCCCCCCCC.C    .CCCCCCC.+
+       CCCC CCCCC++C+++++C+ C++CCC  CB'''''''B'B'BBBBBBB''B'BBB''BBBBBBBBBBBBBBB'     'BBBBBBB'C
+                 CC CCCCC C  CC      HXXXXXXXHXHXHHHHHHHXXHXHHHXXHHHHHHHHHHHHHHHX     XHHHHHHHX
+                                     XCCCCCCCXCXCXXXXXXXCCXCXXXCCXXXXXXXXXXXXXXXC     CXXXXXXXC
*==+'+++'+'+'''..'..'.'......=-.''+Z=''-----'''''''''''------'--'''''''''''''''''++X- =''''''''''-.M-  -==+)++=++)))=++=++==+=
+CCC+CCC+C+C+++''+''+'+''''''CC'++C CCC.....CCCCCCCCCCC......C..CCCCCCCCCCCCCCCCCCC   CCCCCCCCCCC.'
+   C   C C CCC++C++C+C++++++  +CC   BB'''''BBBBBBBBBBB''''''B''BBBBBBBBBBBBBBBBB      BBBBBBBBBB'+
+              CC CC C CCCCCC  C     HHXXXXXHHHHHHHHHHHXXXXXXHXXHHHHHHHHHHHHHHHHH      HHHHHHHHHHXC
+                                    XXCCCCCXXXXXXXXXXXCCCCCCXCCXXXXXXXXXXXXXXXXX      XXXXXXXXXXC
*+''++'+'''''''..'....'......'XM+'+A+------'-''''''-----''''''''''''''''-'--''''''=+ ='''''''''''''-=1   -+))=++))))1))++)++=++=-
+C++CC+C+++++++''+''''+''''''+  C+C C......C.CCCCCC.....CCCCCCCCCCCCCCCC.C..CCCCC+C  CCCCCCCCCCCCCC.C
+ CC  C CCCCCCC++C++++C++++++C   C   ''''''B'BBBBBB'''''BBBBBBBBBBBBBBBB'B''BBBBBC    BBBBBBBBBBBBB'
+              CC CCCC CCCCCC        XXXXXXHXHHHHHHXXXXXHHHHHHHHHHHHHHHHXHXXHHHHH     HHHHHHHHHHHHHX
+                                    CCCCCCXCXXXXXXCCCCCXXXXXXXXXXXXXXXXCXCCXXXXX     XXXXXXXXXXXXXC
*+'+++++'''''''..'........-..'MAA==M+-----''''-''''.=AM+'--''--------------'''--.+-A''''''''''''''''-.X+- ==+==+)++)+)++++==+=))=
+C+CCCCC+++++++''+''''''''.''+   CC C.....CCCC.CCCC'C  C+..CC..............CCC..'CC +CCCCCCCCCCCCCCC.'
+ C     CCCCCCC++C++++++++'++C       '''''BBBB'BBBB+    C''BB''''''''''''''BBB''+   CBBBBBBBBBBBBBBB'+
+              CC CCCCCCCCXCC        XXXXXHHHHXHHHHC     XXHHXXXXXXXXXXXXXXHHHXXC    HHHHHHHHHHHHHHHXC
+                         C          CCCCCXXXXCXXXX      CCXXCCCCCCCCCCCCCCXXXCC     XXXXXXXXXXXXXXXC
*++++++''+'''''...........-...+MZX++-''''''''''--+1=- -  Z-.-------''-''''''''-----'''''''''''''''''''.-M= -+=-+)+++)+1++)++++)++-
+CCCCCC++C+++++'''''''''''.'''C   CC.CCCCCCCCCC..C        C'.......CC.CCCCCCCC.....CCCCCCCCCCCCCCCCCCC'C
+      CC CCCCC+++++++++++'+++      'BBBBBBBBBB''          +'''''''BB'BBBBBBBB'''''BBBBBBBBBBBBBBBBBBB+
+              CCCCCCCCCCCXCCC      XHHHHHHHHHHXX          CXXXXXXXHHXHHHHHHHHXXXXXHHHHHHHHHHHHHHHHHHHC
+                         C         CXXXXXXXXXXCC           CCCCCCCXXCXXXXXXXXCCCCCXXXXXXXXXXXXXXXXXXX
*+='+''''+'''.'..'..''.....-...=XA-'''''''''''-M)   --      +Z-.-'''''''''-'---'--'''''''''''''''''''''''+)-=- -==+))+)+)+1+=+)=++-
+CC+C++++C+++'+''+''++'''''.'''C  .CCCCCCCCCCC.               C'.CCCCCCCCC.C...C..CCCCCCCCCCCCCCCCCCCCC+CC
+  C CCCC CCC+C++C++CC+++++'+++   'BBBBBBBBBBB'                +'BBBBBBBBB'B'''B''BBBBBBBBBBBBBBBBBBBBBCB
+            C CC CC  CCCCCXCCC   XHHHHHHHHHHHX                CXHHHHHHHHHXHXXXHXXHHHHHHHHHHHHHHHHHHHHH H
+                          C      CXXXXXXXXXXXC                 CXXXXXXXXXCXCCCXCCXXXXXXXXXXXXXXXXXXXXX X
*+++++++''++'''..........'......=M-''''''''-'=X=-   --           X+------''''''''''''''''''''''''''''''''.'-+-=-==++)))+++)+)+++==-
+CCCCCCC++CC+++''''''''''+''''''C .CCCCCCCC.+C                    C......CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'+C
+       CC  CCC++++++++++C++++++  'BBBBBBBB'C                      ''''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB+C
+              CCCCCCCCCC CCCCCC  XHHHHHHHHX                       XXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHC
+                                 CXXXXXXXXC                       CCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
*++''+++''''''.'..............-.'-''-----+MZ+==+==  -              M.---------''-''''''''''''''''''''''''''''-Z= =++++))=)==)++++++
+CC++CCC++++++'+''''''''''''''.'+.CC.....C                          '.........CC.CCCCCCCCCCCCCCCCCCCCCCCCCCC+C
+  CC   CCCCCC+C++++++++++++++'+C'BB'''''                           +'''''''''BB'BBBBBBBBBBBBBBBBBBBBBBBBBBBC
+             C CCCCCCCCCCCCCCXC XHHXXXXX                           CXXXXXXXXXHHXHHHHHHHHHHHHHHHHHHHHHHHHHHH
+                             C  CXXCCCCC                            CCCCCCCCCXXCXXXXXXXXXXXXXXXXXXXXXXXXXXX
*='''++++''''.........-.--.----------.-+X+- ===+--  -               1=---'----...------'''''''''''''''''''''''-MX)--)=+++++=++++=++=
+C+++CCCC++++'''''''''.'..'..........'.C                             C...C....'''......CCCCCCCCCCCCCCCCCCCCCCC.
+ CCC    CCCC+++++++++'+''+''''''''''+'                               '''B''''+++''''''BBBBBBBBBBBBBBBBBBBBBBB'
+            CCCCCCCCCXCXXCXXXXXXXXXXCX                               XXXHXXXXCCCXXXXXXHHHHHHHHHHHHHHHHHHHHHHHX
+                     C CC CCCCCCCCCC C                               CCCXCCCC   CCCCCCXXXXXXXXXXXXXXXXXXXXXXXC
*+=++'''+'''.''.'..'...--..---------.=X=--- ==+====                  -Z'-''''--.--...'--'''''''''''''''''''''''''-M=-=========)+=+++-
+CCCC+++C+++'++'+''+'''..''.........'C                                 +.CCCC..'..'''+..CCCCCCCCCCCCCCCCCCCCCCCCC.
+    CCC CCC+CC+C++C+++''++'''''''''+                                  C'BBBB''+''+++C''BBBBBBBBBBBBBBBBBBBBBBBBB'
+           C  C CC CCCXXCCXXXXXXXXXC                                   XHHHHXXCXXCCC XXHHHHHHHHHHHHHHHHHHHHHHHHHX
+                      CC  CCCCCCCCC                                    CXXXXCC CC    CCXXXXXXXXXXXXXXXXXXXXXXXXXC
*+'+''''+''''.'.-....-.----------+MZ+-=++ -+)=+)++=                  +==1M+--'''-------------'''''''''''''''''''''-.+1--==+=+=+=+===+
+C+C++++C++++'+'.''''.'..........C                                        C..CCC.............CCCCCCCCCCCCCCCCCCCCC.'C
+ C CCCC CCCC+C+'++++'+''''''''''                                          ''BBB'''''''''''''BBBBBBBBBBBBBBBBBBBBB'+
+            C CXCCCCXCXXXXXXXXXX                                          XXHHHXXXXXXXXXXXXXHHHHHHHHHHHHHHHHHHHHHXC
+               C    C CCCCCCCCCC                                          CCXXXCCCCCCCCCCCCCXXXXXXXXXXXXXXXXXXXXXC
*+'++''''.'.'.......-..-.-------=1=----=+--+==)))+-                  ))=+-+X=--'''''-----.-..--'-'''''''''''''''''''''A1= ====-====+=
+C+CC++++'+'+'''''''.''.'.......C                                           C..CCCCC.....'.''..C.CCCCCCCCCCCCCCCCCCCC+
+ C  CCCC+C+C+++++++'++'+'''''''                                             ''BBBBB'''''+'++''B'BBBBBBBBBBBBBBBBBBBBC
+        C C CCCCCCCXCCXCXXXXXXX                                             XXHHHHHXXXXXCXCCXXHXHHHHHHHHHHHHHHHHHHHH
+                   C  C CCCCCCC                                             CCXXXXXCCCCC C  CCXCXXXXXXXXXXXXXXXXXXXX
*++++''+'''.......-.-.--..----'-+--=-+===-=+-=)+)=                   +++++==-)+--'''''-'--------'--'''''''''''''''''''---1++=====-===
+CCCC++C+++'''''''.'.'..''....C.                                              C..CCCCC.C........C..CCCCCCCCCCCCCCCCCCC..C
+    CC CCC+++++++'+'+''++''''B'                                               ''BBBBB'B''''''''B''BBBBBBBBBBBBBBBBBBB''
+          CCCCCCCXCXCXXCCXXXXHX                                               XXHHHHHXHXXXXXXXXHXXHHHHHHHHHHHHHHHHHHHXX
+                 C C CC  CCCCXC                                               CCXXXXXCXCCCCCCCCXCCXXXXXXXXXXXXXXXXXXXCC
*+''+'+''''......-.-..-------'-+=-=-=+-=+-- ==++==                  ==+=+===- =A+----'-''-'---------''-'''''''''''''''''''-.+AZ)= --=
+C++C+C++++''''''.'.''.......C.C                                                C....C.CC.C.........CC.CCCCCCCCCCCCCCCCCCC.'C
+ CC C CCCC++++++'+'++'''''''B'                                                  ''''B'BB'B'''''''''BB'BBBBBBBBBBBBBBBBBBB'+
+          CCCCCCXCXCCXXXXXXXHX                                                  XXXXHXHHXHXXXXXXXXXHHXHHHHHHHHHHHHHHHHHHHXC
+                C C  CCCCCCCXC                                                  CCCCXCXXCXCCCCCCCCCXXCXXXXXXXXXXXXXXXXXXXC
*++'''''''''.''.'-..--.------'-X)+==-=====- )+++=-                  ))++++=+-=  +-'..-----'---------'-''''''''''''''''''''''''''+Z)==
+CC+++++++++'++'+.''..'......C.                                                  C+''.....C.........C.CCCCCCCCCCCCCCCCCCCCCCCCCCC
+  CCCCCCCCC+CC+C'++''+''''''B'                                                   C++'''''B'''''''''B'BBBBBBBBBBBBBBBBBBBBBBBBBB
+           C  C XCCXXCXXXXXXHX                                                    CCXXXXXHXXXXXXXXXHXHHHHHHHHHHHHHHHHHHHHHHHHHH
+                C  CC CCCCCCXC                                                      CCCCCXCCCCCCCCCXCXXXXXXXXXXXXXXXXXXXXXXXXXX
*+++'+''''.'....'...----------==))+=====-=-=)+)++-                  )+++++=+==-  -Z+..'..----------------'-''''''-'''''''''''''''-.M)
+CCC+C++++'+''''+'''..........C                                                    C''+''................C.CCCCCC.CCCCCCCCCCCCCCC.'
+   C CCCC+C++++C+++''''''''''                                                      ++C++''''''''''''''''B'BBBBBB'BBBBBBBBBBBBBBB'+
+         C CCCC CCCXXXXXXXXXX                                                      CC CCXXXXXXXXXXXXXXXXHXHHHHHHXHHHHHHHHHHHHHHHXC
+                   CCCCCCCCCC                                                           CCCCCCCCCCCCCCCCXCXXXXXXCXXXXXXXXXXXXXXXC
*+=+'''''''......'...--------'=))+++=-==)==+1+++=                   )+)+)+++++==   =M.--'''..'.--.-.----------''-'''''''''''''-'----.
+CCC+++++++''''''+'''........CC                                                      '..+++''+'..'.'..........CC.CCCCCCCCCCCCC.C....'
+   CCCCCCC++++++C+++''''''''B                                                       +''CCC++C+''+'+''''''''''BB'BBBBBBBBBBBBB'B''''+
+          CCCCCC CCCXXXXXXXXH                                                       CXX   CC CXXCXCXXXXXXXXXXHHXHHHHHHHHHHHHHXHXXXXC
+                    CCCCCCCCX                                                        CC       CC C CCCCCCCCCCXXCXXXXXXXXXXXXXCXCCCC
*+'++=+''''..'.'...'--------'-=-+++++-++)==)+=)++                  +)1)+))=+++=-     +--'-.+-='.-''...---------'''''''''''-'------'''
+C+CCCC++++''+'+'''+........C.C                                                       C.C.'CCC+'.++'''.........CCCCCCCCCCC.C......CCC
+ C    CCCC++C+C+++C''''''''B'                                                         'B'+   C+'CC+++'''''''''BBBBBBBBBBB'B''''''BBB
+          CC C CCC XXXXXXXXHX                                                         XHXC    CX  CCCXXXXXXXXXHHHHHHHHHHHXHXXXXXXHHH
+                   CCCCCCCCXC                                                         CXC      C     CCCCCCCCCXXXXXXXXXXXCXCCCCCCXXX
*++++'''.....''.'-.-----'-'-''-+11+)=+=+= =++))+=                  +))+)))++++==---   -A.----.''=Z=--------'-'''''''''''''''-''---'''
+CCCC+++'''''++'+.'.....C.C.CCC                                                         '....'++C C........C.CCCCCCCCCCCCCCC.CC...CCC
+    CCC+++++CC+C'+'''''B'B'BB                                                          +''''+CC   ''''''''B'BBBBBBBBBBBBBBB'BB'''BBB
+       CCCCC  C XCXXXXXHXHXHH                                                          CXXXXC     XXXXXXXXHXHHHHHHHHHHHHHHHXHHXXXHHH
+                C CCCCCXCXCXX                                                           CCCC      CCCCCCCCXCXXXXXXXXXXXXXXXCXXCCCXXX
*+++''+'.'.'.'''..-.---------M1111)+)+=++--=+++=-                  ++)++++)++=-- -=ZM--+-''''''-.-='----''''''''''''''''''''''---'---
+CCC++C+'+'+'+++''.'.........                                                        CCC.CCCCCC.'CC+....CCCCCCCCCCCCCCCCCCCCCC...C...
+   CC C+C+C+CCC++'+'''''''''                                                           'BBBBBB'+  C''''BBBBBBBBBBBBBBBBBBBBBB'''B'''
+       C C C   CCXCXXXXXXXXX                                                           XHHHHHHXC   XXXXHHHHHHHHHHHHHHHHHHHHHHXXXHXXX
+                 C CCCCCCCCC                                                           CXXXXXXC    CCCCXXXXXXXXXXXXXXXXXXXXXXCCCXCCC
*=++''''.....'....----------X))1))+++=++++===+-=                  -++)++++-=+==)Z-'-'''''''''''''-''-'''''-''''''-'''''''''''--------
+CCC++++'''''+''''..........                                                     C+.CCCCCCCCCCCCC.CC.CCCCC.CCCCCC.CCCCCCCCCCC........
+   CCCC+++++C++++''''''''''                                                      C'BBBBBBBBBBBBB'BB'BBBBB'BBBBBB'BBBBBBBBBBB''''''''
+       CCCCC CCCCXXXXXXXXXX                                                       XHHHHHHHHHHHHHXHHXHHHHHXHHHHHHXHHHHHHHHHHHXXXXXXXX
+                 CCCCCCCCCC                                                       CXXXXXXXXXXXXXCXXCXXXXXCXXXXXXCXXXXXXXXXXXCCCCCCCC
*+=+++'''.'..''..---.-'..''-A))))1++=+=-= ==----                  ==-)==---)X-+-'''''''''''''''''''''''''-..-''-----'++''''---'-----.
+CCCCC+++'+''++''...'.+''CC.                                                 CC.CCCCCCCCCCCCCCCCCCCCCCCCC.''.CC.....+ CCCCC...C.....'
+     CCC+C++CC++'''+'C++BB'                                                   'BBBBBBBBBBBBBBBBBBBBBBBBB'++'BB'''''C  BBBB'''B'''''+
+        C CC  CCXXXCX CCHHX                                                   XHHHHHHHHHHHHHHHHHHHHHHHHHXCCXHHXXXXX   HHHHXXXHXXXXXC
+                CCC C   XXC                                                   CXXXXXXXXXXXXXXXXXXXXXXXXXC  CXXCCCCC   XXXXCCCXCCCCC
*++'+'+..''...'......--''''')+)11Z111)+=======++-                ==+++++)1X''''--''''''''''''''''''''--'''---'------'''''---'--------
+CC+C+C''++'''+''''''..CCCC+                                               +CCC..CCCCCCCCCCCCCCCCCCCC..CCC...C......CCCCC...C........
+  C C ++CC+++C++++++''BBBBC                                               CBBB''BBBBBBBBBBBBBBBBBBBB''BBB'''B''''''BBBBB'''B''''''''
+      CC  CCC CCCCCCXXHHHH                                                 HHHXXHHHHHHHHHHHHHHHHHHHHXXHHHXXXHXXXXXXHHHHHXXXHXXXXXXXX
+                    CCXXXX                                                 XXXCCXXXXXXXXXXXXXXXXXXXXCCXXXCCCXCCCCCCXXXXXCCCXCCCCCCCC
*+++'''.'..'...'...--''''''+ZZZZXZ111)++==-==-=-               XAAM===++..-''''''''''''''''''''''''''--'''''-------------------''--''
+CCC+++'+''+'''+'''..CCCCCCC                                       CCCCC''.CCCCCCCCCCCCCCCCCCCCCCCCCC..CCCCC...................CC..CC
+   CCC+C++C+++C+++''BBBBBB                                             ++'BBBBBBBBBBBBBBBBBBBBBBBBBB''BBBBB'''''''''''''''''''BB''BB
+      C CC CCC CCCXXHHHHHH                                             CCXHHHHHHHHHHHHHHHHHHHHHHHHHHXXHHHHHXXXXXXXXXXXXXXXXXXXHHXXHH
+                  CCXXXXXX                                               CXXXXXXXXXXXXXXXXXXXXXXXXXXCCXXXXXCCCCCCCCCCCCCCCCCCCXXCCXX
*+++'+''.'.'.....-''''----'-)AAM==+'=MZXZ)=+===   -          ='-'-''''''''''''''''''''''''''''''''''''''''''-------------.--'''-'--''
+CCC+C++'+'+'''''.CCCC....CC    CCC+C                         +.C.CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC.............'..CCC.C..CC
+   C CC+C+C+++++'BBBB''''B        C                          C'B'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'''''''''''''+''BBB'B''BB
+       C C CCCCCXHHHHXXXXH                                    XHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXXXXXXXXXXXXCXXHHHXHXXHH
+                CXXXXCCCCX                                    CXCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCCCCCCCCCCCC CCXXXCXCCXX
*'+'++...'.+.''.'''-------''-'-+-XM+'-''''-=X+- - +-         M'''''''''''''''-''''''''''''''''''''''''''''----.-.-..--..'+-'''-------
++C+CC'''+'C'++'CCC.......CC.C.CC  C+CCCCC.C                  CCCCCCCCCCCCCCC.CCCCCCCCCCCCCCCCCCCCCCCCCCCC....'.'.''..''+C.CCC.......
+C C  +++C+ +CC+BBB'''''''BB'B'     C BBBB'                   BBBBBBBBBBBBBBB'BBBBBBBBBBBBBBBBBBBBBBBBBBBB''''+'+'++''++C 'BBB'''''''
+     CCC C C  CHHHXXXXXXXHHXHX       HHHHX                   HHHHHHHHHHHHHHHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXXXCXCXCCXXCC  XHHHXXXXXXX
+               XXXCCCCCCCXXCXC       XXXXC                   XXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCCC C C  CC    CXXXCCCCCCC
*'+++'.-'''..--''-..-.---'''''''-.+AAX-+--.''-.+M+-=1)      1--''''''''''''''''-'''''''''''''''''''''''''--.'''+='+-M-=M--+-''-''----
++CCC+'.+++''..CC.''.'...CCCCCCC.'C   CC..'CC.'C C.C         ..CCCCCCCCCCCCCCCC.CCCCCCCCCCCCCCCCCCCCCCCCC..'+++CC+CC CC CCC.CC.CC....
+C   C+'CCC++''BB'++'+'''BBBBBBB'+      ''+BB'+   '          ''BBBBBBBBBBBBBBBB'BBBBBBBBBBBBBBBBBBBBBBBBB''+CCC  C         'BB'BB''''
+     CX   CCXXHHXCCXCXXXHHHHHHHXC      XXCHHXC   X          XXHHHHHHHHHHHHHHHHXHHHHHHHHHHHHHHHHHHHHHHHHHXXC               XHHXHHXXXX
+      C     CCXXC  C CCCXXXXXXXC       CC XXC    C          CCXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXXCC                CXXCXXCCCC
*'+''...+''.-'--.....'.-''-'-''-'''-.'++.++-''----'---'MMM+---'--'''''''''''''''-''''''''''-'''''''''''-++-AXZXZZXXXXM-M-=--.'+'-----
++C++'''C++'.C..'''''+'.CC.C.CC.CCC.'+CC'CC.CC....C...+   C...C..CCCCCCCCCCCCCCC.CCCCCCCCCC.CCCCCCCCCCC.CCC           C CCCC'CC+.....
+C CC+++ CC+'B''+++++C+'BB'B'BB'BBB'+C  +  'BB''''B'''C    '''B''BBBBBBBBBBBBBBB'BBBBBBBBBB'BBBBBBBBBBB'                    +B C'''''
+    CCC   CXHXXCCCCC CXHHXHXHHXHHHXC   C  XHHXXXXHXXX     XXXHXXHHHHHHHHHHHHHHHXHHHHHHHHHHXHHHHHHHHHHHX                    CH  XXXXX
+           CXCC       CXXCXCXXCXXXC       CXXCCCCXCCC     CCCXCCXXXXXXXXXXXXXXXCXXXXXXXXXXCXXXXXXXXXXXC                     X  CCCCC
*'++'''++'.-'--..--...--'-------'-'-'''''--''-.-----'---''-------'''''''''''''-''''''''''''''''''''''''''---.''+''=+++=.+''MM-'+'----
++CC+++CC+'.C..''..'''..C.......C.C.CCCCC..CC.'.....C...CC.......CCCCCCCCCCCCC.CCCCCCCCCCCCCCCCCCCCCCCCCC...'++C++CCCCC'C++  .+C+....
+C  CCC  C+'B''++''+++''B'''''''B'B'BBBBB''BB'+'''''B'''BB'''''''BBBBBBBBBBBBB'BBBBBBBBBBBBBBBBBBBBBBBBBB'''+CC CC     + CC  'C C''''
+         CXHXXCCXXCCCXXHXXXXXXXHXHXHHHHHXXHHXCXXXXXHXXXHHXXXXXXXHHHHHHHHHHHHHXHHHHHHHHHHHHHHHHHHHHHHHHHHXXXC          C     X   XXXX
+          CXCC  CC   CCXCCCCCCCXCXCXXXXXCCXXC CCCCCXCCCXXCCCCCCCXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXXXCCC                 C   CCCC
*'''+''++-''-.-'-.+'..---------'-'--''-'----'-.---.---..'--------'''''''''''''-'-''''''''''-'''-'''''''''''''-'+++---'.'+=+-Z'--'=---
++++C++CC.CC.'.+.'C+''.........C.C..CC.C....C.'...'...''C........CCCCCCCCCCCCC.C.CCCCCCCCCC.CCC.CCCCCCCCCCCCC.+CCCCCC+'+CCCC +..+C...
+CCC CC  'BB'+'C'+ C++'''''''''B'B''BB'B''''B'+'''+'''++B''''''''BBBBBBBBBBBBB'B'BBBBBBBBBB'BBB'BBBBBBBBBBBBB'C      C+C     C''C '''
+        XHHXCX XC  CCXXXXXXXXXHXHXXHHXHXXXXHXCXXXCXXXCCHXXXXXXXXHHHHHHHHHHHHHXHXHHHHHHHHHHXHHHXHHHHHHHHHHHHHX        C       XX  XXX
+        CXXC C C     CCCCCCCCCXCXCCXXCXCCCCXC CCC CCC  XCCCCCCCCXXXXXXXXXXXXXCXCXXXXXXXXXXCXXXCXXXXXXXXXXXXXC                CC  CCC
*++'+'''-'-...-..''..-----.------'--''''-.----.--'-----.--'-----''''''''''''''-'''''''-''''''-'''''''''''''''-=+''=-=.''---++'...='--
+CC+C+++.C.'''.''++''.....'......C..CCCC.'....'..C.....'..C.....CCCCCCCCCCCCCC.CCCCCCC.CCCCCC.CCCCCCCCCCCCCCC.CC++CCC'CC...CC+'''C+..
+  C CCC'B'+++'++CC++'''''+''''''B''BBBB'+''''+''B'''''+''B'''''BBBBBBBBBBBBBB'BBBBBBB'BBBBBB'BBBBBBBBBBBBBBB'  CC   +BB'''  C+++ C''
+       XHXCCCXCC  CCXXXXXCXXXXXXHXXHHHHXCXXXXCXXHXXXXXCXXHXXXXXHHHHHHHHHHHHHHXHHHHHHHXHHHHHHXHHHHHHHHHHHHHHHX       CHHXXX   CCC  XX
+       CXC   C      CCCCC CCCCCCXCCXXXXC CCCC CCXCCCCC CCXCCCCCXXXXXXXXXXXXXXCXXXXXXXCXXXXXXCXXXXXXXXXXXXXXXC        XXCCC        CC
*+++'+'---...-.''+'.-'-'-'.------'--'----..---.----.--.'.-----.-''''''''''''''-''''''-'''''''''''''''''''''''-1)M+AA+.'''''-'--.---.-
+CCC+C+...'''.'++C+'.C.C.+'......C..C....''...'....'..'+'.....'.CCCCCCCCCCCCCC.CCCCCC.CCCCCCCCCCCCCCCCCCCCCCC.   C  C'CCCCC.C..'..C'.
+   C C'''+++'+CC C+'B'B'C+''''''B''B''''++'''+''''+''+C+'''''+'BBBBBBBBBBBBBB'BBBBBB'BBBBBBBBBBBBBBBBBBBBBBB'       +BBBBB'B''+'' +'
+      XXXCCCXC    CXHXHX CXXXXXXHXXHXXXXCCXXXCXXXXCXXC CXXXXXCXHHHHHHHHHHHHHHXHHHHHHXHHHHHHHHHHHHHHHHHHHHHHHX       CHHHHHXHXXCXX CX
+      CCC   C      CXCXC  CCCCCCXCCXCCCC  CCC CCCC CC   CCCCC CXXXXXXXXXXXXXXCXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXC        XXXXXCXCC CC  C
*+++''--...---.+++'-'--'-'.----.-'.-'----.----.--.--.-...----..-'''''''''''''--''''''-'-''''--'-''''''''-''''+11ZMXM+''''''.''---.-.-
+CCC++..'''...'CCC+.C..C.+'....'.C'.C....'....'..'..'.'''....''.CCCCCCCCCCCCC..CCCCCC.C.CCCC..C.CCCCCCCC.CCCCC      CCCCCCC'CC...'C'.
+   CC''+++'''+   C'B''B'C+''''+'B+'B''''+''''+''+''+'+++''''++'BBBBBBBBBBBBB''BBBBBB'B'BBBB''B'BBBBBBBB'BBBB        BBBBBB+BB'''+ +'
+     XXCCCXXXC    XHXXHX CXXXXCXHCXHXXXXCXXXXCXXCXXCXCCCXXXXCCXHHHHHHHHHHHHHXXHHHHHHXHXHHHHXXHXHHHHHHHHXHHHH        HHHHHHCHHXXXC CX
+     CC   CCC     CXCCXC  CCCC CX CXCCCC CCCC CC CC C   CCCC  CXXXXXXXXXXXXXCCXXXXXXCXCXXXXCCXCXXXXXXXXCXXXX        XXXXXX XXCCC   C
*++'+'--'.--.'+''.-'.'''.'--.----'.-'----...--.----.'--''.----'-'-'-'''''''-''---''--''-''-----'--''''-'------'''''--''--''''-.-=='''
+CC+C+..+'..'+C++'.C'+CC'+..'....C'.C....'''..'....'+..++'....+.C.C.CCCCCCC.CC...CC..CC.CC.....C..CCCC.C......CCCCC..CC..CC+C.'CCC+++
+  C C''C+''+C CC+'B+CBB+C''+''''B+'B''''+++''+''''+C''CC+''''C'B'B'BBBBBBB'BB'''BB''BB'BB'''''B''BBBB'B''''''BBBBB''BB''BBCB'+   CCC
+     XX CXXC    CXHC HHC XXCXXXXHCXHXXXXCCCXXCXXXXC XX  CXXXX XHXHXHHHHHHHXHHXXXHHXXHHXHHXXXXXHXXHHHHXHXXXXXXHHHHHXXHHXXHH HXC
+     CC  CC      CX  XX  CC CCCCX CXCCCC   CC CCCC  CC   CCCC CXCXCXXXXXXXCXXCCCXXCCXXCXXCCCCCXCCXXXXCXCCCCCCXXXXXCCXXCCXX XC
*+.''-...---.''..'-..'-..''.-'.-'.'------.--'.---'-..'..+--.-'-'''''''''''-''--''''''--''-'''-'''----------+==--==--'''''''.'-=='''+'
+C'++.'''...'++''C.''C.''CC'.C'.C'+......'..C'...+.''C''C..'.+.CCCCCCCCCCC.CC..CCCCCC..CC.CCC.CCC..........CCCCCCC..CCCCCCC'C.CC+++C+
+ +CC'+++'''+CC++B'++B'++BB+'B+'B+C''''''+''B+'''C'++B++ ''+'C'BBBBBBBBBBB'BB''BBBBBB''BB'BBB'BBB''''''''''       ''BBBBBBB+B'  CCC C
+ C  XCCCXXXC  CCHXCCHXCCHHCXHCXHC XXXXXXCXXHCXXX XCCHCC XXCX XHHHHHHHHHHHXHHXXHHHHHHXXHHXHHHXHHHXXXXXXXXXX       XXHHHHHHHCHX
+    C   CCC     XC  XC  XX CX CX  CCCCCC CCX CCC C  X   CC C CXXXXXXXXXXXCXXCCXXXXXXCCXXCXXXCXXXCCCCCCCCCC       CCXXXXXXX XC
*''+'.'.---.'''---..--.'---'-'.-'..----.-----+----..+--.''.'''.'---------'''''''''-----''-''-----------'+MX+-    =.''''''''.'+ZX-+=++
+++C+'+'...'+++...''..'+...+.C'.C''....'.....C....''C..'++'+++'C.........CCCCCCCCC.....CC.CC...........+C         'CCCCCCCC'CC  CCCCC
+CC C+C+'''+CCC'''++''+C'''C'B+'B++''''+''''' ''''++ ''+CC+CCC+B'''''''''BBBBBBBBB'''''BB'BB'''''''''''C          +BBBBBBBB+B
+    C CXXXC   XXXCCXXC XXX XHCXHCCXXXXCXXXXX XXXXCC XXC  C   CHXXXXXXXXXHHHHHHHHHXXXXXHHXHHXXXXXXXXXXX           CHHHHHHHHCH
+       CCC    CCC  CC  CCC CX CX  CCCC CCCCC CCCC   CC        XCCCCCCCCCXXXXXXXXXCCCCCXXCXXCCCCCCCCCCC            XXXXXXXX X
*'''.-.---.'+.---'.--''-'-'-'-.--'.----.----.+'--..''--.'.''+'-------------'''''''------'----'---''----)=- -    -A'''''---AA''-+'.'++
++++'.'...'+C'...+'..++.C.+.C.'..+'....'....'C+..''++..'+'++C+.............CCCCCCC......C....C...CC...C           CCCCC.CC  ++CC+'+CC
+CCC+'+'''+C +'''C+''CC'B'C'B'+''C+''''+''''+ C''++CC''+C+CC C'''''''''''''BBBBBBB''''''B''''B'''BB'''            BBBBB'    CC  C+C
+   CXCXXXC  CXXX CXX  XHX XHXCXX CXXXXCXXXXC  XXCC  XXC C    XXXXXXXXXXXXXHHHHHHHXXXXXXHXXXXHXXXHHXXX            HHHHHX         C
+    C CCC    CCC  CC  CXC CXC CC  CCCC CCCC   CC    CC       CCCCCCCCCCCCCXXXXXXXCCCCCCXCCCCXCCCXXCCC            XXXXXC
*+''...---'+.'--..--.+.'-..---..-..'----..-.''+=--'.'-.'+=+=-+-----'---+A1'''-'---.''-----------''--'Z=- ----+A'-'''-+MAMMMAZ+-+.----
+C++'''...+C'+..''..'C'C.''...''.''C....''.'++CC..+'+.'+CCCCCC.....C...C  +CC.C...'++...........CC..+          +.CCC.C        CC'....
+ CC+++'''C +C''++''+ +B'++'''++'++B''''++'+CC  ''C+C'+C      '''''B'''   CBB'B'''+CC'''''''''''BB''C          C'BBB'           +''''
+   CCCXXX  C XXCCXXC CHXCCXXXCCXCCHXXXXCCXC    XX C XC       XXXXXHXXX    HHXHXXXC  XXXXXXXXXXXHHXX            XHHHX           CXXXX
+      CCC    CC  CC   XC  CCC  C  XCCCC  C     CC   C        CCCCCXCCC    XXCXCCC   CCCCCCCCCCCXXCC            CXXXC            CCCC
*'=...---''..--'.--.'-'-..----.--------.---''..A-.'..-.=A1=  )1M+.'++-X= -+X+'.'''+.-------------'+X==--++X+---.'+=-ZXAXXM-M+ -==1XMM
++C'''...++''..+'..'+.C.''....'........'...++'' .'+''.'C        C'+CCC      C+'+++C'.............+C        C...'+CCC      C
+C +++'''CC++''C+''+C'B'++''''+''''''''+'''CC++ '+C++'+          +C          C+CCC +'''''''''''''C          '''+C
+  CCCXXX  CCXX CXXC XHXCCXXXXCXXXXXXXXCXXX  CC XC CCXC          C            C    CXXXXXXXXXXXXX           XXXC
+     CCC    CC  CC  CXC  CCCC CCCCCCCC CCC     C    C                              CCCCCCCCCCCCC           CCC
*''...--.''.--..--...--..-----.--.--.-----''.-.'+'.'+'-+       =+1)+++--==- =)ZZXM=+.--------'=Z+=+ =1XM+'--.-X)+=-=+)1+=111=  -    =
+++'''..'++'..''..'''..''.....'..'..'.....++'.'+C+'+C+C                           CC'........+C         C+..'C
+CC+++''+CC+''++''+++''++'''''+''+''+'''''CC+'+C C+C C                              +''''''''C           C''+
+  CCCXXC  CXXCCXXCCCXXCCXXXXXCXXCXXCXXXXX  CXC   C                                 CXXXXXXXX             XXC
+     CC    CC  CC   CC  CCCCC CC CC CCCCC   C                                       CCCCCCCC             CC
*+'....-...--..--.'.--...--.--....-...---'''.-'..+'=MM=      -    -==--====-==- -+=)Z='.-'+-X=   =)X'---'MZ1)----=--=1Z= ==-=---==+-
+C+''''.'''..''..'+'..'''..'..''''.'''...+++'.+''C+C                                 C+'.+CC        +...+
+ C++++'+++''++''+C+''+++''+''++++'+++'''CCC+'C++ C                                   C+'C          C'''C
+  CCCCXCCCXXCCXXC CXXCCCXXCXXCCCCXCCCXXX   CX CC                                      CX            XXX
+      C   CC  CC   CC   CC CC    C   CCC    C                                          C            CCC
*'''...'-----.--.+'--.'.--.-.'.......--.''...'...+A+-      -  -   -=+=====++-===   -  +=)     +A'--.'-X=--====+---==-+Z+===++==-=-+
++++'''+.....'..'C+..'+'..'.'+'''''''..'++'''+'''C                                              +..'+C
+CCC+++C'''''+''+ C''+C+''+'+C+++++++''+CC+++C+++                                               C''+C
+   CCC XXXXXCXXC  XXC CXXCXC CCCCCCCXXC  CCC CCC                                                XXC
+       CCCCC CC   CC   CC C         CC                                                          CC
*..'...--------..---.-..''...'.....---..''''....'++-          -    -==++=+=+)===-+=- --++)A=+'---=A) --=-====+==+=+===+====+==+-===--
+''+'''........''...'.''++'''+'''''...''++++''''+C                                         CC+...C
+++C+++''''''''++'''+'++CC+++C+++++'''++CCCC++++C                                            C'''
+CC CCCXXXXXXXXCCXXXCXCC  CCC CCCCCXXXCC    CCCC                                              XXX
+      CCCCCCCC  CCC C             CCC                                                        CCC
*.'.....------...--.-..........''....''+++++==--A)   +ZAAAAX1+-     -=====++======))1AM+'--.'MZ1)-----==========+=+=+==-+==+++-=+-=-=
+'+'''''......'''..'.''''''''''++''''++CCCCCCCCC                                       C+..'+
++C+++++''''''+++''+'++++++++++CC++++CC                                                 C''+C
+C CCCCCXXXXXXCCCXXCXCCCCCCCCCC  CCCC                                                    XXC
+       CCCCCC   CC C                                                                    CC
*=...-.--------.-----..'.'''.'''''+=--A1)))+++==-   -+----'--.+A1)+----+==++---+)A+.---=ZZ1)+=  ---==---=+=)++====+++++===+==+=+=====
+C'''.'........'.....''+'+++'+++++CCCC               C....C..'C                   C'...C
+ +++'+''''''''+'''''++C+CCC+CCCCC                    ''''B''+                     +'''
+ CCCXCXXXXXXXXCXXXXXCC C   C                         XXXXHXXC                     CXXX
+    C CCCCCCCC CCCCC                                 CCCCXCC                       CCC
*A.'...-.-.-.-..--.-.'.-''''''+++A+= -- -=--= ----- +----'''''''''-.+MA1+++=1A='--+''MAZ+-==-- --=---==-=++)=+++=-==+==+)+=++)=+=++-+
+ '+'''.'.'.'.''..'.'+'.++++++CCC                   C....CCCCCCCCC.'C         C+..C++
+ +C+++'+'+'+'++''+'+C+'CCCCCC                       ''''BBBBBBBBB'+           C'' CC
+ C CCCXCXCXCXCCXXCXC CX                             XXXXHHHHHHHHHXC            XX
+      C C C C  CC C   C                             CCCCXXXXXXXXXC             CC
* Z'.....-.........++++++=--MZ1))-==-=++=-==----   A----''+++.--'''''''--.'..'..=-ZX.-''--.==MZ1)+ ------=-=====-++=+===)+=-++)++++==
+  +'''''.'''''''''CCCCCCCCC                        ....++CCC'..CCCCCCC..'+''+''CC  '.CC..'CC
+  C+++++'+++++++++                                 ''''CC   +''BBBBBBB''+C++C++    +'BB''+
+   CCCCCXCCCCCCCCC                                 XXXX     CXXHHHHHHHXXC CC CC    CXHHXXC
+        C                                          CCCC      CCXXXXXXXCC            CXXCC
*  1=''.'.''''+=--AZ11+)+)+++===+=+===+====-=--=--++'-XZ)+=--=+1-.''-'''--'+XX+''--''''''''''''--'=MX++------=-+=++=+++=======+=+++==
+   C++'+'++++CCCC                                 C+C          C'CC.CCC..+C  C++..CCCCCCCCCCCC..+C
+    CC+C+CCCC                                      C            +BB'BBB''C    CC''BBBBBBBBBBBB''C
+      C C                                                       CHHXHHHXX       XXHHHHHHHHHHHHXX
+                                                                 XXCXXXCC       CCXXXXXXXXXXXXCC
*   =11XMXX11)+=-+=- ----==)++=+=+++-++)++-=====+)+M+--  - -  --1M-'--'A=-+.+.-'''''''''''''''''''''--.+M1+=-=---====+=+=+===+++==---
+                                                 C               .C..+ CCC'C'.CCCCCCCCCCCCCCCCCCCCC..'C
+                                                                 'B''C    + +'BBBBBBBBBBBBBBBBBBBBB''+
+                                                                 XHXX     C CXHHHHHHHHHHHHHHHHHHHHHXXC
+                                                                 CXCC        CXXXXXXXXXXXXXXXXXXXXXCC
*       = - -    -----===-+=+++==++=++=+++=--+--+XMA --  --+1M-.--'+-1==A'.'++----'--'''''''''''''''''''''-.=X=- - -+--====++++=+===-
+                                                             C'..+CC    +'+CCCCCC+..CCCCCCCCCCCCCCCCCCCCC.'C
+                                                              +''C      C+C      C''BBBBBBBBBBBBBBBBBBBBB'+
+                                                              CXX        C        XXHHHHHHHHHHHHHHHHHHHHHXC
+                                                               CC                 CCXXXXXXXXXXXXXXXXXXXXXC
*      ====++-+- -+==+)++==+)))++)+))+)+++=====-+AX=X-+1ZM=+..'=-1--  -- ====---=--=+X-+'.---'''''''''''''''''-'A)+==---===-++++++-+=
+                                                  C      CC''+CC                     CC+'...CCCCCCCCCCCCCCCCC.+
+                                                           ++C                         C+'''BBBBBBBBBBBBBBBBB'C
+                                                           CC                           CXXXHHHHHHHHHHHHHHHHHX
+                                                                                         CCCXXXXXXXXXXXXXXXXXC
*     -+====111=  +=+=++=+++))+)))))++)++)+===--1X'-'-'.-.+A11)==-  -=+=- -==++=====---=+)11A=+'--'''''''''''''''-.-A)+---=-====+)=-=
+                                                 +.+C+'.'C                                  CC+..CCCCCCCCCCCCCCC.'C
+                                                 C'C C+'+                                     C''BBBBBBBBBBBBBBB'+
+                                                  X   CXC                                      XXHHHHHHHHHHHHHHHXC
+                                                  C    C                                       CCXXXXXXXXXXXXXXXC
*    ++)+=-=++1+ =+++=++)+++)+))++))+++=++++==+A+'---'AZZ)+-  -========-= ===+=++=====-=----=++=+)1M-'--''''''''''''-.'-1+=-=--++-+X+
+                                               C+...+                                              C+..CCCCCCCCCCCC.'+C        C.C
+                                                C'''C                                               C''BBBBBBBBBBBB'+C          '
+                                                 XXX                                                 XXHHHHHHHHHHHHXC           X
+                                                 CCC                                                 CCXXXXXXXXXXXXC            C
*  =++=+=====-=  -+=====+=) ++)++))+)++++)ZM='--.=--===  --+--=+====+++++-= =-+=+-=+====+++-===- - -   -+)X-+.-''''''''''--+- -+'''''
+                                           C+..'CCCCC                                                     CC'.CCCCCCCCCC.C    CCCCCC
+                                            C''+                                                            +'BBBBBBBBBB'      BBBBB
+                                             XXC                                                            CXHHHHHHHHHHX      HHHHH
+                                             CC                                                              CXXXXXXXXXXC      XXXXX
* -+)+==-=-===   -=++=+)=+++)++++111ZXM='-.--'=A)M.-''' ---=-=++++++++)+=+++==+++++++++=+==+++== --- - -  - =+ZX+-'''''''''.-A-''''''
+                                      C+.'..+C   '.CC+                                                         C.CCCCCCCCC'C .CCCCCC
+                                       C'+''C    +'BBC                                                          'BBBBBBBBB+  'BBBBBB
+                                        XCXX     CXHH                                                           XHHHHHHHHHC  XHHHHHH
+                                        C CC      CXX                                                           CXXXXXXXXX   CXXXXXX
* ==+==  ===-- -=-========++==)1X-='.----+-MA1)---''''. ------=-+++=+))+++=-===+=-=+=====+=+===+=+1))1XAAMM==+''.''''''''''''''''''''
+                                CC+'....CC      CCCCC'                                                    CCC++'CCCCCCCCCCCCCCCCCCCC
+                                  C+''''         BBBB+                                                       CC+BBBBBBBBBBBBBBBBBBBB
+                                   CXXXX         HHHHC                                                         CHHHHHHHHHHHHHHHHHHHH
+                                    CCCC         XXXX                                                           XXXXXXXXXXXXXXXXXXXX
*   ==+- ----==+-- ---=---=1A-+.--'-'-MX1)++)+++-=+'''-1 ----- -=+++=+)++- --=-- -==+-)ZZXA--=++'.-----'''''''''''''''''----.''''--.M
+                            CC'..C.+C            CCCC.                                    CCCCC+'.....CCCCCCCCCCCCCCCCC....'CCCC..'
+                              +''B'C              BBB'                                         C+'''''BBBBBBBBBBBBBBBBB''''+BBBB''+
+                              CXXHX               HHHX                                          CXXXXXHHHHHHHHHHHHHHHHHXXXXCHHHHXXC
+                               CCXC               XXXC                                           CCCCCXXXXXXXXXXXXXXXXXCCCC XXXXCC
*   =-=- =------- -----)1M'-'''..+MZ+=+++==-==++=- +''''=-=-= -===-==-=-+--==)AAA=''..--'''-''''''''-''''''''-''---.+=MAAZ+==MMMX)--
+                         +.CCC''C                 CCCC+                         C++''..CCC.CCCCCCCC.CCCCCCCC.CC...'CC
+                         C'BBB++                   BBBC                          CC++''BBB'BBBBBBBB'BBBBBBBB'BB'''+
+                          XHHHCC                   HHH                             CCXXHHHXHHHHHHHHXHHHHHHHHXHHXXXC
+                          CXXX                     XXX                               CCXXXCXXXXXXXXCXXXXXXXXCXXCCC
*--==- --= --  -=++ZA-.----''=A1++=++++)+++++++++= ).''' -- ==+++)1XM=+''..-'''''''---------''''''------.'+-MX1++-=    -++=++++++++))
+                    C'....++C                      'CC+             CC++''.CCCCCCC.........CCCCCC......'+CC
+                     +''''CC                       +BBC               CC++'BBBBBBB'''''''''BBBBBB''''''+C
+                     CXXXX                         CHH                  CCXHHHHHHHXXXXXXXXXHHHHHHXXXXXXC
+                      CCCC                          XX                    CXXXXXXXCCCCCCCCCXXXXXXCCCCCC
*== -=--== ---+Z-='----+-Z)++++)+=++++++++++=+-==+--X-'-)1XXM='.---'-''''--''-'''-----------.'==-MMXXZ11+====-=+-=+++=+=+))111)))))))
+               CC+....CC                            .C.     C+'...C.CCCC..CC.CCC...........'+CCC
+                 C''''                              'B'      C+'''B'BBBB''BB'BBB'''''''''''+C
+                  XXXX                              XHX       CXXXHXHHHHXXHHXHHHXXXXXXXXXXXC
+                  CCCC                              CXC        CCCXCXXXXCCXXCXXXCCCCCCCCCCC
*-===== =++X-+'---'-X++=-  -===)+=+-+=++===+==+Z--==-'''----''''''''-'--------..'=--MAXZZ1)Z)+))++=+))=+=))++=++=))+)=+))+))11)))1)))
+           CC+...+C                            CCCC.CCC....CCCCCCCC.C........''+CCC
+             C'''C                                 'BBB''''BBBBBBBB'B''''''''++C
+              XXX                                  XHHHXXXXHHHHHHHHXHXXXXXXXXCC
+              CCC                                  CXXXCCCCXXXXXXXXCXCCCCCCCC
*--===+Z+.---=Z11+ -   -- =))1XAXXAA-M-----+'---'''''''''----..'+-AZ1))+=)))===-     ---+=+++))))+)1+1)))))))1)+))=+))1)=+==1Z1111)1)
+       C'...C                      C CCCCCC+...CCCCCCCCC....''+CC
+        +'''                               C'''BBBBBBBBB''''++C
+        CXXX                                XXXHHHHHHHHHXXXXCC
+         CCC                                CCCXXXXXXXXXCCCC
*ZZX--''='+-X))1ZXX-=''.-.----'''-'''''''''''----''''''--11+++===-- ----====)=--=-----+==)+))))))))1)Z1111111)1)11+))))1)++-)1ZZZ1)Z1
+   CC++C+CC       CC++'.'....CCC.CCCCCCCCCCC....CCCCCC.C
+     CC C           CC+'+''''BBB'BBBBBBBBBBB''''BBBBBB'
+                      CXCXXXXHHHXHHHHHHHHHHHXXXXHHHHHHX
+                       C CCCCXXXCXXXXXXXXXXXCCCCXXXXXXC
*''''M-MX+.------'-''''''-''-'-''''''''''''----+M--''''Z   - -=+==+----=)+++++==+==-++)))1)+))))11)Z11Z1Z111Z11)Z1+))1))++=-=+)ZZ11Z1
+++++ C  C'......C.CCCCCC.CC.C.CCCCCCCCCCCC....C C.CCC+
+CCCC     +''''''B'BBBBBB'BB'B'BBBBBBBBBBBB''''   'BBBC
+         CXXXXXXHXHHHHHHXHHXHXHHHHHHHHHHHHXXXX   XHHH
+          CCCCCCXCXXXXXXCXXCXCXXXXXXXXXXXXCCCC   CXXX
*A)1='.----'---'''-'''''-'''''''''-'''''''''--=)=+Z'-M+-=-=+======+=-==)11+++==++=)))+11++==+))11))11))1ZZ1111)ZZZ)11Z)))+=---+ZZ11ZZ
+   C+'....C...CCC.CCCCC.CCCCCCCCC.CCCCCCCCC..C    +.
+    C+''''B'''BBB'BBBBB'BBBBBBBBB'BBBBBBBBB''     C'
+     CXXXXHXXXHHHXHHHHHXHHHHHHHHHXHHHHHHHHHXX      X
+      CCCCXCCCXXXCXXXXXCXXXXXXXXXCXXXXXXXXXCC      C
*-=.''''''---''---'''''-'-'''''-'''-''''''-'A)+=++=++-+=+=-=++==+++=-=)Z1)+===+)1ZZ))1))++++=++=)1111)11ZZZ11ZXXZZZZ11)1)+++)==)XZZ11
+CC'CCCCCC...CC...CCCCC.C.CCCCC.CCC.CCCCCC.+
+  +BBBBBB'''BB'''BBBBB'B'BBBBB'BBB'BBBBBB'C
+  CHHHHHHXXXHHXXXHHHHHXHXHHHHHXHHHXHHHHHHX
+   XXXXXXCCCXXCCCXXXXXCXCXXXXXCXXXCXXXXXXC
*''--------.'''+==-=-AX+ZXA++...-..''.''-X+=++1++)+++++++++++==+=))+=-)))+=+=)ZZZ1)+++)+=)+=++=+=+111ZZZ1ZZ1ZZAZXXXZZZ)1)1++)=+)111Z)
+CC........'+++CCCCCC      CC'''.''++'++C
+BB''''''''+CCC              +++'++CC+CC
+HHXXXXXXXXC                 CCCXCC  C
+XXCCCCCCCC                     C
*=MAAAAXZZZ)++--=-===      -+)))1))+))++=+))111)))1)++)+))+)+++++)))==+==+=+1ZXZ1)+===+++=+)))+++=1111ZZZ1ZZZXXXXXAXXXZ111111++=1Z1Z1
+C
*-=-- --==- --=-=====       ==+++))++))))))+))11)))))++++)1)++)-+))++++++=+1XZ))+++=+=++=))11)++11X11)1ZZ1Z11XZZXAAAMXXZ1Z1)1)+++1Z11
*=-----=++= =)=--=====--    -+)++)+111)1+)1))+))))))))+)))+++1++++++++=++1ZZ1+)+++=+=++))ZZZ1=1111ZZ)-+1111Z1XXXXZXAMAAAZXXZZZ))+-)1Z
*========+===+=-=+-=++=-   - -+)))1))11))1Z11)1)))++)=+==)+++))))++))+=+)Z1)+=+====)1ZZZXXZ)1++)1))+=---==+1ZZZ11ZZXAAAAAXAAAZ111)+)1
*=====+===+==+====-=++==      ===)))11111Z11))Z1))+))+++=))+=1)))))1)+==++)+)++=)=)ZXXXZ1)1)++=++====++==--+)ZZZZXZZXXAAXAAMAX1)11++=
*-=++=++++++++==+=--++==-       ==))11)11Z11+)Z)+)++)+++))+++))+1)111)+=+=)))=)))+1ZZ11))+)+=======++++++==-+)1ZAXXXAAAZXXAAXX11Z1))=
*++=-====)=++---+++)=+===-    --  +11+111Z)))1Z))))+)+)++1+-=+1)11)))))++)++111Z+1)1)+=+==+=++==+)++=+=======++1ZXAMAAAAAXZZXZ11))1)1
*++==+++=++=-+--=+)+====+  -  ++- -++)))111))11))+))))11))++==+)1))))1)++++)=1ZZ+)++=+=++)+=+++==+=++=+)++++)===))ZXXAAXXXZ)1XZZXZ1Z1
*)++++===+==-+=-=++====--- =  +=   --=))1111+)))))=++))1+)====+))))))1))+=)+++))=++===)++)+++)=+++=++++)=++++=++))))11111Z11ZZXXZZ1)1
*1)+=+)====-======+=-==---=-  -=--   =+1)Z11++))1)+)+=+++))+==)11)+)))))+++=++))++)++++++))))+++)+)+))+++)+=++=)ZZX1))+=1))ZZ1ZXXX11)
*))++=)+-+=-==+-+-=+=== --   -  =- - =+1)1)))++)1+))+=+)+))==+==+1))11))+==++++)+)++)+))+)++))))))+11ZZ))1)))1)))ZXZ)))+11+Z1Z1ZXZZZ)
*)+=+++++=+++=====-=+++==+=-=  == - - =+)11)+++)))11)+=+=)))++)++)))1))))+=++++++++++=++))+++))+)+))1)))+++++11))1XZ)+))11ZZ)))11ZX11
*)+=))+=+++++===-=+===+=-====  ==  -- -+))11)++))111))++++)++++++11)))))))+))+++++==+===+)++=))++)+++++++))))))+)+1)++=++)1++)=)))ZZZ
*+=++++-+++++======++=====++=--+-     -+))1Z1++)1+1))+=))+++1)+=)11))1)1)1+++)++))+++-=++)))=++++++++))))XX1)))+++))+++))++=)Z)1+=)ZZ
*+=++)+=+=+=+-==+)++==-++=++)===      -=)11)))+))++))++)+)+=1)+=))1))1)))))+===++=++++))++)+++++++++)1111ZAA1)=)+===+)+))+==11))+++=)
*++++++++=++++=)+=+=+=-+)==+))==-     -=+))Z)1+)))1))++)))++++)+++)11)1ZZ)+)++++++=++))+)1++)+)1)))111ZZ1)11)1++)))))1+=)++++++)+++==
*+)+=+++++++++=++++====++-=++)+=      =--=)1)+++))1))++))+)++)1+=+)1)))ZZ))++)++=+++=+)++++++++1))11111))))))++===)++++=++)+=+++)=+++
*=++=++++))+=+==+++=+++==+)++)+-   -+=-  -+1)+)))1)))))1)))+))1+=)1))))1))+++))))1)))1)+++))++)))1XZ11))=+)+)+))+++=++++++++-++++++)+
*+)=++)=+=1++==++))+++)+=+)++++   -)++=  -=)+))))1))1)++))1+)1))=+111))1ZZ)++++)ZZ11ZXZ11))11)111XMMAXZ1)++)+1+)+)+)+-+))==+=+++=+)+=
*++++++))++))+==+)+++1))=++))))= --)+=-  ++1)1)1))1))1+)))1)+))1+++))1)11Z++)+)1ZZZZ1ZZZ1)))11111ZZZXX1)1+))))+))+=+)++1AZ111))))))=+
*-- -=-+)))+)))))+)1))+)))+1+)1+-=- --- -++)))11))1111))+))))+)))+=+)111)11)))))1Z1)1ZZ1))))))+)))++)111Z1Z111)))++++++1AX1))))1))+))
*     --===++)1))=)))1)))111)++)++      =--))+)))111111))+))+++11+=+)1Z1))11)))))Z1Z11)1))+)+=+++)++)ZXAZ1)+))++)))))11)11+)=++))++))
* -            ++- +)))+))Z)+=++)          =    -+111))1))))))))))+=)1Z11))ZZ+)+))))++=++===+++++++)1XXZZ=+=+++-)=+=))1+)1+)++=+=)==+
*-- -  -  -  - --     -=---==-==-       -  -      --=+=--=)=   -)))+1)11))))1)))+))+)))+++++++))))1111)+++)++)+=++=+====++=++++++++++
* - -  -- --  -- -==- -             -                            -==)1)11+))))))+)))11))++++++))))))+)+++)++))===++=+++=+=++++)++=+=+
*       - --  -- -+=----          -                     - -          =++))))+1)))1))11+)++++=+))+1))++)+++++)=+++==+=+=++++)++1)1))++
*-    -=  -- -              -   -  -         -                          -++++)1)))))1))+))++)=)))1)))))11)+++)++)++++=+1+)+))))+1)+))
*   -  --    ++-               -=- -       -  - -       --     -          ===-=+=)))1111))+)=+=++))))+)1))++))))))+)))+1+))+++++)))))
*    -      -))=     --==-      -- -        -            -   -                    -+1)))))))=+===+)1)=++++=+)))+++=+++++=++++===++))+
*   ---     -))+-    -==+-       ----      - - -        ==-                            --))++)++-+1Z1+++++-)))))===++==++++++)+)+++)+
*- -- -      =)+-    --+=-        - --                   ---- ---   - -- -               -)1)+==-)111+)+=+++)+=+==+++++)+)=)+)+==+++=
* -=--       ++--    -=+=    -     --                  =-=-  --    ---                     )+++--=111)1)++++)++)++++)++++))))++)+++++
* -+--      -=)=     -===    -     -                  -=-----=-    -=     ---               ++)+++)11))))+)++++))==++++++))+++))+=+++
*  =---  -   -==--  -=++==      -           -  --     =====---     -=-    --=- --            =++)=+11)))1++))+=+=+++=+=+)))+))++)=)++
*  - ---  - ----     -+++--                  -=--    ---- ---=-  - -=      -    --            +==+11))))+))++====+++=+=+++=)++=+))+))
*   --= ------      =++=-       -    =-      -=--------=---------  -=-     - - --           -   -)Z11111=)=+)+++=++++++))++))+1)11)))
* -=---     --     -+==-                     -  -----     - - -            --  - -          -    -+))11)))=)+++++++++=+))+++))))1))))
*     -     -   ---=+==        -       - -      --- -      --  - -  - -    -----    -               =1))))+++++)+))++=+)))1)+++++)+)+
*           ----=---=-        -       ----      --=--      --       - -     = -    -                  =1Z1+=++))++)=)+=1)))+)))=)+)))
*   -- - -- -==-==--=         - -    ---       ------  -    --        -   --- --    - --               -)1)))))++))))))))))+)))++)))1
*-   -----=---- ---==                 --       ---- - --     =---          -----                        -)1)++))111)))++)=++1))))1111
*    - -----=   -=--=                 -             -        =---   -     -- --- -   - -    -   -        -)))11ZXXX11+)+=++)))))++))+
*    - -------- --- --        --        -  -    -  -  -      ----          -  --                  --        )1XXZZ1++)=))++)++)+)++++
*     -   - -- ---=---                         -      -     -- --    -       - -- -  - -        -=-     -     =)1)++)++)))+1)))+)))))
*      -- - -=  -==-                           -   ----    -=- ---   ---         -- ---- - -    --      --      =)+++))1)1)11)+1)))+)
*     --- --  --==== --                            -        --- -= -==-- - - -  --  - - --  -  ----=    ---      +)))))1+)++))+))++==
*  -      ---==-- ==---                       -    --          -   -== -=  ---    -   ----    --= -- =   --       -))+++++++)++=====+
*      --=----=-   --                           --  =-                -=- - -=------  -      -  =- -==-  --        =)++=++)+))))+++))
* -   -===-+=--  --+=-                              =                     =-=)+--=- -         - - -----    -        -++++++)++)++++++
*  - =)+===1=-- ---=     -- -                     ---                    -==)1)====--- - -     ----====--    -       =+)++=+)+))++++=
* -+1MX=-===  - -     -- ----  -                  --                    -=-=1+----=-=-- == - -- =-----===-  --        -+)+=++=+===)++
*==+1X)=====  ---     -----    -                 --             ---     -  -==-    ---=-===-----==---=+=-- --          -=++++))=)++))
*=----===--- -- -     -----     -                               +=          =-      --=------- -=-====++=-----           =)11))))++++
* --  -    ---- - -   ----     -                              --+-  --     -=     -==--    - -=====+++)====----            +1))1))1)1
*--           -  - -- - --  -                -                 -==-        --     -+=-- --    =++-==+++---==-=- --- --       =+)))+)+
* --        ----- ---- ---  -                  -               --      ==- -=     =+----      =---====++)=+==---=---   --     -+))++1
*            -=------- - ---                                       -  -==-  -  ---=-----    -         =+)++++=--====----=-=-    -+))1
*            ---      -  ---                 -            -     =--  - ==-- - --  ==  --   ==-           +)+++=+==-=-=--=--=-     -))
*        --          --                     -          -       ---=    =---  --- -=- -     =-      -      -=+=1)+=+-===--===---     =
*    - -          - ----                                       ===--   -=--=--- - -        -=-     --- -    =+)+)+=++=----====-=
*                 ---      - -                               = -=---  --==----  -   -      -==-    ------     ++)+)++++-===-==+==-
* -    --        - --     ---                                - ----   =-=--- --==-- =       =+-    --  --=-     =+))+))++=+==+====--
*-                        -=-                                         =-- =  -- - --        ==      - -   -=-    -+))))+))+=++===---
*-- --    -        - -    ---                -                ---- -  -   -===+-=-===--      -  -  -=    --= ==-  +11))))++=======+==
*- ---  -         -         -                                -===--        ===+==-====-      -  -  --  - -----++= +11))))+++=-====+-=
*  ------                - ---   -                           -===-         --=======+==--    -   -   ------  -+++=)1111))+++======--=
* --   - -             - -  -- -                             -=-=-         =-=+===-+++===-      -- ------- ----++)=)1)))+))=++===----
*- -   -               -    -    --     -                     -==-+-      --=-==++))++++=   -=      ---=---  -=++)1)++1)))))++==-= --
* -=-                                        -             - - -- =-     -=-=-===++++++=-  -+-   -  ----- -----+=))))+)))1)))++---
*  --  -                     -                               --    -      ==---==+=++)+-   -=-   -------- =-===++)++)+)))))1))=+==-
*--    -              -                     -  --         ---            --    -==++)++=    =-       -=---+=-=-+++++++)+++))+=)))=- -






























*                                                                                                                                    ---