Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-11 - 43,50536/cat1.dat
There are no other files named cat1.dat in the archive.
1I -''--''-'''-'''''----''----------''------'---'----------------------------------------..'+=--MAXZ1)+=-
*-''--''-'''-'''''----''----------''------'---'----------------------------------------..'+=--MAXZ1)+=-
+.CC..CC.CCC.CCCCC....CC..........CC......C...C........................................''+CCCC
+'BB''BB'BBB'BBBBB''''BB''''''''''BB''''''B'''B''''''''''''''''''''''''''''''''''''''''++C
+XHHXXHHXHHHXHHHHHXXXXHHXXXXXXXXXXHHXXXXXXHXXXHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC
+CXXCCXXCXXXCXXXXXCCCCXXCCCCCCCCCCXXCCCCCCXCCCXCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
*'''-''''''''-''-''----'------------------''----'---------------'-----------------------..'+==-MAXZ11)+=-
+CCC.CCCCCCCC.CC.CC....C..................CC....C...............C.......................''+CCCC
+BBB'BBBBBBBB'BB'BB''''B''''''''''''''''''BB''''B'''''''''''''''B'''''''''''''''''''''''++C
+HHHXHHHHHHHHXHHXHHXXXXHXXXXXXXXXXXXXXXXXXHHXXXXHXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXCC
+XXXCXXXXXXXXCXXCXXCCCCXCCCCCCCCCCCCCCCCCCXXCCCCXCCCCCCCCCCCCCCCXCCCCCCCCCCCCCCCCCCCCCCC
*''''''''''''-'--'---'''--------''----''---'--------------------'-------------------------.''+=--MAXZ1)++=-
+CCCCCCCCCCCC.C..C...CCC........CC....CC...C....................C.........................'++CCCC
+BBBBBBBBBBBB'B''B'''BBB''''''''BB''''BB'''B''''''''''''''''''''B'''''''''''''''''''''''''+CC
+HHHHHHHHHHHHXHXXHXXXHHHXXXXXXXXHHXXXXHHXXXHXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXXC
+XXXXXXXXXXXXCXCCXCCCXXXCCCCCCCCXXCCCCXXCCCXCCCCCCCCCCCCCCCCCCCCXCCCCCCCCCCCCCCCCCCCCCCCCC
*-'-''''-''--''--'-----'----'''-'-----'--------''''---------------------------'------------..'++=-MAXX11)+==-
+.C.CCCC.CC..CC..C.....C....CCC.C.....C........CCCC...........................C............''+CCCC
+'B'BBBB'BB''BB''B'''''B''''BBB'B'''''B''''''''BBBB'''''''''''''''''''''''''''B''''''''''''++C
+XHXHHHHXHHXXHHXXHXXXXXHXXXXHHHXHXXXXXHXXXXXXXXHHHHXXXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXCC
+CXCXXXXCXXCCXXCCXCCCCCXCCCCXXXCXCCCCCXCCCCCCCCXXXXCCCCCCCCCCCCCCCCCCCCCCCCCCCXCCCCCCCCCCCC
*'''''''''-'''--''----'''--'----'--------'----''--''-----------------------------------------.''+==-MAXZZ1)+==-
+CCCCCCCCC.CCC..CC....CCC..C....C........C....CC..CC.........................................'++CCCC
+BBBBBBBBB'BBB''BB''''BBB''B''''B''''''''B''''BB''BB'''''''''''''''''''''''''''''''''''''''''+CC
+HHHHHHHHHXHHHXXHHXXXXHHHXXHXXXXHXXXXXXXXHXXXXHHXXHHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
+XXXXXXXXXCXXXCCXXCCCCXXXCCXCCCCXCCCCCCCCXCCCCXXCCXXCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
*'''''''''--''--''----'''--'----'--------'----------------------------------------------------.''++=-MAAXZZ1)++=-
+CCCCCCCCC..CC..CC....CCC..C....C........C....................................................'++CCCC
+BBBBBBBBB''BB''BB''''BBB''B''''B''''''''B''''''''''''''''''''''''''''''''''''''''''''''''''''+CC
+HHHHHHHHHXXHHXXHHXXXXHHHXXHXXXXHXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC
+XXXXXXXXXCCXXCCXXCCCCXXXCCXCCCCXCCCCCCCCXCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
*------------'---------------------------------------------------------------------------------..''++=-MMAXXZ1))+==-
+............C.................................................................................''++CCCC
+''''''''''''B'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''++CC
+XXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC
+CCCCCCCCCCCCXCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
*-----------------------------------------------------------------------------------------------...''+==-MMAXXZ11)++=---
+...............................................................................................'''++CCCC
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+++CC
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCC
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
*-------------------------------------------------------------------------------------------------..'''+==--MAAXXZ11))++==---
+.................................................................................................''+++CCCCC
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''++CCC
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
*--------------------------------------------------------------------------------------------------...'''++==-MMAAXXZZ11)))++======--
+..................................................................................................'''+++CCCCC
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+++CCC
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCC
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
*-------------.-..----...----....-----.-----..---........------------------------------------------.....'''+++=---MMAAXXXZZ1111)))))+
+.............'.''....'''....''''.....'.....''...''''''''..........................................'''''+++CCCCCCC
+'''''''''''''+'++''''+++''''++++'''''+'''''++'''++++++++''''''''''''''''''''''''''''''''''''''''''+++++CCC
+XXXXXXXXXXXXXCXCCXXXXCCCXXXXCCCCXXXXXCXXXXXCCXXXCCCCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCCCC
+CCCCCCCCCCCCC C  CCCC   CCCC    CCCCC CCCCC  CCC        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
*.....................................................................-.---------------------------.......'''+++====---MMMAAXXXZZZZ11
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''.'...........................'''''''+++CCCCCCCCCC
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'+'''''''''''''''''''''''''''+++++++CCC
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCXCXXXXXXXXXXXXXXXXXXXXXXXXXXXCCCCCCC
+                                                                     C CCCCCCCCCCCCCCCCCCCCCCCCCCC
*.......''.''''''.''''''.''''''''''.'''''''''''''.''''''''.'................---------------------.........'''''++++++===--MMMMAAXXXZZ
+'''''''++'++++++'++++++'++++++++++'+++++++++++++'++++++++'+''''''''''''''''.....................'''''''''+++++CCCCCCCCCCC
++++++++CC+CCCCCC+CCCCCC+CCCCCCCCCC+CCCCCCCCCCCCC+CCCCCCCC+C++++++++++++++++'''''''''''''''''''''+++++++++CCCCC
+CCCCCCC  C      C      C          C             C        C CCCCCCCCCCCCCCCCXXXXXXXXXXXXXXXXXXXXXCCCCCCCCC
+                                                                           CCCCCCCCCCCCCCCCCCCCC
*'''''''''''''+'''+'''''''''+''+'''''''''''''+'''''''''''''''''''''''''...........-----------.........'''''++++++====-----MMMAAXXXXZZ
++++++++++++++C+++C+++++++++C++C+++++++++++++C+++++++++++++++++++++++++'''''''''''...........'''''''''+++++CCCCCCCCCCCCCCC
+CCCCCCCCCCCCC CCC CCCCCCCCC CC CCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCC+++++++++++'''''''''''+++++++++CCCCC
+                                                                      CCCCCCCCCCCXXXXXXXXXXXCCCCCCCCC
+                                                                                 CCCCCCCCCCC
*+++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++'''+''''''''........................''''+++++===-----MMMAAAAAXXXZZZZZ11
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++C++++++++''''''''''''''''''''''''++++CCCCCCCCCCCCC
+                                                             CCC CCCCCCCC++++++++++++++++++++++++CCCC
+                                                                         CCCCCCCCCCCCCCCCCCCCCCCC
*======+============-====================================+==+++++++++++'''''.'..............'''''+++===---MMMMAAAXXXXZZZZZ1111))))+++
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++'+''''''''''''''+++++CCCCCCCCC
+                                                                      CCCCC+C++++++++++++++CCCCC
+                                                                           C CCCCCCCCCCCCCC
*=============---------M----=-=======-----------------------==-=======++++++'''''''''''''''''+++===---MMAAAXXXZZZ111)))))++++++====-
+CCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++++++++++++++CCCCCCCCC
+                                                                           CCCCCCCCCCCCCCCCC
*--------MM-MMMMAAAXXXXXXAAAMAMMMMMMMMMMMMMMMAAAAAAAAAAAAAMAAMAMMMMM-----=====+++++'''''++++===---MMAAAXXZZ111)))+++=====------
+CCCCCCCC  C                                                        CCCCCCCCCCCCCCC+++++CCCCCCCCCC
+                                                                                  CCCCC
*AAAAAAAAAXAAXXZZ11ZZZZZZZZZZZZZXXXXXXXXXXXXZZZZZZZZZZZZZZZZZXZXXXAAAAAMMMMM----===++++=====---MMAAXXZZ111))++====---
+                                                                           CCCCCCCCCCCCCCCCCCC
*ZZZZZZZZ111111)+)1ZZZZZZZZ11))))))111111111)))))))))))))))1)))11ZZZZXXXXAAAMMMM----------MMMMAXXZZ111))+++==----
+                                                                               CCCCCCCCCC
*))))))+)+++++==+ZXXXXAAAXZ11111)+=+=+++++++==+===========++++++))))111ZZZXXXAAAAAMMMMMMMAAAXXXZZ11))+++===---
*=========-=---+1XAAAMMMMAAXZZZ11)+=--------- ------     ------====+++))111ZZZZXXXXXXXXXXXZZZZZ11)+++==---
*             -)ZXAMMMM--MMAAXXXZ1)+=--                         ----==++)))))11111ZZZ111111111)))+===---
+                      CC
*             +ZXAAMM-----MMAAAAAXZ)++=                             ----===++++))))))))))+++++++==--
+                    CCCCC
*            -)ZXAMMM-M---MMMAAMMAAZZ1+=-                             - ---=====+++==+++=====+===---
+                    C CCC
*            +ZXAMMM-----MMMMMMMMMMAAXZ1+=                                  --------====----------
+                   CCCCC
*            )ZAAM-------MMMMMMMMMMMMMAXZ1+=                                         -- --
+                 CCCCCCC
*            1XAMM====---MMMMMMMMMMM--MMAX1=-
+                 CCCCCCC           CC
*            )XM--=++==--MMMAAAMMMMMM----MAZ)=                                                                                     --
+               CCCCCCCCC            CCCC
*            1XM-==+===--MMMAAAAAAAMMMM---MAXZ)-                                                              ---------------===-=++)
+               CCCCCCCCC              CCC
*            1XM-======--M-MMMMAAAAAAMMMMMMMMMX)=                                                   ----------==++++++++++))+)))+)1ZZ
+               CCCCCCCCC C
*           =ZA-=+====---M-MMMMAAAAAAMMMMMMM--MA1=-                                            --- ----=--====+)))))1)1)1111ZZZZZXXXA
+              CCCCCCCCCC C                 CC
*           +ZA-=+====-------MMMMMMMMMMM-MM---MMMX)=                                       - --===-===+++++)))111ZZZZZZZXXXXAAAXXAMMM
+              CCCCCCCCCCCCCC           C  CCC
*           +ZA-+++++==--=---MMMMMMMM-MMMMM------MX1+                                    ----====+++++)))))11ZZXXXAAAAAAAAAMMMMAM--=-
+              CCCCCCCCCCCCCC        C     CCCCCC                                                                                CCCC
*           )XM=+++++====-MMAAMMMMMMMMMMMAMMM------MZ)=                                 --===++++)))))111ZZZZXXAAAMMMMMMMMM----M-====
+              CCCCCCCCCCC                   CCCCCC                                                                        CCCC CCCCC
*           )XM-=++++====-MMAAAAMMMMMMAAAAM-MMM--=--MX1=                                -===++)+)11111ZZXXXXAAAMMMM--------==----=+++
+              CCCCCCCCCCC                 C   CCCCC                                                               CCCCCCCCCCCCCCCCCC
*           )AM-++'+++++=--MMMMAAAAXAXAAAAM---------MMA1=                            --==+++))))1ZXZXXXAAAAMMMMM---===========-==++''
+              CCC+CCCCCCCC                CCCCCCCCC                                                            CCCCCCCCCCCCCCCCCCC++
+                 C                                                                                                                CC
*           )AM=++++++++=--MMMAAAAAXXXXXAAM--M------MMMA1)-                        --===+))11111ZXAAAAAMMMMM-----===========+=-=+''''
+              CCCCCCCCCCCC                CC CCCCCC                                                        CCCCCCCCCCCCCCCCCCCCC++++
+                                                                                                                                CCCC
*           +AM=+++'+++===-MMAAAXXXXXXXXXAMM-MMMM------MMX)-                      --=++))11ZZZXXAAMMMMM-------============++++==+''''
+              CCCC+CCCCCCC                 C    CCCCCC                                                CCCCCCCCCCCCCCCCCCCCCCCCCC++++
+                  C                                                                                                             CCCC
*           )AM=++''++++=MMMMAAXXXXXXXXXXAMMMMMMMM-------MX+                    --=++)))1ZZXXXAAMM-----==============+++++++++-='''''
+              CCC++CCCCC                         CCCCCCC                                         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++
+                 CC                                                                                                            CCCCC
*           +A-=+''+++++=MMMAAAXXXAXXXXZXAAMMAAAMMM----==-AZ)-                --==+))11ZZXXAAMMM----=======+=========+++++++++=+'''''
+             CCC++CCCCCC                          CCCCCCC                                      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++
+                CC                                                                                                             CCCCC
*           =A-=+''+=++=-MMMAAAAXXXXZZZZZXXXXXAAAMM----===-AX1+             --==++)11ZZXAAAMM----======+++++=========+++++++'+=+'''''
+             CCC++CCCCCC                          CCCCCCCC                                  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+CCC+++++
+                CC                                                                                                         C   CCCCC
*           =A-='''+++=-MMMMAAAXXZZ111111ZXZZXXXAAMM--=====-MAZ)-          --=++))1ZZXAAMMM---===+++++++++++=========+++'''''++'.''''
+             CC+++CCCCC                            CCCCCCCC                               CCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++CC+'++++
+               CCC                                                                                                     CCCCC  C+CCCC
+                                                                                                                               C
*           -X-=+''++-MAMMMAAXZ111)11)))1ZZ11ZZZXAA---======-MAZ)-      ---=++))11ZZXXAMM---==++++++++++++++=========+++'''''++'...''
+             CCC++CCC                             CCCCCCCCCC                            CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++CC+'''++
+                CC                                                                                                     CCCCC  C+++CC
+                                                                                                                               CCC
*           -XM-++++-MMAAAXXXZZ111))))))11Z1111ZXXAMM-=======--MX)=  --===++))11ZZZXAAM---==+++++++++++++++++++====++++''''''++'..'''
+              CCCCCC                                CCCCCCCCCC                        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++++++CC+''+++
+                                                                                                                      CCCCCC  C++CCC
+                                                                                                                               CC
*            ZA-====MMAAAXAXXZZZZZZ111)1ZZZ1111ZZXXAAM-========-AZ1+==++++))11ZZZXXAMM--==++++++'''+++++++++++++++++++'''''''++''''''
+              CCCCC                                  CCCCCCCCCC                      CCCCCCCCCC+++CCCCCCCCCCCCCCCCCCC+++++++CC++++++
+                                                                                               CCC                   CCCCCCC  CCCCCC
*            ZA-===---MAAAAXXXXZZZZZZZZZZZZ111ZZZZXXXAMM-==++++=-MAXZ1)))111ZZZZXXAAM-===++++'+'''''+++++++++++'+'++++''''''+=+''''''
+              CCCCCCC                                  CCCCCCCCC                    CCCCCCCC+C+++++CCCCCCCCCCC+C+CCCC++++++CCC++++++
+                                                                                            C CCCCC           C C    CCCCCC   CCCCCC
*            ZM--==+==--MMMAAAAAAAAAXXZZZZZZZZZZZZXXXXAMM-==+++==---MXZZZZZZXXXXXXXAM--===++++'''''''+++++++++'''''''+++++++=-=+++'+'
+              CCCCCCCCC                                 CCCCCCCCCCC                 CCCCCCCCC+++++++CCCCCCCCC+++++++CCCCCCCCCCCCC+C+
+                                                                                             CCCCCCC         CCCCCCC             C C
*            ZM-=+++==--MMMMMMMMMMAXXXZXXXXXXXXXZXXXZXXAA-===++++===-MAAXXXXXXXXXXXAAM--===+++++''''''''++++++'''''''+++++==---=+++++
+              CCCCCCCCC                                 CCCCCCCCCCCC                 CCCCCCCCCC++++++++CCCCCC+++++++CCCCCCCCCCCCCCCC
+                                                                                               CCCCCCCC      CCCCCCC
*            1AM-====-MMMMMMMMMMMAAXXXXAAXXXXXXXXXXXZXXAAM--====++++==-MAAXXXXXXXXXAAAMM--====++++''''''''+++++'''''+++====-MM-====++
+               CCCCCC                                    CCCCCCCCCCCCC                 CCCCCCCCCC++++++++CCCCC+++++CCCCCCCC  CCCCCCC
+                                                                                                 CCCCCCCC     CCCCC
*            +XM-----MMMMAMMM---MMMMAXXXXZZZZZZZZXXXXXAAAMMM---==++++=---MAXXAAAMMMAAAMM----====+++''''''''+++++++++++===---MMM-===++
+               CCCCC        CCC                            CCCCCCCCCCCCC               CCCCCCCCCCC++++++++CCCCCCCCCCCCCCCCC   CCCCCC
+                                                                                                  CCCCCCCC
*            +XAM-------MM----=--MMAXZZZ11111111ZZXXXXXXXXAAMM-=++'++====MMMM---=---MMMM-----====+++'''.'''++========----MMMAA--=====
+                CCCCCCC  CCCCCCC                             CCCC+CCCCCC    CCCCCCC    CCCCCCCCCCCC+++'+++CCCCCCCCCCCCCC     CCCCCCC
+                                                                 C                                 CCC+CCC
+                                                                                                      C
*            +ZAM===----MMMM--MMMAAXZ1ZZ11111111ZZZXXXXXXXXAMM-=++'+++===---=++++++=---------====+++'''..'''+==-----MMMMMMMAAM-======
+                CCCCCCC    CC                                CCCC+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++''+++CCCCCCCC          CCCCCCC
+                                                                 C                                 CCC++CCC
+                                                                                                      CC
*            =ZM-++===--MMMMMMMMMMAXXZXZZ1111Z1ZZZZZZZXXXXXAMMM--=++++'+====+''...''+============+++'''...''+==-MMAAAAMMMMMMAA-======
+               CCCCCCCC                                       CCCCCCC+CCCCCC++'''++CCCCCCCCCCCCCCCC+++'''++CCCC              CCCCCCC
+                                                                     C      CC+++CC                CCC+++CC
+                                                                              CCC                     CCC
*             1M-=++==--MMAMMMMM--MAXXXZZZZZZZZZZZZZZZZZXXXAAAMMM-==+'''++++'..---..'++=+=======+++'''''.'''++=-MMAAAAMM--MMAM-======
+               CCCCCCCC        CC                               CCCC+++CCCC+''...''+CCCCCCCCCCCCCC+++++'+++CCCC        CC    CCCCCCC
+                                                                    CCC    C++'''++C              CCCCC+CCC
+                                                                            CCXXXCC                    C
+                                                                              CCC
*             )A-=+===--MAAM---==-MAZZZZZZZZ1111ZZZZZXZZZZZXAAAAMM-=+'..'+++'..----.''++++++===+++''''''''''+==--MAAAMM-----MM-======
+               CCCCCCCC    CCCCCC                                CCC+''+CCC+''....'++CCCCCCCCCCCC++++++++++CCCCC      CCCCC  CCCCCCC
+                                                                    C++C   C++''''+CC            CCCCCCCCCC
+                                                                     CC     CCXXXXC
+                                                                              CCCC
*             1A=+++==-MMMM-----AXZ111ZZZZXZZZZZZZZXXXXZZZZXXAAAAMM-+'..'+++''.-----.''''+++++++++''''....'''++==-MMM--=====---======
+               CCCCCCC    CCCCC                                   CC+''+CCC++'.....'++++CCCCCCCCC++++''''+++CCCCC   CCCCCCCCCCCCCCCC
+                                                                    C++C   CC+'''''+CCCC         CCCC++++CCC
+                                                                     CC      CXXXXXC                 CCCC
+                                                                              CCCCC
*             )XM=++=-MMMAAAAAXXZ11)11ZZZZXXZZXXXXZXXZZZZZZZXXAAAMM-='..''+++''------..''++++++++''.......''''++==----==++++=--======
+                CCCCC                                             CC+''++CCC++......''++CCCCCCCC++'''''''++++CCCCCCCCCCCCCCCCCCCCCCC
+                                                                    C++CC   CC''''''++CC        CC+++++++CCCC
+                                                                     CC       XXXXXXCC            CCCCCCC
+                                                                              CCCCCC
*             +ZA-==--MAAXZZZZ111))))11ZZZZZZZZZZZZZZ1111ZZZXXXXAAM-=+'.''++++'.-----...''+++++++'..........'''++==--=+++'''=-=+===+=
+                CCCCC                                             CCC+'++CCCC+'.....'''++CCCCCCC+''''''''''+++CCCCCCCCCC+++CCCCCCCCC
+                                                                     C+CC    C+'''''+++CC       C++++++++++CCC          CCC
+                                                                      C       CXXXXXCCC          CCCCCCCCCC
+                                                                               CCCCC
*             =ZAM-=--AXZ11))))11))))1111111)))))))))1)11ZZZZZXXAAM-==+'''++++''.------.'''+++++''...........'''+====++'''''=-=++====
+                 CCCC                                             CCCC+++CCCC++'......'+++CCCCC++'''''''''''+++CCCCCCC+++++CCCCCCCCC
+                                                                      CCC    CC+''''''+CCC     CC+++++++++++CCC       CCCCC
+                                                                               CXXXXXXC          CCCCCCCCCCC
+                                                                                CCCCCC
*             =ZXM--MAXZ111)))111))++++++++==+++++)))11ZZZZZZZXAAMM--=+''''++'+''.------.'''++++''.............'+++++''''.''+-=++===+
+                 CC                                               CCCC++++CC+C++'......'+++CCCC++'''''''''''''+CCCCC++++'++CCCCCCCCC
+                                                                      CCCC  C CC+''''''+CCC    CC+++++++++++++C     CCCC+CC
+                                                                                CXXXXXXC         CCCCCCCCCCCCC          C
+                                                                                 CCCCCC
*             -1XAMMMXXZZ11)))))++=============++)11ZZZZXXXXXXAAMMMM-=++''''''''+'-------..''++++''......--....''++'''++''''+==+++=++
+                                                                   CCCC++++++++C+.......''++CCCC++''''''..''''++CC+++CC++++CCCCCCCCC
+                                                                       CCCCCCCC C'''''''++CC    CC++++++''++++CC  CCC  CCCC
+                                                                                 XXXXXXXCC        CCCCCCXXCCCC
+                                                                                 CCCCCCC                CC
*             =)ZXAAAXXZZZ))++++===--==+==+=+++))11ZZZZXXXXXXAAAAAAAM-=+''''''''''..-------.''+++''''....---....'''''+++++''+==+++=++
+                                                                    CCC++++++++++''.......'++CCC++++''''...''''+++++CCCCC++CCCCCCCCC
+                                                                       CCCCCCCCCC++'''''''+CC   CCCC++++'''++++CCCCC     CC
+                                                                                 CCXXXXXXXC         CCCCXXXCCCC
+                                                                                   CCCCCCC              CCC
*          -==+)ZXAAAXXZZ111))))++===+++++++))111111111ZZXXXXXXAAAAAMM-=+''.....''''.-------.''''''''''..----..'''''++===++'+==++++=+
+                                                                     CCC++'''''++++'.......'++++++++++''....''+++++CCCCCCC+CCCCCCCCC
+                                                                        CC+++++CCCC+'''''''+CCCCCCCCCC++''''++CCCCC       C
+                                                                          CCCCC    CXXXXXXXC          CCXXXXCC
+                                                                                    CCCCCCC             CCCC
*       --=+)))1ZZXXXXXZZZZZZ11)))++)))))))))11))))))))11ZZZXXAAAAAAM--=+''......''+'.-------..'''''''''..--..'''''+++====+++===++==+
+                                                                    CCCC++''''''++C+'.......''+++++++++''..''+++++CCCCCCCCCCCCCCCCCC
+                                                                        CC++++++CC C+'''''''++CCCCCCCCC++''++CCCCC
+                                                                          CCCCCC    CXXXXXXXCC         CCXXCC
+                                                                                     CCCCCCC             CC
*     -=++)1ZZ11ZZXXXXXXXXXXXXXZZZZZZZZ111111))++)))11111ZZZXAAAAAAAM-==+''.----.''+'---------....''''''''...''+'''++=====+++--====-=
+                                                                    CCCC++'....'++C+.........''''++++++++'''++C+++CCCCCCCCCCCCCCCCCC
+                                                                        CC+''''+CC C'''''''''++++CCCCCCCC+++CC CCC
+                                                                          CXXXXC    XXXXXXXXXCCCC        CCC
+                                                                           CCCC     CCCCCCCCC
*  --=+)1ZXXAAXXZZXAAAAXAAAAAAAAAAXAAXZZZ111)))))11111111ZZZXXXXAAAMM-==+'..----.''+'------------..'''+++++''+++'.'++=+==+++=--====-=
+                                                                    CCCC+''....'++C+............''+++CCCCC++CCC+'+CCCCCCCCCCCCCCCCCC
+                                                                        C++''''+CC C''''''''''''++CCC     CC   C+C
+                                                                         CCXXXXC    XXXXXXXXXXXXCC              C
+                                                                           CCCC     CCCCCCCCCCCC
*-=+)1ZZXAMM--MAAXAAMMAAXXAAAAAAAAXAXZ1111)))++)1111)111111ZZZXXXXAM--===''.----.'++.------------.''+'''++++++=+''++=++==+'+=--======
+           CC                                                      CCCCC++'....'+CC'............'++C+++CCCCCCCC++CCCCCCCC+CCCCCCCCCC
+                                                                        CC+''''+C  +''''''''''''+CC CCC        CC        C
+                                                                          CXXXXC   CXXXXXXXXXXXXC
+                                                                           CCCC     CCCCCCCCCCCC
*+)1ZXXAM--====-MAAAAAAXXZXXXAAXXZ11))+++++++++))))))111))))1ZXXXXXAM--==+'...-...''..-----------.'++++'++++++++'++++====+''+-M=++===
+        CCCCCCC                                                     CCCCC+'''.'''++''...........'+CCCC+CCCCCCCC+CCCCCCCCC++CC CCCCCC
+                                                                         C+++'+++CC++'''''''''''+C    C        C         CC
+                                                                          CCCXCCC  CCXXXXXXXXXXXC
+                                                                             C       CCCCCCCCCCC
*1ZXAMM--====+==-MAAAAAXXXZZZXZ11)))++===+=+++++++))11))++))1XXXXXXAAM-==++'......''''''.--------.'++++++++++++''++++=---=+'+-M=++==+
+      CCCCCCCCCC                                                     CCCCC+''''''++++++'........'+CCCCCCCCCCCC++CCCCCCCCCC+CC CCCCCC
+                                                                          C++++++CCCCCC+''''''''+C            CC          C
+                                                                           CCCCCC      CXXXXXXXXC
+                                                                                        CCCCCCCC
*XAMM-===++++++=-MAXAMMAXXZZ11111)++++==+++)))+++)11))++))1ZXAAAAAAAAMM-==+'..'''...''++'.-------.'+++++++++=++'''+===---=+''=M-+++=+
+    CCCCCCCCCCCC                                                      CCCC+''+++'''++CC+'.......'+CCCCCCCCCCCC+++CCCCCCCCC++C CCCCCC
+                                                                          C++CCC+++CC  C+'''''''+C            CCC         CC
+                                                                           CC   CCC     CXXXXXXXC
+                                                                                         CCCCCCC
*M--===++++++++=-MAXAAMAZZ1))))1)++)++==)11)1111ZZ1)))))11ZZXAAAAAXXAAM--=+''''''...'''+'.------.''++++++++===+'''+=-----=+''=M-+'+=+
+ CCCCCCCCCCCCCCC                                                      CCCC++++++'''+++C+'......'++CCCCCCCCCCCC+++CCCCCCCCC++C CC+CCC
+                                                                          CCCCCC+++CCC C+''''''+CC            CCC         CC    C
+                                                                                CCC     CXXXXXXC
+                                                                                         CCCCCC
*-==+++++++++++==-AXXXXZ1))))11ZZZ1ZZ11)1ZZZZXXXXZ1111ZZZZXZZZZZXXXXAAM-==+'''''.....'''..------.'++++'.'''++++'''+=-=---=+''=M-+++=+
+CCCCCCCCCCCCCCCCC                                                     CCCC+++++'''''+++''......'+CCCC+'+++CCCC+++CCCCCCCCC++C CCCCCC
+                                                                          CCCCC+++++CCC++''''''+C    C+CCC    CCC         CC
+                                                                               CCCCC   CCXXXXXXC      C
+                                                                                         CCCCCC
*=++++++++++++==-MAXZ1111))11ZXXXXXZZXXXAAAAAAAXXZZZZZXZZZZ1ZZZZZZXAAM--==+'''''....'.'..------.'+++++'''''+++'''++=-=====+'+=M-++==+
+CCCCCCCCCCCCCCCC                                                     CCCCC+++++''''+'+''......'+CCCCC+++++CCC+++CCCCCCCCCC+CC CCCCCC
+                                                                          CCCCC++++C+C++''''''+C     CCCCC   CCC          C
+                                                                               CCCC C CCXXXXXXC
+                                                                                        CCCCCC
*++++++++++++==--MAXZ)1ZZZZXZXXXXXXXAAM-=--MMMAXXXXXZZZZ11111ZZZZXXAAMM-==++'''''''''..-------..''++++''''''''''+====-====+++=M-++==+
+CCCCCCCCCCCCCCCC                      CCCC                            CCCCC+++++++++''.......''++CCCC++++++++++CCCCCCCCCCCCCC CCCCCC
+                                                                           CCCCCCCCC++'''''''++CC    CCCCCCCCCC
+                                                                                    CCXXXXXXXCC
+                                                                                      CCCCCCC
*++++++++++==-MMAAMAX1ZXAXXXXZXXXXAMM-=+++-MAXXZZZZ111)11111ZZZZZZXAAAM--==++'+'''''..--------..''+++++'''..'''+====--======+=M-====+
+CCCCCCCCCCCCC                       CCCCCC                            CCCCCC+C+++++''........''++CCCCC+++''+++CCCCCCCCCCCCCCC CCCCCC
+                                                                            C CCCCC++''''''''++CC     CCC++CCC
+                                                                                   CCXXXXXXXXCC          CC
+                                                                                     CCCCCCCC
*++++++++===-MMMM-==MAMMMAAAXXAAAM---MMM-MAX111111)+))))111111ZZZXXAAAAM--=++++'''....--------..'''''''...-..''+===---=++===+=M-===++
+CCCCCCCCCCCC    CCC              CCC   C                               CCCCCCC+++''''........''+++++++'''.''++CCCCCCCCCCCCCCC CCCCCC
+                                                                              CCC++++''''''''++CCCCCCC+++'++CC
+                                                                                 CCCCXXXXXXXXCC       CCCXCC
+                                                                                     CCCCCCCC            C
*===++++++==---==+''+=-MMAAAAXXAAAAAXZZZZ11)+))+)+++))))))))111ZZZXAAAAM--==++''''....-----....'''''.....--...''++=--==++===+=M=+++++
+CCCCCCCCCCCCCCCCC++CCC                                                 CCCCCC++++''''.....''''+++++'''''..'''++CCCCCCCCCCCCCC CCCCCC
+                 CC                                                          CCCC++++'''''++++CCCCC+++++''+++CC
+                                                                                 CCCCXXXXXCCCC     CCCCCXXCCC
+                                                                                     CCCCC              CC
*++++'++++++=+=+=+'.'=-MAXXXZZ111111)))))+)+++++++++++++))))1ZZZZXXAAAAMM-===+'''''...--...''''.......'...-....'+==--=+++==++=-=+++++
+CCCC+CCCCCCCCCCCC+'+CC                                                  CCCCC+++++'''..'''++++'''''''+'''.''''+CCCCCCCCCCCCCCCCCCCCC
+    C            C+C                                                         CCCCC+++''+++CCCC+++++++C+++'++++C
+                  C                                                               CCCXXCCC    CCCCCCC CCCXCCCC
+                                                                                     CC                  C
*+'''''+++++++====+'+=-MAXZ1)+++++)))))))+======+===++++))11ZZZZZXXAAAAMM-====+''''........'++'..'...''.....''.'+==--=''+++'+=-=++++=
+C+++++CCCCCCCCCCCC+CCC                                                  CCCCCC++++''''''''+CC+''+'''++'''''++'+CCCCCC++CCC+CCCCCCCCC
+ CCCCC            C                                                           CCCC++++++++C  C++C+++CC+++++CC+C      CC   C
+                                                                                  CCCCCCCC    CC CCC  CCCCC  C
*''''''+'++++==---===-MAXZ1+++++++))++)++=========++))111ZZZXXXXXAAAMAAAM-=+====+''.........'+'..''...'....'''''++===+''++'''+-=+'''+
+++++++C+CCCCCCCCCCCCC                                                   CCCCCCCC++'''''''''+C+''++'''+''''+++++CCCCCC++CC+++CCCC+++C
+CCCCCC C                                                                        CC+++++++++C C++CC+++C++++CCCCC      CC  CCC    CCC
+                                                                                  CCCCCCCCC   CC  CCC CCCC
*'''''''++++==--MM----MAXZ1+)))1))))))))++===++++))111ZZXXXXAAAXXXAMMAAAM-=+==--=+'.......-.++''''+''......'++''''+++''++'''+=-=+''+=
++++++++CCCCCCCC  CCCC                                                   CCCCCCCCC+'''''''.'CC++++C++''''''+CC++++CCC++CC+++CCCCC++CC
+CCCCCCC                                                                          C+++++++'+  CCCC CC++++++C  CCCC   CC  CCC     CC
+                                                                                  CCCCCCCXC         CCCCCC
+                                                                                         C
*'''''''+++===----=+++=-MXZ11ZZZ111))))))+++))11111ZZZXXXAAAAAAXXAAAAAAXAM-===--=++'.'..'..'++'+++''.......'++''''+++''++'''+=-=++''=
++++++++CCCCCCCCCCCCCCCC                                                  CCCCCCCCC+'+''+''+CC+CCC++'''''''+CC++++CCC++CC+++CCCCCC++C
+CCCCCCC                                                                           C+C++C++C  C   CC+++++++C  CCCC   CC  CCC      CC
+                                                                                   C CC CC         CCCCCCC
*''+'+++++====--==+'''+=MXZ11ZZZ11))))))))1111ZZZZZZZXXAAAMAAAAAXXAAXXXXAAM-==--==+'''..''.'=+'+=+..-......''++''+=++'+++'''++=-++''+
+++C+CCCCCCCCCCCCCC+++CC                                                   CCCCCCCC+++''++'+CC+CCC''.''''''++CC++CCCC+CCC+++CCCCCC++C
+CC C              CCC                                                             CCC++CC+C  C   ++'++++++CC  CC    C   CCC      CC
+                                                                                     CC  C       CCXCCCCCC
+                                                                                                   C
*'''++'+++====---==+++=-AZ1)111111111ZZXXXXXXZZXXAAAAAAAAMMAAAAXXAXXXXZZXAM--====+''..-.'''+=+'+'.---.......'++'+++++++++'''+'==+'..+
++++CC+CCCCCCCCCCCCCCCCC                                                   CCCCCCC++''.'+++CCC+C+'...'''''''+CC+CCCCCCCCC+++C+CCC+''C
+CCC  C                                                                           CC++'+CCC   C C+'''+++++++C  C         CCC C   C++
+                                                                                   CCXC         CXXXCCCCCCC                      CC
+                                                                                     C           CCC
*''++++++====----==+++-MX1)11ZXXXAXXAAAAAAAAAXXXXAAAAAAXXAAAAAAXXAXXXXZZZXAM-====+''''..'''++''..----...'....'++=+++==-=+..'''==='..'
+++CCCCCCCCCCCCCCCCCCCC                                                     CCCCCC++++''+++CC++''....'''+''''+CCCCCCCCCCC''+++CCC+''+
+CC                                                                               CCCC++CCC  CC++''''+++C++++C           ++CCC   C++C
+                                                                                     CC       CCXXXXCCC CCCC            CC       CC
+                                                                                                CCCC
*'+++++++=====--==+'++-MAZ1ZAM-M-----=--MMMAAXXXXXXXXXXZZXXXAAAAAAAXXXXXXXAM-=+++++++'++++''''.----..........'++=++=---=+..'''=-=+..'
++CCCCCCCCCCCCCCCCC+CCC       C CCCCCCCC                                    CCCCCCCCC+CCCC++++'....''''''''''+CCCCCCCCCCC''+++CCCC''+
+C                 C                                                                 C    CCCC+''''++++++++++C           ++CCC    ++C
+                                                                                             CXXXXCCCCCCCCCC            CC       CC
+                                                                                              CCCC
*'+++++=+====----==++==-MXZXM=+==+++++==-MMAAAXXXXXZZZZZZZZXAMMAAAAAAAXXAAAM-=++++++++===++''..---.'''......''+====-MM-=+.''++=-=+'''
++CCCCCCCCCCCCCCCCCCCCCC     CCCCCCCCCCCC                                   CCCCCCCCCCCCCCC++''...'+++''''''++CCCCCC  CCC'++CCCCCC+++
+C                                                                                         CC++'''+CCC++++++CC           +CC      CCC
+                                                                                            CCXXXC   CCCCCC             C
+                                                                                              CCC
*'+++++++==-------=+''+=MZXXM==+''''''++=-MAMMAXXXXZXXXXZZZZXAAMMMMAMMMMM--==++'''++=++==++''.-----'''''...''+==---MMM-='.'+''===++''
++CCCCCCCCCCCCCCCCCC++CC     CCC++++++CCCC                               CCCCCC+++CCCCCCCCC++'.....+++++'''++CCCCCC   CC+'+C++CCCCC++
+C                  CC          CCCCCC                                         CCC         CC+'''''CCCCC+++CC           C+C CC     CC
+                                                                                            CXXXXX     CCC              C
+                                                                                             CCCCC
*'++++======---M--='.'=-AZXAM-==+'''''++=-MMAAXXXXZZXXXXXZZZZZXAMMMAMM---==++++''++==+++=+'''--..--..''''''++===----MMM='.'+''==++++'
++CCCCCCCCCCCCC CCC+'+CC     CCCC+++++CCCC                            CCCCCCCCC++CCCCCCCCC+++..''..''++++++CCCCCCCCC   C+'+C++CCCCCC+
+C                 C+C           CCCCC                                         CC         CCC''++''++CCCCCC             C+C CC      C
+                   C                                                                        XXCCXXCC                    C
+                                                                                            CC  CC
*+++++======---MM-=+''+MAZXAM--==+''''+====-AXZZZZZZZZZZXAXXZZXXAMMMMMM-===+'''''++==+'+==''.--..-.....''+++=-=+==---MM='.'+''==++++'
+CCCCCCCCCCCCCC  CCC++C      CCCCC++++CCCCCC                           CCCCC+++++CCCCC+CCC++'..''.'''''++CCCCCCCCCCCC  C+'+C++CCCCCC+
+                   CC            CCCC                                      CCCCC     C   CC+''++'+++++CC               C+C CC      C
+                                                                                           CXXCCXCCCCC                  C
+                                                                                            CC  C
*++++=+====---MAAM-=+'+-AZZXA-====+'''++=--=-AXZ11ZZZZZZZXAAAXXXAAAMMMM----==+'''++--+'+=='...-....'...''+==---++=---MM-'.'=+'+==+=++
+CCCCCCCCCCCCC    CCC+CC     CCCCCC+++CCCCCCC                          CCCCCCC+++CCCCC+CCC+'''.''''+'''++CCCCCCCCCCCC  C+'+CC+CCCCCCC
+                    C             CCC                                        CCC     C   C+++'++++C+++CC               C+C  C
+                                                                                          CCCXCCCC CCC                  C
+                                                                                             C
*++++=====--MMAAXAM-=++-AZZXAM==++++'''+=MAAMMAXXZZZZXXXZXXXXAXAAMMM-----=--=+'''++==+''++'........''''++===---++=MM-MM='.+=++==+==++
+CCCCCCCCCCC       CCCCC      CCCCCC+++CC                           CCCCCCCCCC+++CCCCC++CC+''''''''++++CCCCCCCCCCC  C  C+'CCCCCCCCCCC
+                                   CCC                                       CCC     CC  C++++++++CCCC                 C+
+                                                                                          CCCCCCCC                      C
*++++====---MAAXXXXM-=+=MXXXAM-=+++=++++=-AXZXXAAXXZZZZZZZ1+)XAAAM--===--====+''.+++=='.''......-..'++++====--=++=-----+''+=++=++==++
+CCCCCCCCCCC        CCCC      CCCCCCCCCCCC                        CCCCCCCCCCCC++'CCCCC+'++''''''.''+CCCCCCCCCCCCCCCCCCCC++CCCCCCCCCCC
+                                                                             CC+     C+CC++++++'++C                    CC
+                                                                               C      C  CCCCCCXCC
+                                                                                               C
*++++====--MMAXXXZXXA--=-AAAMM--=++=====--MAXZZXAAAAXXZ111) -ZAAAM--=++=-=++==+'.'''++''''...''....'++++===---=+==----+'.'+====++++++
+CCCCCCCCCC          CCCC     CCCCCCCCCCCC                        CCCCCCCCCCCCC+'+++CC++++'''++''''+CCCCCCCCCCCCCCCCCCC+'+CCCCCCCCCCC
+                                                                              C+CCC  CCCC+++CC++++C                   C+C
+                                                                               C         CCC  CCCC                     C
*++++===--MMAAXXZZZZAM-=-AXAM----===-----MMMMXZZXXAAMMAZZ11))XAMAAM--=++==++===+..'..'''+'..'++'...'++++++=----==----=''.'+===++++'''
+CCCCCCCCC            CCC    CCCCCCCCCCCC                          CCCCCCCCCCCCC''+''+++C+''+CC+'''+CCCCCCCCCCCCCCCCCC++'+CCCCCCCC+++
+                                                                               ++C++CCC C++C  C+++C                  CC+C        CCC
+                                                                               CC CC     CC    CCC                     C
*+++===---MAAXXZZZZZA-=+=MAXAAMAAMMMMMMMMMMMMAAAXXXAM-MAXAAAM-=--MM-==+'+=+++++'......''++'.''++...''++''++=-M---M--=+'..'====+''+'''
+CCCCCCCCC           CCCC                            C       CCCC  CCCC+CCCCCCC+''''''++CC+'++CC'''++CC++CCCC CCC CCCC+''+CCCCC++C+++
+                                                                      C       C++++++CC  C+CC  +++CC  CC             C++C     CC CCC
+                                                                               CCCCCC     C    CCC                    CC
*++===---MMAXXXZZ1ZZA-+++=MAAMMAXXXXAAAAAAAMMMMAMAAAMMMMAMMM-=+'+=--==+''++'++'...--...'++'...'++'.'''''''++=MM-MM-=++'.'+====+.''++'
+CCCCCCCC            CCCCC                                  CCC+CCCCCCC++CC+CC+'''..'''+CC+'''+CC+'+++++++CCC  C  CCCC+'+CCCCCC'++CC+
+                                                              C       CC  C  C+++''+++C  C+++C  C+CCCCCCC            C+C      +CC  C
+                                                                              CCCXXCCC    CCC    C                    C       C
+                                                                                 CC
*++===--MMAAXXXZZ1ZXA-+''+=MM--MAXZZZXXXAAAAAAMAAAAMMMMMMMM-==+..'=M--=+'''.'++'...-....'''....++'..'''+++++=---MM-+'''.'+===='.''++'
+CCCCCCC             CC++CC  CC                            CCCC''+C CCCC+++'+CC+'''.''''+++''''CC+''+++CCCCCCCCC  CC+++'+CCCCC+'++CC+
+                      CC                                      ++C      CCC+C  C+++'++++CCC++++  C++CCC             CCC+C     C+CC  C
+                                                              CC          C    CCCXCCCC   CCCC   CC                   C       C
+                                                                                  C
*====--MMAAXXZZ111ZXM-+''+=-M----MAXZZZXXAAAAAAAAAAMMMMMMMA-=+++..+MAM-+''...'++'........''...-.''....'+=====-----=+'''''+===+'''++++
+CCCCCC              CC++CCC CCCC                          CCCCC''C   CC++'''+CC+''''''''++'''.'++''''+CCCCCCCCCCCCC+++++CCCCC+++CCCC
+                      CC                                       ++      CC+++C  C++++++++CC+++'+CC++++C             CCCCC     CCC
+                                                               CC        CCC    CCCCCCCC  CCCXC  CCCC
+                                                                                             C
*===---MMAXXXZ11)1ZXM='.''+=-------AXXXXAAAAMMMAAAMM----MM-M=+'+''+-MAM=+''..''++'''..'......--..'....''+=--M---===+'.'''++++++''+''+
+CCCCCC              C+'++CCCCCCCCC                 CCCC  C CC+C++CC   CC++''++CC+++''+''''''..''+''''++CCCC CCCCCCC+'+++CCCCCC++C++C
+                     C+CC                                    C CC       CC++CC  CCC++C++++++''++C++++CC            C+CCC      CC CC
+                      C                                                   CC       CC CCCCCCXXCC CCCC               C
+                                                                                            CC
*==----MAAXXZ11)))1XM='..'+====----MAXXAAMMMMMMMMMMM=++==----+'+++=-MMM-++'''''++''+'.''.........'...'''+=-MMM--==+'.''++++++++''''''
+CCCCCC              C+''+CCCCCCCCC                 CCCCCCCCCC+CCCCC   CCC+++++CC++C+'++'''''''''+'''+++CCC   CCCCC+'++CCCCCCCC++++++
+                     C++C                                    C           CCCCC  CC C+CC+++++++++C+++CCC           C+CC        CCCCCC
+                      CC                                                            C  CCCCCCCCC CCC               C
*==--MMMAXXXZ1)))1ZXM='..''=======-MMAAMMMM-=--MM---=+++++++=+'+==------=+''''++'''+'..'.---...'''...'''+-MAAAM-==+'''+=+''+=+'''..''
+CCCC                C+''++CCCCCCCC        CCCC  CCCCCCCCCCCCC+CCCCCCCCCCC++++CC+++C+''+'...'''+++'''+++CC     CCCC+++CCC++CCC+++''++
+                     C++CC                                   C           CCCC  CCC C++C+'''+++CCC+++CCC           CCC   CC   CCC++CC
+                      CC                                                            CC CXXXCCC   CCC                            CC
+                                                                                        CCC
*==-MMMAAXZZ1))))1XM-+.--..+==----=--------==-------=+++++''+++==----==--=''+==+'''+..'.-.--..'++'''''+=-AAAAAA-===++===+''=-+'''..'+
+CCC                CC'..''CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++CCCCCCCCCCCCCC++CCCC+++C''+'.'..''+CC+++++CCC      CCCCCCCCCC++CCC+++''+C
+                     +''++                               CC              CC    CCC ++C+'+''++C  CCCCC                   CC   CCC++C
+                     CXXCC                                                         CC CXCXXCC                                   CC
+                      CC                                                               C CC
*=--MMAAXXZZ1)))1ZA-='.----.'+=-MM---------==========+'''++'''+--=---=+==-+''==+''''..''.....''+++'''+=-MAAXAAAM==++++=-+''+-='''.'++
+CCC               CC+'....'+CCC  CCCCCCCCCCCCCCCCCCCC+++CC+++CCCCCCCCCCCCC++CCC++++''++'''''++CCC+++CCC        CCCCCCCCC++CCC+++'+CC
+                    C+''''+C                         CCC  CCC             CC   CCCC++CC+++++CC   CCC                    CC   CCC+C
+                     CXXXXC                                                        CC  CCCCC                                    C
+                      CCCC
*=--MMAAXZZ1)+))1XM=+'......''+=-MMMMAM-----=======++++'''++'''+==-=====+==''=-=++''..''.'..'+''++++++-MAAAXAAA-=+''+===+'+=-=''..'+=
+CCC               CC+''''''++CCC      CCCCCCCCCCCCCCCC+++CC+++CCCCCCCCCCCC++CCCCC++''++'+''+C++CCCCCCC        CCC++CCCCC+CCCC++''+CC
+                    C++++++CC                         CCC  CCC            CC     CC++CC+C++C CC                  CC     C    CC++C
+                     CCCCCC                                                        CC  C CC                                    CC
*=-MMMAAXZZ1)+))ZA-+'....'''+++===-MMAAAM-===++==+==+''''''++++++=-=++=='++'.+-=++'.-.''''..'++'+++++=MAAAAXAAM=+'..'+===++=-=''..'+=
+CC               CC+''''+++CCCCCCC      CCCCCCCCCCCC++++++CCCCCCCCCCCCC+CC+'CCCCC+'.'++++''+CC+CCCCCC         CC+''+CCCCCCCCC++''+CC
+                   C++++CCC                         CCCCCC             C  C+     C+'+CCCC++C  C                 C++C         CC++C
+                    CCCC                                                   C      CXC    CC                      CC            CC
+                                                                                   C
*-MMMAAXXZ1))++1ZA='...-..''+=====-MMMMMM-=+======-=+'''+'.'++=+'+=='+=+''++''+=++'...'..'.-'++++++==-MAAAAAXAM=+'..''+====--+'''''+=
+C                C+'''.''++CCCCCCC      CCCCCCCCCCCC+++C+'+CCCC+CCC+CCC++CC++CCCC+'''+''+'.+CCCCCCCCC         CC+''++CCCCCCCC+++++CC
+                  C+++'++CC                         CCC C+C    C   C   CC  CC    C+++C++C+'C                    C++CC        CCCCC
+                   CCCXCC                                C                        CCC CC CX                      CC
+                      C                                                                   C
*-MMAAAXZZ1))))ZXM='..-----..'+==-=-MM---==+++++==--=++++'''++==+''+++=+''''+''++''.'+'.....'++++++==-MMMMMAAAM=+''.'''+===--+'++''++
+C                C+''.....''+CCCCCC  CCCCCCCCCCCCCCCCCCC+++CCCCC++CCCCC++++C++CC++'+C+'''''+CCCCCCCCC         CC++'+++CCCCCCC+CC++CC
+                  C++'''''++C                           CCC     CC     CCCC CC  CC+C C+++++C                    CC+CCC       C  CC
+                   CCXXXXXCC                                                      C   CCCCC                       C
+                     CCCCC
*-MMAXXZZ1)+++1ZA-+'..-.----..+=-M--MAM--==+'''++==-=++==+=++====++=+'+++''.'+''++''+=='....'++++=======---MAAM==+'''.'+++=--+'++++++
+C               CC+''.'....''CCC CC   CCCCC+++CCCCCCCCCCCCCCCCCCCCCC+CCC++'+C++CC++CCC+''''+CCCCCCCCCCCCCC    CCC+++'+CCCCCCC+CCCCCC
+                  C++'+''''++              CCC                      C   CC+C CC  CC   C++++C                     CCC+C       C
+                   CCXCXXXXCC                                             C            CCCC                         C
+                     C CCCC
*MMAAXXZ11)++)1XM=+'...------.'=-MM--MMM=++++'''++++=++=-=======-==-=++==+'..+'++++'==='....'+++===+++++++=-AAM-=++''.''''+--='''++++
+                CC+'''......'+CC  CC   CCCCC+++CCCCCCCCCCCCCCCCCCCCCCCCCC+''C+CCCC+CCC+''''+CCCCCCCCCCCCCCC   CCCC++'++++CCCC+++CCCC
+                  C+++''''''+C              CCC                          C++ C    C   C++++C                      CC+CCCC    CCC
+                   CCCXXXXXXC                                             CC           CCCC                         C
+                      CCCCCC
*MAAXXZZ1)+=+1ZA-++'.....---.''+=-MM-===+'''''''+=++'++=----==----=MM=+=M-+..'++++++==+'.--..'+==-=++++'''+=-AM-==++'..''''=-=''''+++
+               CCC+'''''...'++CCC  CCCCC+++++++CCCC+CCCCCCCCCCCCCC  CCC CC''+CCCCCCCCC+'..''+CCCCCCCCC+++CCC  CCCCC+''++++CCC++++CCC
+                  C+++++'''+CC          CCCCCCC    C                      ++C         C+''++C         CCC          C++CCCC   CCCC
+                   CCCCCXXXC                                              CC           CXXCC                        CC
+                        CCC                                                             CC
*MAAAXZZ)+++)1XM=+''.....--..'+''=---=++'......'=-=+''++=-M-------=-MM==-M=+''===+++==+.----.'++=-==+++''.'+=--====+'.....'=-+'''''+'
+               CC++'''''..''+C++CCCCCCC+''''''+CCCC++CCCC CCCCCCCCC  CCC CC++CCCCCCCCC'....'+CCCCCCCCC++'+CCCCCCCCC+'''''+CCC+++++C+
+                 CC+++++''++C CC       C++++++C    CC                      CC         +''''+C         CC+C         C+++++C   CCCCC C
+                   CCCCCXXCC            CCCCCC                                        CXXXXC            C           CCCCC
+                        CC                                                             CCCC
*MAAXZZ1)+++)ZX-+'''.........'+'''+====+'...''.'+=-=++=+==---====-==-M--MA-=+====+'+==+.-----.'+=---==+''..'+--=====''....'==+''''''.
+              CC+++'''''''''+C+++CCCCCC+'''++'+CCCCCCCCCCCCCCCCCCCCC CC  CCCCCCCC+CCCC'.....'+CCCCCCCC++''+CCCCCCCC++''''+CCC++++++'
+                CCC+++++++++C CCC      C+++CC+C                                  C    +'''''+C        CC++C        CC++++C   CCCCCC+
+                   CCCCCCCCC            CCC  C                                        CXXXXXC           CC           CCCC          C
+                                                                                       CCCCC
*AAXXZZ))==)1XM=''...........'++'''+=+++'....'+'+=---=--=====+++''++==-MAXM=+==+++'+--='-----.'+-MMM-=+''...+=-----=+'....'+++''''...
+              C++'''''''''''+CC+++CCCCC+''''+C+CCCCCCCCCCCCCCCC++CCCCC    CCCCCCC+CCCC+.....'+CC   CCC++'''CCCCCCCCC+''''+CCC++++'''
+               CC+++++++++++C  CCC     C++++C C                CC                C    C'''''+C        CC+++         C++++C   CCCC+++
+                 CCCCCCCCCCC            CCCC                                           XXXXXC           CCC          CCCC        CCC
+                                                                                       CCCCC
*AXXZ1))+=+1ZA-+'......''''..''+++'==++++'..''+==-----M---===+'''''+++=-MXX-=--=++++--='.----.'=MAAAM-+'...'+=-MMM-+'.....''''+''...-
+             CC+''''''++++''++CCC+CCCCCC+''++CCCCCCCC CCCCCCC+++++CCCCC   CCCCCCCCCCCC+'....'+C     CC+'''+CCC   CC+'''''++++C++'''.
+               C++++++CCCC++CC   C      C++CC                CCCCC                    C+''''+C        C+++C        C+++++CCCC CC+++'
+                CCCCCC    CC             CC                                            CXXXXC          CCC          CCCCC       CCCX
+                                                                                        CCCC                                       C
*AXXZ11)++)ZX-+''......''++''...'''++++++++'''+===---M-----=+++'...'+++==MXAM--=++''=-='.----.'=MAXAAM=+''..'=-MMM=+'..--.'''''''...-
+            CC++''''''++CC++'''+++CCCCCCCC+++CCCCCCC CCCCCCCCC+'''+CCCCC    CCCCC++CCC+'....'+C      CC++''+CC   CC+''..'+++++++'''.
+              CC++++++CC  CC+++CCC        CCC                 C+++C              CC   C+''''+C         CC++C       C++''+CCCCCCC+++'
+                CCCCCC      CCC                                CCC                     CXXXXC            CC         CCXXC       CCCX
+                                                                                        CCCC                          CC           C
*XXZZ1)++)1XM=+''.....''+++++..-.'++=++''++++=++++=-MM---M-==++'...'++==--XXAMM=+''+-=+..---.'+-AXXAMM-+''..'=MAM-='.-..--.'..'''....
+            CC++'''''++CCCCC''.'+CCCCC++CCCCCCCCCCC  CCC CCCCC+'''+CCCCCC     CC++CCCC''...'+CC      CC++''+C   CC+'.''..'+''+++''''
+              CC+++++CC     ++'+C     CC                      C+++C             CC    ++'''+C          CC++C      C+'++''+C++CCC++++
+                CCCCC       CCXC                               CCC                    CCXXXC             CC        CXCCXXC CC   CCCC
+                              C                                                         CCC                         C  CC
*XZZ1)++)1XM-+'.''.''''++++++'..-.''+=++'''+=======---==-MM-=++'...'''+---AZXAM-+'.'=+'.-----'=MAXZAM-=+''..'+MAM-='.-----..-.''.....
+           CC+'++'++++CCCCCC+''.'++CCCC+++CCCCCCCCCCCCCC  CCCC+'''+++CCCC     CC+'+CC+'.....+C      CCC++''+C   CC+'.....''.'++'''''
+             C+CC+CCCC      C++'+CC    CCC                    C+++CCC           C+C  C+'''''C          CC++C      C+'''''++'+CC+++++
+              C  C           CCXC                              CCC               C    CXXXXX             CC        CXXXXXCCXC  CCCCC
+                               C                                                       CCCCC                        CCCCC  C
*ZZ1))+)1ZA-=''.'''+++++++''''''....'+=+'.''=--=------=++=-===+'...'''+==-MZ1ZAM='..++'.-----.+MAXZXM=+''...'+-AM-=+.--.--..-.'''....
+          CC++'+++CCCCCCC++++++''''+CCC+'++CCCCCCCCCCCCCCCCCCC+'''+++CCCC      C+''CC+'.....'C      CC++'''+CC  CCC'..'..''.'+++''''
+            CC+CCC       CCCCCC++++C   C+CC                   C+++CCC           C++  C+'''''+         CC+++C       +''+''++'+CCC++++
+              C                CCCC     C                      CCC               CC   CXXXXXC           CCC        CXXCXXCCXC   CCCC
+                                                                                       CCCCC                        CC CC  C
*ZZ1)))1ZA-='..''++++++++'''''''''....++'''++=----==--=+'''+==+'''.'++=---MX11XM-+'.''..------+MXZZXM=+'...''+-MM--+.-----..-.''''...
+         CC+''++CCCCCCCC+++++++++''''CC+++CCCCCCCCCCCCC+++CCCC+++'+CCCCCC      CC+'++''......C      CC+'''++CC  CCC'.....''.'++++'''
+           C++CC        CCCCCCCCC++++  CCC             CCC    CCC+C              C+CC++''''''         C+++CC       +'''''++'+CCCC+++
+            CC                   CCCC                            C                C  CCXXXXXX          CCC         CXXXXXCCXC    CCC
+                                                                                       CCCCCC                       CCCCC  C
*Z111)1ZXM=+'.'''+++++++=++'+++'''''''''''+=-----===-=+''''''+'''''''+-MAAAX1ZXAM-+'....------+MXZZZA=+'..'''+-MMM-='.-.-...-........
+         CC+'+++CCCCCCCCCC+CCC+++++++++++CCCCCCCCCCCCC++++++C+++++++CC          CC+''''......C      CC+''+++CC   CC+'.'.'''.''''''''
+           C+CCC          C   CCCCCCCCCCC             CCCCCC CCCCCCC              C++++''''''         C++CCC       C+'+'+++'++++++++
+            C                                                                      CCCCXXXXXX          CC           CXCXCCCXCCCCCCCC
+                                                                                       CCCCCC                        C C   C
*Z11111XA-+'.''++++++++===+++===+'''.+++''''+---=====-+''''''''..''''+=MAZZZZZXXAM=+'..-------+MXZ1ZA-+'...''+=MMMM='.......-........
+        CC+'++CCCCCCCCCCCCCCCCCC+++'CCC++++CCCCCCCCCCC++++++++''++++CC           CC+''.......C      CC+'''++CC    C+'''''''.''''''''
+          C+CC                  CCC+   CCCC           CCCCCCCC++CCCC               C++'''''''         C+++CC       C+++++++'++++++++
+           C                       C                          CC                    CCXXXXXXX          CCC          CCCCCCCXCCCCCCCC
+                                                                                      CCCCCCC                              C
*11111ZXM=+'''+++++++======+++=-===+.'+=---=====+=-=+====+'''''....''+=-AZ1)1ZXAAM-='..-------'MZ11ZX-=''..'''=MMAM=+....''.-........
+        CC+++CCCCCCCCCCCCCCCCCCCCCC'+CCCCCCCCCCCCCCCCCCCC+++++''''++CCC          CC+''.......+      CC++''+++C    CC''''++'.''''''''
+          CCC                      +C                    CCCCC++++CC               C++'''''''C        CC++CCC       ++++CC+'++++++++
+                                   C                          CCCC                  CCXXXXXXX           CC          CCCC  CXCCCCCCCC
+                                                                                      CCCCCCC                              C
*1111ZXA-+''''++++++=+==++++++++++===+++=-MMMMMM--==++===++'''.......+=-MX1))1ZAMM-='..-------'-Z111XA=+''''''+-AAM='....''.--..--...
+       CC++++CCCCCCCCCCCCCCCCCCCCCCCCCCCC      CCCCCCCCCCC+++'''''''CCC          CC+''.......+C      CC++++++CC   C+''''++'..''..'''
+         CCCC                                             CCC+++++++               C++'''''''C         CCCCCC      C++++CC+''++''+++
+                                                             CCCCCCC                CCXXXXXXX                       CCCC  CXXCCXXCCC
+                                                                                      CCCCCCC                              CC  CC
*1111ZXM=+''''++++++===++++++++'''++=--===----MM-==+++===+++'''''...'+=MXZ))+)1XM--='..------.'MZ)1ZXA-+''''''+-MMM='.-..++'--..--..'
+       CC++++CCCCCCCCCCCCCCCCC+++CCCCCCCCCCCC  CCCCCCCCCCCC+++++'''+CC          CCC+''......'+       CC++++++CC   C+'.''CC+..''..''+
+         CCCC                 CCC                          CCCCC+++C               C++''''''+C         CCCCCC      C+'++  C''++''++C
+                                                                CCC                 CCXXXXXXC                       CXCC   XXCCXXCC
+                                                                                      CCCCCC                         C     CC  CC
*1))1XA-=+'''+'+++'++====+++'+'''''++=====-====---===========++'''...'+-X1)++)1ZAM=++..-------+MZ11ZXA-+'''''''+=--+'....+='------..'
+      CCC+++C+CCC+CCCCCCCCC+C+++++CCCCCCCCCCCCCCCCCCCCCCCCCCCC+++'''+CC          CCC''.......C       CC+++++++CCCCC+''''CC+......''+
+         CCC C   C         C CCCCC                            CCC+++C               ++'''''''          CCCCCCC     C++++  C''''''++C
+                                                                 CCC                CCXXXXXXX                       CCCC   XXXXXXCC
+                                                                                      CCCCCCC                              CCCCCC
*)))1XM-++'+++=++++==-----==+++'.-.+===----MM-M--=++==-=+++===+++'..-.'=MZ)+++)ZAM=+''.------.=A111XAM-+'''''''+=-='....'=='------.''
+      CCC+CCCCCCCCCCCCCCCCCCCC+'.'CCCCCCCC  C CCCCCCCCCCCCCCCCCC+''.'+C          CC++'......'C       CC+++++++CCCC+''''+CC+......'++
+         C                    C+'+                              C++'+C             CC+''''''+          CCCCCCC    C++++C  C''''''+CC
+                               CXC                               CCXC                CXXXXXXC                      CCCC    XXXXXXC
+                                C                                  C                  CCCCCC                               CCCCCC
*+))ZA-=+++++======------==+++''..'+=-MMMM--MMMM----=--==++''++'''...'+=MXZ11))ZXM=+'..------'=X11ZXAM-+''...'''+=+'.'''.'+'------..'
+     CCCCCCCCCCCCCCCCCCCCCCCC++''+CCC    CC    CCCCCCCCCCC++CC+++'''+CC          CC+''......+C       CC++'''+++CCC+'+++'+C+......''+
+                             CC++C                        CC  CCC+++C              C++''''''C          CC+++CCC   C+CCC+C C''''''++C
+                               CC                                CCC                CCXXXXXX             CCC       C   C   XXXXXXCC
+                                                                                      CCCCCC                               CCCCCC
*+)1ZA-=+''++==-==-----==+'''+'''++==-MMMMMMMMMMMAAAM-M-==+''''+''...'=-MAXZZZZXXA-+'..------'=AZ11XAM-+'......''++'.'+'..'.------...
+     CCC++CCCCCCCCCCCCCCC+++C+++CCCCC               C CCCC++++C++'''+CC          CC+''......+C       CC+''''''++CC+'+C+''+'......'''
+        CC               CCC CCC                          CCCC CC+++C              C++''''''C          C++++++CC  C+C C++C+''''''+++
+                                                                 CCC                CCXXXXXX            CCCCCC     C   CC CXXXXXXCCC
+                                                                                      CCCCCC                               CCCCCC
*++)ZA-=++'+++====---===+''.''+++======-MMM--M--MAAAAAM-=+++++++=++..'=-AZ1111XXAM-='.-------'=AX11ZXA-+'.........'''++'..''------...
+     CCCC+CCCCCCCCCCCCCC++'++CCCCCCCCCC   CC CC       CCCCCCCCCCCC''+CC          CC+'.......+C       CC+'''''''''+++CC+''++......'''
+         C              CC+CC                                     ++C              C+'''''''C          C+++++++++CCC  C++CC''''''+++
+                          C                                       CC                CXXXXXXX            CCCCCCCCC      CC  XXXXXXCCC
+                                                                                     CCCCCCC                               CCCCCC
*=+)ZA-=++++++====---====+++++==-====++==----MMMMAMMM-M--======++++'.'+MX1)+++1ZA-=+'.-------'-AXZZZXM=+..........'''+++'.''..---..''
+     CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC        C CCCCCCCCCCCC+'+C          CCC+'.......+C       CC''''''''''+++CCC+'++''...''++
+                                                                  C+C              C+'''''''C          ++++++++++CCC   C+CC++'''++CC
+                                                                   C                CXXXXXXX           CCCCCCCCCC       C  CCXXXCC
+                                                                                     CCCCCCC                                 CCC
*=+1XM=+++=++=+====-MM==--=++++=----===---=-MM--==----MMM-=====++++'''+=MX1)))1ZA-+'.-------.'-MXZZXA-='..........'+++++'''''...-.''+
+     CCCCCCCCCCCCCC  CCCCCCCCCCCCCCCCCCCCCC  CCCCCCCC   CCCCCCCCCC+++CC         CC+'.......'+C      CC+''''''''''+CCCCC+++++'''.'++C
+                                                                  CCC             C+'''''''+C         C++++++++++C     CCCCC+++'+CC
+                                                                                   CXXXXXXXC           CCCCCCCCCC           CCCXC
+                                                                                    CCCCCCC                                    C
*=+1XM=++++=======-MAA-=-=+'''+======++''+=-AAM----MMMMM--==+++++++++++=-MAZ1)1ZXM='.-------.+-MAXXAM-=+'''''....'+==++++''+++''..''+
+     CCCCCCCCCCCCC   CCCCC+++CCCCCCCCC++CCC   CCCC     CCCCCCCCCCCCCCCCC         C+'.......'CC      CCC+++++''''+CCCCCCC++CCC++''++C
+                          CCC         CC                                          C+'''''''+           CCCCC++++C       CC   CC++CC
+                                                                                   CXXXXXXXC                CCCC               CC
+                                                                                    CCCCCCC
*=+1X-====+===++++=-MM--===+==++++====+''=-MAAAAMAAAMMMMMM-++'++++====--MAAXZ111XM=+.-------'=-MAAAM-==++++++'.'+===++''+++==+'...''+
+    CCCCCCCCCCCCCCC  CCCCCCCCCCCCCCCCC++CC               CCC+CCCCCCCCCC          CC'.......+CC     CCCCCCCCC+'+CCCCCC++CCCCCC+'''++C
+                                      CC                    C                      +'''''''C                C+C      CC      C+++CC
+                                                                                   CXXXXXXX                  C                CCC
+                                                                                    CCCCCCC
*=+ZA-========+++'+==--========+''++=--MMAAAXXZXAAAAAMMMM-=+++=+++==-MAAXZZZZZZZXAM='-------+-MMAAM--==+=====+++=---=+++===--+'...'''
+    CCCCCCCCCCCC+CCCCCCCCCCCCCC++CCCCC                  CCCCCCCCCCCC              C+.......CC     CCCCCCCCCCCCCCCCCCCCCCCCCCC+'''+++
+                C              CC                                                  C'''''''                                  C+++CCC
+                                                                                    XXXXXXX                                   CCC
+                                                                                    CCCCCCC
*+1XM=====++=+++++==--=====+==++'''+----MMM-MAAMMMMMMMMM-====--=++===MAAAXXZ1)1ZXA-+'------.+--MMM---=++=-====+=-MM-=+++==+=-+'...'''
+    CCCCCCCCCCCCCCCCCCCCCCCCCCC+++CCCCC   C            CCCCCCCCCCCCC             CC+......'CCC   CCCCCCCCCCCCCCC  CCCCCCCCCCC+'''+++
+                               CCC                                                 C''''''+                                  C+++CCC
+                                                                                    XXXXXXC                                   CCC
+                                                                                    CCCCCC
*+ZX-=++++++++++++======+===++++'+++=---MM---MM---M-====+=====++''''+==-MMAX1111ZXM='------.'=-MMM---=++=--====--MM-=++===+=-=+''''''
+   CCCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCCCCC  CCC  CCC CCCCCCCCCCCCC++++CCCC           C+......'+CC   CCCCCCCCCCCCCCC  CCCCCCCCCCCC++++++
+                               C                               CCCC                C''''''+C                                  CCCCCC
+                                                                                    XXXXXXC
+                                                                                    CCCCCC
*1XM==++++'+'''+++=========+'''++'+++===MM--MMM--=-+++''''''.---------.'+=-AXZZZZXA-+.------'+===---=+'++====+=-M--=======+=-==++'''+
+   CCCCCC+C+++CCCCCCCCCCCCC+++CC+CCCCCC  CC   CCCCCCC++++++'.........'+CCC        CC'......+CCCCCCCCC+CCCCCCCCC CCCCCCCCCCCCCCCC+++C
+         C CCC             CCC  C                    CCCCCC+'''''''''+C             +''''''C         C                          CCC
+                                                           CXXXXXXXXXC              CXXXXXX
+                                                            CCCCCCCCC                CCCCCC
*1XM=+++++++'''++++=======-=+++++'+=====---M---=====+++'-----------------.'=MAAXXXAM='.-----'++++==-+''++==+++=-MM-==--==+=--===+++==
+   CCCCCCCC+++CCCCCCCCCCCCCCCCCC+CCCCCCCCC CCCCCCCCCCC+.................'+C        C+'.....+CCCCCCCC++CCCCCCCCC  CCCCCCCCCCCCCCCCCCC
+           CCC                  C                     C'''''''''''''''''+C          C+'''''C        CC
+                                                       XXXXXXXXXXXXXXXXXC            CXXXXX
+                                                       CCCCCCCCCCCCCCCCC              CCCCC
*1X-=+++++++''++++=====--=======+==-=======+++=++++'..---''------------''---'=-AXAM-='.----.''''++==+'''++++'+=-AAM---M-++=---===++=-
+  CCCCCCCCC++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+''...CC............CC...+CC    CC+'....'++++CCCCC+++CCCC+CCC   CCC CCCCCCCCCCCCCC
+           CC                                     C++'''BB''''''''''''BB'''C        C+''''+CCCC     CCC    C
+                                                   CCXXXHHXXXXXXXXXXXXHHXXX          CXXXXC
+                                                     CCCXXCCCCCCCCCCCCXXCCC           CCCC
*1A-=+++++++'''+==-====---===++==++====+++++====++'.---'''---..'''.---''''''--'=-MM-=+.--.'++''''++++'''''''''+-AAAMMMM===--MM--=+===
+  CCCCCCCCC+++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+'...CCC...''+++'...CCCCCC..+CC  CCC'..'+CC++++CCCC+++++++++CC       CCCCC  CCCCCCC
+           CCC                                   C+'''BBB'''++CCC+'''BBBBBB''C       +''+C  CCCC    CCCCCCCCC
+                                                  CXXXHHHXXXCC   CXXXHHHHHHXX        CXXC
+                                                   CCCXXXCCC      CCCXXXXXXCC         CC
*1A-++++++''''''+===+=====+==++++''+++++++++++++''---''''--.'++=++.-''''''''''--.+===+'...'+++'''++++'''..-..'+=MAAAMM-===-MAA--=====
+  CCCCCCC++++++CCCCCCCCCCCCCCCCC++CCCCCCCCCCCCC++...CCCC..'+CCCCC'.CCCCCCCCCC..'CCCCC+'''+CCC+++CCCC+++''.''+CC      CCCCC   CCCCCCC
+         CCCCCC                 CC             CC'''BBBB''+C     +'BBBBBBBBBB''+     C+++C   CCC    CCC++'++C
+                                                 XXXHHHHXXC      CXHHHHHHHHHHXXC      CCC              CCXCC
+                                                 CCCXXXXCC        CXXXXXXXXXXCC                          C
*)A-=+++'''+++'+++==+=++++++=++++''++++++''++++'---'''''-.++=---=+.-''''''''''''--'+++++''+====+++++++''----.''=-MMAAMM-=-MMAAM-----=
+  CCCCC+++CCC+CCCCCCCCCCCCCCCCCC++CCCCCC++CCCC+...CCCCC.'CCCCCCCC'.CCCCCCCCCCCC..+CCCCC++CCCCCCCCCCCC++....'++CC      CCC     CCCCCC
+       CCC   C                  CC      CC    C'''BBBBB'+        +'BBBBBBBBBBBB''C     CC            CC''''+CC
+                                               XXXHHHHHXC        CXHHHHHHHHHHHHXX                      XXXXC
+                                               CCCXXXXXC          CXXXXXXXXXXXXCC                      CCCC
*1A-==+++''''++++++=+++'''''''+++++++'''.'+++'.-----'''-.+=-AXA-=+-''''''---''''''-.'''+++=--=====+'++'.----.''+----MMM-==-MAAM----==
+  CCCCCC++++CCCCCCCCCC+++++++CCCCCCC+++'+CCC+'.....CCC.'CCC   CCC.CCCCCC...CCCCCC.'+++CCCCCCCCCCCC+CC+'....'++CCCCC   CCCC    CCCCCC
+        CCCC          CCCCCCC       CCC+C   C+'''''BBB'+         'BBBBBB'''BBBBBB'+CCC            C  C+''''+CC
+                                       C     CXXXXXHHHXC         XHHHHHHXXXHHHHHHXC                   CXXXXC
+                                              CCCCCXXXC          CXXXXXXCCCXXXXXXC                     CCCC
*1A-====+++''+++++++++''''''''''''.'''...'''''.---------+=-A+=A--=+---''-..---''''--..'+=-----=====''''.----''+=--==-MAM-=--MMMM---==
+  CCCCCCCC++CCCCCCCCC++++++++++++'+++'''+++++'.........CCC    CCCC...CC.''...CCCC..''+CCCCCCCCCCCC++++'....++CCCCCCC   CCCC    CCCCC
+          CC         CCCCCCCCCCCC+CCC+++CCCCC+'''''''''           '''BB'++'''BBBB''++C            CCCC+''''CC
+                                 C   CCC     CXXXXXXXXX           XXXHHXCCXXXHHHHXXCC                 CXXXX
+                                              CCCCCCCCC           CCCXXC  CCCXXXXCC                    CCCC
*ZA-======++++++++++++'''''++'''++...'.....''''''..----'=-MZ =A-'.'..----..----'----...'+=-------==+''.-----.+==--==-AAM-----M-----==
+  CCCCCCCCCCCCCCCCCCC+++++CC+++CC'''+'''''++++++''....+CC     C+'+''....''....C....'''+CCCCCCCCCCCC++'.....'CCCCCCCC   CCCCC CCCCCCC
+                     CCCCC  CCC  +++C+++++CCCCCC++''''C        C+C++''''++''''B''''+++C            CC+'''''+
+                                 CCC CCCCC      CCXXXX          C CCXXXXCCXXXXHXXXXCCC               CXXXXXC
+                                                  CCCC              CCCC  CCCCXCCCC                   CCCCC
*ZM-====++++++++++++'+++'..'++++=+'.'''.'''+=====''.---=MMAX1ZA=-''--'----------'=--.'''++=--MMMM=++''.-----'+=-====-AAM-------=---==
+  CCCCCCCCCCCCCCCCC+CCC+''+CCCCCC+'+++'+++CCCCCC++'...C       C.CC..+..........+C..'+++CCCCC    CCC++'.....+CCCCCCCC   CCCCCCCCCCCCC
+                   C   C++C      C+CCC+CCC      CC+'''         'BB''C''''''''''C ''+CCC            CC+'''''C
+                        CC        C   C           CXXX         XHHXX XXXXXXXXXX  XXC                 CXXXXX
+                                                   CCC         CXXCC CCCCCCCCCC  CC                   CCCCC
*1A-===+++++++++++++++++++'+++'++++''''''+==--M-='''.-.-MMAXXXA=-''--..-.=-''''----'-'''++'+-MMAAM-=++'.----.'====+=-MM----==-=======
+  CCCCCCCCCCCCCCCCCCCCCCC+CCC+CCCC++++++CCCCC CC+++'.'C       C.CC..''.'C.CCCC....C.+++CC+CC     CCCC+'....'+CCCCCCC  CCCCCCCCCCCCCC
+                         C   C    CCCCCC        CCC+'+         'BB''++'+ 'BBBB''''B'CCC  C           C+''''+C
+                                                   CXC         XHHXXCCXC XHHHHXXXXHX                  CXXXXC
+                                                    C          CXXCC  C  CXXXXCCCCXC                   CCCC
*ZA-===+=+==+++=++++'''++++=++++=++++++++=-MAAAM=''+.-'-MMAXXXX+---+'---.=-'''''''''-'++++''+-AXZXAM-=+'..--.'+=+++-----MMM==--=====-
+  CCCCCCCCCCCCCCCCC+++CCCCCCCCCCCCCCCCCCCC     C++C'.+C       C...C+...'C.CCCCCCCCC.+CCCC++CC      CCC+''..'+CCCCCCCCCC   CCCCCCCCCC
+                   CCC                          CC +'C         ''' C'''+ 'BBBBBBBBB'C    CC           C++''+C
+                                                   CX          XXX  XXXC XHHHHHHHHHX                   CCXXC
+                                                    C          CCC  CCC  CXXXXXXXXXC                     CC
*1A-=+++=+===++++++''''++++=--=-==-M---=-MAXZZXM+''+--'MAAAXXZA'---'--''--''''''''''-'++++++'+-AZ1ZZAM-='.--.'++++=MMM--MM-=-MM-===--
+  CCCCCCCCCCCCCCCC++++CCCCCCCCCCCC CCCCC       C++C..+        +...+..CC..CCCCCCCCCC.+CCCCCC+CC       CC+'..'+CCCCC   CC  CCC  CCCCCC
+                  CCCC                          CC ''C        C'''C''BB''BBBBBBBBBB'C      C           C+''+C
+                                                   XX          XXX XXHHXXHHHHHHHHHHX                    CXXC
+                                                   CC          CCC CCXXCCXXXXXXXXXXC                     CC
*ZM==+++++++++++++''''+++++=-=-AM-MAAMMMMXXZZZXA-+.'.-.-XXXXXXZ+------''''''''''''''-'+++++++++-X1))ZXA-+'.-.'+++=-MMM--MM-=-MM-==-MM
+  CCCCCCCCCCCCCCC++++CCCCCCCCC  C              CC'+'.'C       C......CCCCCCCCCCCCCC.+CCCCCCCCCC       CC+'.'+CCCCC   CC  CCC  CCCC
+                 CCCC                            +C+'+         ''''''BBBBBBBBBBBBBB'C                   C+'+C
+                                                 C CXC         XXXXXXHHHHHHHHHHHHHHX                     CXC
+                                                    C          CCCCCCXXXXXXXXXXXXXXC                      C
*ZM==++++++++'+'''''''+++++=--MMMMAAAAMMMXZZ1111Z-''.-.-XZZZXZZ=-''--''''''''''''''-.+++===+++'+-Z++)ZZA='.-.'+++=--------==--------M
+  CCCCCCCCCC+C+++++++CCCCCCCC                   C++'.'C       C.CC..CCCCCCCCCCCCCC.'CCCCCCCCC+CC       C+'.'+CCCCCCCCCCCCCCCCCCCCCC
+            C CCCCCCC                            CC+'+         'BB''BBBBBBBBBBBBBB'+         C          C+'+C
+                                                   CXC         XHHXXHHHHHHHHHHHHHHXC                     CXC
+                                                    C          CXXCCXXXXXXXXXXXXXXC                       C
*ZM======++++++++++++++++++=MAAMMAAAAAAMMAAX1)++1-''.-'MXZZZZZZ=-''''''''''''''''''-'=+====+=+'.+X+=+)1X-+....'++=---=----==-=-------
+  CCCCCCCCCCCCCCCCCCCCCCCCC                     C++'.+        C.CCCCCCCCCCCCCCCCCC.+CCCCCCCCC+'C       CC''''+CCCCCCCCCCCCCCCCCCCCCC
+                                                 CC+'C         'BBBBBBBBBBBBBBBBBB'C         C+          ++++C
+                                                   CX          XHHHHHHHHHHHHHHHHHHX           C          CCCC
+                                                    C          CXXXXXXXXXXXXXXXXXXC
*ZM-=====+=+++++++++++++====-MAAAAAAAMAMMMMAZ11))X='.--+AZZZZZZM-''''''''''''''''''-+-=-=====+'---)---=1M='...'+==--------==-=--M----
+  CCCCCCCCCCCCCCCCCCCCCCCCCC                     C+'..C        .CCCCCCCCCCCCCCCCCC.CCCCCCCCCC+..C       C+'''+CCCCCCCCCCCCCCCCC CCCC
+                                                  C+''         'BBBBBBBBBBBBBBBBBB'          C''         C+++C
+                                                   CXX         XHHHHHHHHHHHHHHHHHHX           XX          CCC
+                                                    CC         CXXXXXXXXXXXXXXXXXXC           CC
*ZM-======+++++++'''''++=-----MAXXXXAAAMMMMAZ1)+)Z-'.--'AZZZZXXX'-'''''''''''''''''.=---=====+.-'.X    +X-+''''+==--M--M---===-MMMMM-
+  CCCCCCCCCCCCCC+++++CCCCCCCC                    C+'..+        +.CCCCCCCCCCCCCCCCC'CCCCCCCCCC'.C'       CC++++CCCCC CC CCCCCCC     C
+                CCCCC                             C+''C        C'BBBBBBBBBBBBBBBBB+          +'B+         CCCC
+                                                   CXX          XHHHHHHHHHHHHHHHHHC          CXHC
+                                                    CC          CXXXXXXXXXXXXXXXXX            CX
*ZA======++++'''''''..'+=--MMMMMMMAAXAAAAM-MX1)+++Z-'---=XZZXXAX--''''''''''''''''-'=--M-==--+.-'--=   -ZM=''''++===----M--===-M--MMM
+  CCCCCCCCCC+++++++''+CCCC               C        C+...C       C.CCCCCCCCCCCCCCCC.+CCC CCCCCC'.C.C       C++++CCCCCCCCC CCCCCC CC
+            CCCCCCC++C                             C'''         'BBBBBBBBBBBBBBBB'C          +'B'         CCCC
+                   CC                               XXX         XHHHHHHHHHHHHHHHHX           CXHX
+                                                    CCC         CXXXXXXXXXXXXXXXXC            CXC
*ZM=++==++++++'''''''++=-----MMMAAAMMMAXXXXXX1)+==1A+---+XZZXXAAM'-'''''''''''''''-+-MMM-==-='--'-=+   -1M=+'''+==+=-------===-M-----
+  CCCCCCCCCCC+++++++CCCCCCCC                       C...C        +.CCCCCCCCCCCCCCC.CC   CCCCC+..C.C       CC+++CCCCCCCCCCCCCCCC CCCCC
+             CCCCCCC                                '''         C'BBBBBBBBBBBBBBB'          C''B'          CCC
+                                                    XXX          XHHHHHHHHHHHHHHHX           XXHX
+                                                    CCC          CXXXXXXXXXXXXXXXC           CCXC
*X-=+++++++++'''''''''++------MMMAAM--MAXXZZZ1)))++Z-.-'--1)1ZAMM=.''''''''''''''-+-MMAAM--M+.-''-'1    1M=+'''+==+=---======--M----=
+ CCCCCCCCCCC+++++++++CCCCCCCC      CC              C'.C.C       C'CCCCCCCCCCCCCC.CC     CC C'.CC.+       CC+++CCCCCCCCCCCCCCCC CCCCC
+            CCCCCCCCC                               +'B'         +BBBBBBBBBBBBBB'           +'BB'C         CCC
+                                                    CXHX         CHHHHHHHHHHHHHHX           CXHHX
+                                                     CXC          XXXXXXXXXXXXXXC            CXXC
*A-+++++++'''''''''+'''+++=-------M----MMAAZ11)))==+A+---.M)))ZAMM=-''''''''''''-'-MMMAAAMM-'.-''''Z    )M=++''+===--M--++=-MM------=
+ CCCCCCCC+++++++++C+++CCCCCCCCCCC CCCC              C...'        C.CCCCCCCCCCCC.+C        C+'.CCC+       CCC++CCCCCC CCCCCC  CCCCCCC
+         CCCCCCCCC CCC                               '''+         'BBBBBBBBBBBB'C          C+'BBBC          CC
+                                                     XXXC         XHHHHHHHHHHHHX            CXHHH
+                                                     CCC          CXXXXXXXXXXXXC             CXXX
*A-=++++'''''..''''++''''+==-------=-=-MAAXZ1)++=--=Z=--'-'X1)1XAM-+-''''''''''-'=-MAAAAAMM+.--'''.X    )A-==+'+==--M---==-MM--==---=
+ CCCCCC+++++''++++CC++++CCCCCCCCCCCCCC              C..C.+       CC.CCCCCCCCCC.+CC        C'..CCC'       CCCC+CCCCC CCCCCC  CCCCCCCC
+       CCCCC++CCCC  CCCC                             ''B'C         'BBBBBBBBBB'C           +''BBB+           C
+            CC                                       XXHX          XHHHHHHHHHHX            CXXHHHC
+                                                     CCXC          CXXXXXXXXXXC             CCXXX
*M-==++++'+'''''.''++==+++++=====----==--AAXZ1+++=  =X=----+X))1XAM=+.--'''''--+-MMAXXXXXM='--'''-.X   -+XM-==++=--M-------MM--=--M--
+ CCCCCCC+C+++++'++CCCCCCCCCCCCCCCCCCCCCC             C....C       CC'..CCCCC..CC         C+..CCC.'        CCCCCCCC CCCCCCC  CCCCC CC
+        C CCCCC+CC                                    ''''          +''BBBBB''            C''BBB'+
+               C                                      XXXX          CXXHHHHHXX             XXHHHXC
+                                                      CCCC           CCXXXXXCC             CCXXXC
*M-==++++++'++''.''+++===++++==+==-----==-MAZ11Z1+-  =Z-'---'A)))1XM-='.-----'+-MAXXZZXXA-'---'''-.A=   =ZM-==++=--M---M---MMM---MM--
+ CCCCCCCCC+CC++'++CCCCCCCCCCCCCCCCCCCCCCC             C+...+       CC+'.....+CC         C+...CCC.'        CCCCCCCC CCC CCC   CCC  CC
+          C  CC+CC                                     C'''C         C+'''''C            C'''BBB'+
+               C                                        XXX           CXXXXX              XXXHHHXC
+                                                        CCC            CCCCC              CCCXXXC
*M=+++++++++++''''''++++++''+=+++=-==--=+==-MXXAX1+=--=)M'-'-.M1+)1ZXAM-=++=-MMAXXZZZXXA-'--'''''-.M+  -=1M--=+=-MMMM--MM--MMM--MMM--
+ CCCCCCCCCCCC++++++CCCCCC++CCCCCCCCCCCCCCCC             +.C.'         CCCCCC           C+..CCCCC.'        CCCCCC    CC  CC   CC   CC
+             CCCCCC      CC                             C'B'+                           C''BBBBB'+
+                                                         XHXC                            XXHHHHHXC
+                                                         CXC                             CCXXXXXC
*-=++''+++++''''+'+++++++'''+==+++++=+++++++=MM-MXZ1+---)M'----+MZ11111XAMAAAXXXZZZXAM-+.--'''''--'M)---+ZM--==-MAAAM-------MMMMM----
+CCCC++CCCCC++++C+CCCCCCC+++CCCCCCCCCCCCCCCCC  C          +....C                      CC'..CCCCC..+        CCCCC     CCCCCCC     CCCC
+    CC     CCCC C       CCC                              C''''                         +''BBBBB''C
+                                                          XXXX                         CXXHHHHHXX
+                                                          CCCC                          CCXXXXXCC
*-=+'''+++++'++'+++=====+++++++=+++''+'''++'+-==--AX1=--=1A='----'-AXZ1111ZZ1ZZXXXAM-+'----''-----'-1===+ZAM---MAAAAMMMMM--MMMAAM----
+CCC+++CCCCC+CC+CCCCCCCCCCCCCCCCCCC++C+++CC+CCCCCC         C+....+C                 CC+....CC.....+C        CCC          CC      CCCC
+   CCC     C  C                   CC CCC  C                C''''C                    C''''BB'''''C
+                                                            XXXX                      XXXXHHXXXXX
+                                                            CCCC                      CCCCXXCCCCC
*-=+'''++''''++++++===+++''+++++++++++'''++''+=+==-MXZZ1)++)X-+.----'=-MAXXXXAA-==+'.------------.'=X)==+ZAMMMMAXXAAMAAMM-MMAAAAMMM--
+CCC+++CC++++CCCCCCCCCCCC++CCCCCCCCCCC+++CC++CCCCCC          CC'....+CC        CCCC+'............'+C                     C         CC
+   CCC  CCCC            CC           CCC  CC                  +''''C              C+''''''''''''+C
+                                                              CXXXX                CXXXXXXXXXXXXC
+                                                               CCCC                 CCCCCCCCCCCC
*-=++'''''''''''+++=+++'''++'+++=+++=='''''.'''''+==-M--A1+===+ZM+.------.''''..---------...----.''+MZ+=)ZAMMAXXXAAAAAAAM-MAXXXXAAAM-
+CCCC+++++++++++CCCCCCC+++CC+CCCCCCCCC+++++'+++++CCCC CC         C'......'++++''.........'''....'++C                     C          C
+    CCCCCCCCCCC       CCC  C         CCCCC+CCCCC                 +''''''+CCCC++'''''''''+++''''+CC
+                                          C                      CXXXXXXC    CCXXXXXXXXXCCCXXXXC
+                                                                  CCCCCC       CCCCCCCCC   CCCC
*-=++''++'''''++++==++++''+++++==+++++''''...'...'''+=++=-AXZ)++=)ZA-+'....-----------.'=---+'..'''+-Z)+1A--MAAAAAAAAAMMMMAAXZZZXXAAM
+CCCC++CC+++++CCCCCCCCCC++CCCCCCCCCCCC++++'''+'''+++CCCCCC          CC+''''...........'+CCCCC+''+++CC     CC
+    CC  CCCCC          CC            CCCC+++C+++CCC                  C++++'''''''''''+C     C++CCC
+                                         CCC CCC                      CCCCXXXXXXXXXXXC       CC
+                                                                          CCCCCCCCCCC
*-=++'++++++++========++++==========+++''''........''+''''+=-MAZ)= -=+)1ZAMM-==-==++=-MXZ11ZA+.''+++=X1)ZM=--MAAAAAAAAMMMMAAXZ11ZZXAA
+CCCC+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++++''''''''++C++++CCC               CCCCCCCCCC       C'++CCCC     CCC
+    C                                 CCCC++++++++CC CCCC                                    +CC
+                                          CCCCCCCC                                           C
*M-=+++++++====-=----=====---=======++++'''....''....''..''''++-MAZ)=      --+++))Z1+=--- -+X=''+++'=MXZA---MAAAMAAAAAMMMAAAAXZZZZXXA
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++''''++''''++''++++CCC                             C++CCC+C    CCC
+                                       CCC++++CC++++CC++CCCC                                 CC   C
+                                          CCCC  CCCC  CC
*--=++++=====---MM-M---------=====+==+''''......'........'''...'++'+-X1=                   =X=++++''+MAAM--MAAXAMAAAAMMMMAAXXXXXZZZXX
+CCCCCCCCCCCCCCC  C CCCCCCCCCCCCCCCCCC++++''''''+''''''''+++'''+CC+CC                        CCCCC++C    CC
+                                     CCCC++++++C++++++++CCC+++C  C                               CC
+                                         CCCCCC CCCCCCCC   CCC
*M-==+=--------MMMMMMM------==++++++++''+++'''''''''.........'..'...'+=-A1+                =ZM---+'''---==--MMAMMAAAMMMAAAXXXXZXXZZZZ
+ CCCCCCCCCCCCC       CCCCCCCCCCCCCCCC++CCC+++++++++'''''''''+''+'''+CCC                      CCCC+++CCCCCCC
+                                     CC   CCCCCCCCC+++++++++C++C+++C                             CCC
+                                                   CCCCCCCCC CC CCC
*MM===---MMMMMMAAAMMMMMM-MMM--=++++++++==+==+'+'''''.''..''..'.''..'+++'+-AZ)=            -)ZXAM-+'.'+===+==----MMMMAAAAAXXZZZZXXXZZZ
+  CCCCCC               C   CCCCCCCCCCCCCCCCC+C+++++'++''++''+'++''+CCC+CC                      CC+'+CCCCCCCCCCC
+                                            C CCCCC+CC++CC++C+CC++C   C                          C+C
+                                                   C  CC  CC C  CC                                C
*AM--=---MAAAAXXXXXAAAMM-MMMMM-=+++++++=++++''''''...'+'.'''.'''....'''''+=-AXXZ1+=-      +11XAM-+''.''++++++===---MAAAAXZZZZ1ZZXZZZZ
+  CCCCCC               C     CCCCCCCCCCCCCC++++++'''+C+'+++'+++''''+++++CCC                    CC++'++CCCCCCCCCCCC
+                                           CCCCCC+++C C+CCC+CCC++++CCCCC                         CC+CC
+                                                 CCC   C   C   CCCC                                C
*AM-=--MMAAAAXXZZZZXXAAM----MMM-=+++====+++''''+''...'+'..''..'''....''''===----MAZ)+-   +11ZXAM-+''..''++++++=---MAAAAAXZZZ1111ZZZ1Z
+  CCCC                 CCCC   CCCCCCCCCCCC++++C++'''+C+''++''+++''''++++CCCCCCC                CC++''++CCCCCCCCCC
+                                          CCCC CC+++C C++CC++CCC++++CCCC                         CC++CC
+                                                 CCC   CC  CC   CCCC                               CC
*AAM------MMMAAAXXXXXXAAMM-------==+==--==++++++'''''++'''''......''''++++======-MAZZ)+==)11ZXAAM=++'..'''''+==--MMAAAAXXZ111))11ZZ11
+   CCCCCC                CCCCCCCCCCCCCCCCCCCCCC+++++CC+++++''''''++++CCCCCCCCCCC                CCC+''+++++CCCCC
+                                               CCCCC  CCCCC++++++CCCC                              C++CCCCC
+                                                           CCCCCC                                   CC
*XAMM------MMMMMAAXXXXAAAM--=-----=======+=+=++''''+''++'''''.'.'''''''''''++++=-MAXZ1)++1ZZXAAXM==+'..'.''+==-MMAAAAAXX11)))))1ZXZ1)
+    CCCCCC               CCCCCCCCCCCCCCCCCCCCC++++C++CC+++++'+'+++++++++++CCCCCC                CCC+''+'++CCCC
+                                              CCCC CC  CCCCC+C+CCCCCCCCCCC                         C++C+CC
+                                                            C C                                     CC C
*XAMM-----MMAMMMMMMAAMMAMM-============+++++++=++++++++'''........''..'''.''''+-MMMAXZ11ZXXXAMAM-==+.-.'''+=-MAAAAAAAXZ1)+++)+)1ZXZ1)
+    CCCCC                CCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++''''''''++''+++'++++CC                CCCC'.'+++CCC
+                                                      CCC++++++++CC++CCC+CCCC                      +'+CCC
+                                                         CCCCCCCC  CC   C                          CXC
+                                                                                                    C
*ZXAAM---MMAAAAAAAMMMMMM----=++++====+++++=+++====+++=+'''''..'''.'+''''++'.'''=--=-MXXXXXXXAAM=+++.--.''+==MAAAAAAAXZ1++++++++)111)+
+     CCC               CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++''+++'+C++++CC+'+++CCCCC           CCCC'..'++CCC
+                                                      CCCCC++CCC+C CCCC  C+CCC                    +''+CC
+                                                           CC   C         C                       CXXC
+                                                                                                   CC
*ZXAAMMM---MMAAAXAAAMMMM-----==++==--==+++++++++==++++''''+++'''''+=+'''''''+++'+++=-MMAAAAXAMM-=+''.-.''+=-MAAAAAAAXZ)+=+++++++))+++
+       CCC             CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++++CCC+++++CCC+++++++CCC+CCCCC          CCC++'.'++CCC
+                                                     CCCC   CCCCC   CCCCCCC   C                  CC+'+CC
+                                                                                                   CXC
+                                                                                                    C
*ZXAAMM-----MMAAAAAMMMMMMMM---==++=-----=++++++''''+++'.'++++++''+==+'+'..'''''.''====--MMAAM--=+'''..'''=-AXXAXXXXXZ1++=++++++++++++
+      CCCCC               CCCCCCCCCCCCCCCCCCCC++++CCC+'+CCCCCC++CCCC+C+''+++++'++CCCCCC     CCCC+++''+++CC
+                                              CCCC   C+C      CC    C C++CCCCC+CC               CCC++CCC
+                                                      C                CC     C                    CC
*ZXAMM----===-MMAMMMMMMMMMMMM--=+++==----=+'+++''''+'''..''''''++==++'''''+''''''+======--M-=++++'..'''+=-MXZZXZZZZZZ1)++++++++++++++
+     CCCCCCCC               CCCCCCCCCCCCCC+CCC++++C+++''++++++CCCCCC+++++C++++++CCCCCCCCC CCCCCC+''+++CCC
+                                          C   CCCC CCC++CCCCCC      CCCCC CCCCCC                C++CCC
+                                                      CC                                         CC
*XAMM---======-MMMMMAAAMMMMM---=+++++-MMM-==+++'..''.....'''.''+===+'..'''+''+++++==-----MM=+''+=+'.'++=-MAXZZZZ11ZZ1)))))++++++++=+=
+    CCCCCCCCCC             CCCCCCCCCC   CCCCCC+''++'''''+++'++CCCCC+''+++C++CCCCCCCCCCCC  CC++CCC+'+CCCC
+                                              C++CC+++++CCC+CC     C++CCC CC                CC   C+C
+                                               CC  CCCCC   C        CC                            C
*AAMMM--======---MMMMMMMM-----===+++++-MAAA--=++''++'++'''''''''''''''.''..''+++++++==---===+''+++'''+=-MMAXXZZZ11111)))))))+++++++++
+     CCCCCCCCCCC        CCCCCCCCCCCCCC    CCCCC++CC+CC+++++++++++++++'++''++CCCCCCCCCCCCCCCC++CCC+++CCC
+                                               CC  C  CCCCCCCCCCCCCCC+CC++CC                CC   CCC
+                                                                     C  CC
*MMMMM---======----MMMMM-----====+++++==MAAMM-=========+++'+++++''''''''.''''+=====++=--=+++++++++++++=-MAXXZZZZ1ZZ11))))))+++===++++
+     CCCCCCCCCCCCC     CCCCCCCCCCCCCCCC     CCCCCCCCCCCCC+CCCCC++++++++'++++CCCCCCCCCCCCCCCCCCCCCCCCCCC
+                                                         C     CCCCCCCC+CCCC
+                                                                       C
*MMMMMM---===+=====--------===+'''''++++=-MMM-----=---=+++++======++''...'+''+==--===--=+'++++++++++===--MAXXXXZZZZZ1)))))++++===++++
+      CCCCCCCCCCCCCCCCCCCCCCCC+++++CCCCCC   CCCCCCCCCCCCCCCCCCCCCCC++'''+C++CCCCCCCCCCCC+CCCCCCCCCCCCCCC
+                              CCCCC                                CC+++C CC            C
+                                                                     CCC
*MMMAMAMM--===+++===-------++''..'''''''+-MAAAMMMMM---===+===---=++=++'''+++++++===++++''++++++''++==----MAAAXXXXXZ1)))))++====++++))
+        CCCCCCCCCCCCCCCCCCCC++''+++++++CC         CCCCCCCCCCCCCCCCCCC+++CCCCCCCCCCCCCC++CCCCCC++CCCCCCCC
+                            CC++CCCCCCC                              CCC              CC      CC
+                              CC
*MMMMMAAMM--==+++++==----==++''''''.....'+-MAXXAAAMMM---==-M--MM-===+'''''''''''++++'''.''++''''''+------MAMAAAXXXZZ11111)+====+++)))
+         CCCCCCCCCCCCCCCCCCC++++++'''''+CC          CCCCCC CC  CCCCC+++++++++++CCCC+++'++CC++++++CCCCCCC
+                            CCCCCC+++++C                            CCCCCCCCCCC    CCC+CC  CCCCCC
+                                  CCCCC                                               C
*MMMMMAAAMMM-==+++==--=====++''''.......'+=-MAAAMMMMMM-----MMMAAMM-=+'''''..'''''+'+''''''++++''+=-MMM---MMMAAAXXXZZZZZ11)+++==++)))1
+           CCCCCCCCCCCCCCCCC++++'''''''+CCC          CCCCC       CCC+++++''+++++C+C++++++CCCC++CCC   CCC
+                            CCCC+++++++C                            CCCCC++CCCCC C CCCCCC    CC
+                                CCCCCCC                                  CC
*-MMMAAAAAAM---===========++''''.....-...'++=--M-MMM---===--MMMAAM-=''''''..''++++++'''+'++++++++MAAMM--MMMMAAXXXZZZXXZZ1))+++++))111
+C          CCCCCCCCCCCCCCCC++++'''''.'''+CCCCC C   CCCCCCCC      CC++++++''++CCCCCC+++C+CCCCCCCC     CC
+                           CCCC+++++'+++C                          CCCCCC++CC      CCC C
+                               CCCCCXCCC                                 CC
+                                    C
*MMAAAAAAAAAM---===+++++++++'''.....---....'+++==---==++==-MMMMM--=+'...'''+=-==++++''+++++======MAAM--MAAAAXZZXXXXXXXZ11))++++))1111
+            CCCCCCCCCCCCCCC+++'''''...''''+CCCCCCCCCCCCCCC     CCCC+'''+++CCCCCCCCC++CCCCCCCCCCC    CC
+                           CCC+++++'''++++C                        C+++CCC         CC
+                              CCCCCXXXCCCC                          CCC
+                                   CCC
*MMMAAAAAAAAMM---==+++'''++++''..........''''++==-=-=+==+==-=--=='''...''+=-MM-=+'''''++=++==-==MAXAM--AAAAXZZZXAAXXXXZ11))))))11ZZZZ
+             CCCCCCCC+++CCCC++''''''''''++++CCCCCCCCCCCCCCCCCCCC+++'''++CCC  CCC+++++CCCCCCCCCC     CC
+                     CCC    CC++++++++++CCCC                    CCC+++CC        CCCCC
+                              CCCCCCCCCC                           CCC
*MMMMAAAAAAAAAM---==++''''+++''..''''''''''++++====-========++++'...''+++++===-=+''++'+==++==--MAXXAM-MAMMMAXXXAAAAAXZZ11)))111ZZZZZZ
+              CCCCCCC++++CCC++''++++++++++CCCCCCCCCCCCCCCCCCCCC+'''++CCCCCCCCCCC++CC+CCCCCCCCC      C
+                     CCCC   CC++CCCCCCCCCC                     C+++CC           CC  C
+                              CC                                CCC
*-MMMAAAAAXXAAMMM---==+''''++'''''''+++'++++++====-------==-=++''''+++=====-==+'''''+++======-MAXXAAMMMAMMMMAAAAAAXXXZZZ11111ZZZZZZZX
+C               CCCCCC++++CC+++++++CCC+CCCCCCCCCCCCCCCCCCCCCCC++++CCCCCCCCCCCC+++++CCCCCCCCCC
+                      CCCC  CCCCCCC   C                       CCCC            CCCCC
*--MMMAAAAXAXAAMMMM--==++++++''''++++++++==--------MM--====---=++++++++=-==-=+'....'+++=====---AAAAAMAAAMMMMAAMMAXXXZXXXZZZZZZZZXXXXX
+CC                CCCCCCCCCC++++CCCCCCCCCCCCCCCCCC  CCCCCCCCCCCCCCCCCCCCCCCCC+''''+CCCCCCCCCCC
+                            CCCC                                             C++++C
+                                                                              CCCC
*--MMMAAAAAAAAAAAMMM---==++++'''+++=======--MMMMMMMMM---=========++=+'''++++'.....'+++=====----MAXXAAAAAMMMMMMMMAXXZXAAAXXXXXXXAAXAAA
+CC                 CCCCCCCCC+++CCCCCCCCCCCC         CCCCCCCCCCCCCCCC+++CCCC+'''''+CCCCCCCCCCCC
+                            CCC                                     CCC    C+++++C
+                                                                            CCCCC
*--MMMAAAAAAAAAAAMAMMM--==++++++++===------MMMMMMMMMMMMM-=========++++''''+''''''''+====--MMMMMMAXXAAAAAAAAAAMMMAAXXAMMAAXAAAAAAAAMMM
+CC                   CCCCCCCCCCCCCCCCCCCCC             CCCCCCCCCCCCCC++++C++++++++CCCCCCC
+                                                                     CCCC CCCCCCCC
*----MMMMMMMMMAMMMAAAMM-====++++++===-==----MMMMMMMMMMMM--======++++''''''''''''+++==----MAAAAMMAAAAAXXAAAAAAAMMMMAMMMMMAAAMAMAMMM--=
+CCCC                  CCCCCCCCCCCCCCCCCCCCC            CCCCCCCCCCCC++++++++++++CCCCCCCCC                                         CCC
+                                                                   CCCCCCCCCCCC
*--------M--MMMMMMMAAMMM--=============----MMMMMMMAAAAAAMM----==++++'''+'''''''+++===--M-MAAAMAAAAAAAXXXXXXXAMMMMM----MMMM---MM---==+
+CCCCCCCC CC            CCCCCCCCCCCCCCCCCCC               CCCCCCCCCC+++C+++++++CCCCCCCC C                         CCCC    CCC  CCCCCC
+                                                                   CCC CCCCCCC
*-----==------MMMMMMMMM-M------======----MMMMMMMMMMAAAAXAAAAMM-=++=+++''...''''++====--MMMMAAMAAAAAAXZZZZXXAMM--==++++=========++++''
+CCCCCCCCCCCCC         C CCCCCCCCCCCCCCCC                     CCCCCCCC++'''++++CCCCCCCC                       CCCCCCCCCCCCCCCCCCCCC++
+                                                                     CC+++CCCC                                                    CC
+                                                                       CCC
*=========----MMMMMMMMMMMMMMMMM--------M-MMM-----MMAAAXXXXXXXXAMMMMM-=+'.-.''''''+===----MMMMMAAAAAX11ZZZXAM-=++''...''+++++'''''....
+CCCCCCCCCCCCC                 CCCCCCCC C   CCCCC                   CCC+'.'++++++CCCCCCCC                   CCCC++'''++CCCCC+++++''''
+                                                                      C+'+CCCCCC                               CC+++CC     CCCCC++++
+                                                                       CXC                                       CCC            CCCC
+                                                                        C
*=========----MMMMMAAAMAAAAAAAAAMMMMMMMMMMMM-MMMMAAAAAAAAAXXXXXAAAMM-=++'..'+''''++=======----MAAAX111ZXXXA-++'....--..''''''....----
+CCCCCCCCCCCCC                              C                       CCCC+''+C++++CCCCCCCCCCCCC             CCC+''''..''++++++''''....
+                                                                       C++C CCCC                             C++++''++CCCCCC++++''''
+                                                                        CC                                    CCCCXXCC      CCCCXXXX
+                                                                                                                  CC            CCCC
*========---MMAAAAAXXAXXXXXZZZZXXXZXXXXXXXXXXXXXZZXZZZZXZXXZXXAXXAAAAM-=++'+''.'++++++++++=---MAXX1)+1XAMM-+'..-.......''+++'...-----
+CCCCCCCCCCC                                                          CCCC+C++'+CCCCCCCCCCCCCC            CC+''.'''''''++CCC+'''.....
+                                                                         C CC+C                            C++'+++++++CC   C+++'''''
+                                                                             C                              CCXCCCCCCC      CCCXXXXX
+                                                                                                              C                CCCCC
*==-=-----MMMAAAAXXXXAAXXXXXZXZXXXXAAAAAAAAAAAAAAAMAAAXXZZZ1ZZZXXXXXXM-=+''''..'+===++++=+=-MAAXZ1))+)XM--+'.......'''''++++''..-----
+CCCCCCCCC                                                            CCC++++''+CCCCCCCCCCCC            CCC+'''''''+++++CCCC++''.....
+                                                                        CCCC++C                           C+++++++CCCCC    CC++'''''
+                                                                            CC                             CCCCCCC           CCXXXXX
+                                                                                                                               CCCCC
*--M----MMMMAMMAAAAAAAAAAAXXXAAAAAAMMMMMMMMMM----========---MMMMMAXXXM-==++'''''+==++++++++-MAAXZ1++++1XM=+.....''++++++++==++'..----
+CC CCCC                                     CCCCCCCCCCCCCCC          CCCCC+++++CCCCCCCCCCCC             CC'''''++CCCCCCCCCCCC+''....
+                                                                          CCCCC                           +++++CC            C++''''
+                                                                                                          CCCCC               CCXXXX
+                                                                                                                                CCCC
*--MM------MMMMMMAAMAAAMAAAAAAAAAAMMM-M-------=====-=====----MMMAXXAM-=++++''.''+=++'''+++=--MMXZ1++==+1A-''''''''++++=+++===++'..---
+CC  CCCCCC                          C CCCCCCCCCCCCCCCCCCCCCC        CCCCCC++'++CCCC+++CCCCCC            C++++++++CCCCCCCCCCCCC+''...
+                                                                          CC+CC    CCC                   CCCCCCCC             C++'''
+                                                                            C                                                  CCXXX
+                                                                                                                                 CCC
*------=------MMMMAAAAAXXXAXAAAAMMMMMMMM-----------MM---MAAAAAAAAXA-=+''........''....'++====-MAZ)+==--+1A-+'''''''+++++++++++++'.---
+CCCCCCCCCCCCC                          CCCCCCCCCCC  CCC           CCC++''''''''++''''+CCCCCCC            CC+++++++CCCCCCCCCCCCC+'...
+                                                                     CC++++++++CC++++C                     CCCCCCC             C+'''
+                                                                       CCCCCCCC  CCCC                                           CXXX
+                                                                                                                                 CCC
*---======--MMMAAXXXXXXXXXXAXXAAAAAAMMMMMM-MMMMMMMMAAM--------MMAAAMMM-====++''''.....''+++++=-MX1)+=--=+1XM=+''...''+++'''++++''.---
+CCCCCCCCCCC                              C           CCCCCCCC        CCCCCCC++++'''''++CCCCCCC             CC++'''++CCC+++CCCC++'...
+                                                                            CCCC+++++CC                      CC+++CC   CCC    CC+'''
+                                                                                CCCCC                          CCC              CXXX
+                                                                                                                                 CCC
*--===----MMAAAXXXXXXXXXXXXXXXXXXAXXXAAXXXAXXXAAAAMAXMM-MMMAAXXXZ1)11ZZZXXXAM-MMM=++'''''+++++=-AZ1+=- --=)ZA-='..--..'''''''''''..--
+CCCCCCCCC                                             C                     C   CCC+++++CCCCCCC             CC+''..''+++++++++++''..
+                                                                                   CCCCC                      C++''++CCCCCCCCCCC++''
+                                                                                                               CCXXCC           CCXX
+                                                                                                                 CC               CC
*------MMMMAAAAAXAXXXXXXXXZZZZZZZZZ11ZZZZ1ZZZXXXXXXZ1ZZZZ111111))++))11111)1ZXXZZAM-==========-AX1)+--   -=+1XM='.-----..''''''''....
+CCCCCC                                                                            CCCCCCCCCCCC                C+'.....''++++++++''''
+                                                                                                               C+'''''++CCCCCCCC++++
+                                                                                                                CXXXXXCC        CCCC
+                                                                                                                 CCCCC
*MM----MMMMAAAAAAAAXXXXXXXZZZZZZ111)11ZZZ1Z11ZZZZZXXZZXXXXXXXZZ111))))11Z1111111)1ZXXAXAAMMMMMAZ)++=-     -=+)ZA-='.----.''''........
+  CCCC                                                                                                         CC+'....'++++''''''''
+                                                                                                                 C+''''+CCCC++++++++
+                                                                                                                  CXXXXC    CCCCCCCC
+                                                                                                                   CCCC
*-------MMMAAAAAAAXXXXXXXXXZZZZZZ1ZZZZXZZZZZZXXAAAMAXAMMMM---MAAXZ1)++)1ZZZ11ZZZZZ))))11ZZXXZZ1)+++=--     --=+1ZAM+'----...........-
+CCCCCCC                                                  CCC                                                      C+....'''''''''''.
+                                                                                                                   C''''+++++++++++'
+                                                                                                                    XXXXCCCCCCCCCCCX
+                                                                                                                    CCCC           C
*-----MMMMAAAAAAAAAAAAAAXXZZZZZZZXXXZZXXXXXAAAAMMMMMAAM------MAAXZ1)+++)11111ZXAAXZ1)))11ZZZZZ111)++=--       -=+)ZA-'.--.....----..-
+CCCCC                                                 CCCCCC                                                       C+'..'''''....''.
+                                                                                                                    C+''+++++''''++'
+                                                                                                                     CXXCCCCCXXXXCCX
+                                                                                                                      CC     CCCC  C
*-----MMMMAMMAAAAAAAAAAXXZZZZXXAAXXXXXXXXAAAAMMMMAAAAXAMMAAAAXXZZ11)++++)+++))1ZXAXXZZXXAAAAXXZZZZ1++---        -=+1X-+---...------.-
+CCCCC                                                                                                               CC...'''......'.
+                                                                                                                      '''+++''''''+'
+                                                                                                                      XXXCCCXXXXXXCX
+                                                                                                                      CCC   CCCCCC C
*---MMMMMMMMMMMAAMMAAAXXXZZXXAAAAXXXXXXXXAAAAAAAAXXXXZXXXXZZZZZXXXZ1Z11))======+)1ZXXAMMM---MAAXXAZ1+=--          -=+Z-'.....------.-
+CCC                                                                                     CCC                          C+'''''......'.
+                                                                                                                      C+++++''''''+'
+                                                                                                                       CCCCCXXXXXXCX
+                                                                                                                            CCCCCC C
*-M-MMMMMMMMMMMAMAAAAXXXAAAAAAAAAXXXXXXXXXAAXXXZZZZXXXXAAMMMM-----MMAAXZ)+====++)111ZXXAAM--MMAAMAX1)+==-          -=)X=..-----------
+C C                                                         CCCCC                        CC                           C''...........
+                                                                                                                       ++'''''''''''
+                                                                                                                       CCXXXXXXXXXXX
+                                                                                                                         CCCCCCCCCCC
*MM-MM-MMMMMMMMMMAAAAAAAAAAAAAAAXXXXZZZZZZZXXZZXXAAM-MM--==-----MMAXXZ11))+++)1))))+++)1ZZXXXZZZZZ))+=--             =)A+.-----------
+  C  C                                             C  CCCCCCCCC                                                        C'...........
+                                                                                                                        +'''''''''''
+                                                                                                                        CXXXXXXXXXXX
+                                                                                                                         CCCCCCCCCCC
*MMM----MMMMMMMAMAAAMMMMMMMMAAAXXZZZ1ZZZZZZXXAAMM----MMMAMAAAAXXXXXXAAAAXXZ1)111)))+=--==++++=====---                -+Z-'-----------
+   CCCC                                         CCCC                                                                   C+...........
+                                                                                                                        C'''''''''''
+                                                                                                                         XXXXXXXXXXX
+                                                                                                                         CCCCCCCCCCC
*MM-----MMMMMMAAAMMMMMMMMMMAAXXZZZZZZZZXXXAAAAAAAAAAXXZXXAAAAMMM-==+++=--AZ11))++++=---==--                          -=+Z-'----''''--
+  CCCCC                                                        CCCCCCCCC                                                C+....CCCC..
+                                                                                                                         C''''BBBB''
+                                                                                                                          XXXXHHHHXX
+                                                                                                                          CCCCXXXXCC
*M------MMMMMMMMMMM--MMMMMAAXXXXZXXZXXXXXXXXXXXAAMM-----==+++'''''.''++==-AXZ)+=======+==---                        --==)ZM+--'''''-.
+ CCCCCC           CC                              CCCCCCCCCC+++++'++CCCCC                                                 C..CCCCC.'
+                                                            CCCCC+CC                                                       ''BBBBB'+
+                                                                 C                                                         XXHHHHHXC
+                                                                                                                           CCXXXXXC
*--===-M-MMMMMM-----MMMMMMAAAAAAXAXXXXXXXXXXXAMM-===++++''''......''+==-MAXZZ1+=--=---===----      ----    --- -----===++)ZM'--'''-.=
+CCCCCC C      CCCCC                            CCCCCCCC++++''''''++CCCC                                                    +..CCC.'C
+                                                       CCCC++++++CC                                                        C''BBB'+
+                                                           CCCCCC                                                           XXHHHXC
+                                                                                                                            CCXXXC
*=====---MMMM-----MMMMMMMMMM-MMMAAXXXXXXXXXAAM-==+++++++'''''''++==-MMAAXXXZXZ1)+=-----==-------==---=------=---==++))+++=+1M+--'-.+A
+CCCCCCCC    CCCCC          C                 CCCCCCCCCC+++++++CCCCC                                                         C..C.'C
+                                                       CCCCCCC                                                               ''B'+
+                                                                                                                             XXHXC
+                                                                                                                             CCXC
*===----MM--------MMMMMMM-----MMAAXXXXXXAAAAMM-==+++++==++==--MMMMMMM------MMAAXZ)+------   ---===========-===+++))11)+++==)XM+.-'-AZ
+CCCCCCC  CCCCCCCC       CCCCC                CCCCCCCCCCCCCCCC       CCCCCC                                                   C'.+C
+                                                                                                                              +'C
+                                                                                                                              CX
+                                                                                                                               C
*====-------==-----M------==---MMAAAAAAAAAAAMM--====---------=====+++++++===--MMAZ1+=-       -------=+++++==+++)))))1))++++)ZAM=+=MXZ
+CCCCCCCCCCCCCCCCCC CCCCCCCCCCC               CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                                                 CCC
*====------===------========---MMMMAAAXXAAAAAMM-----=====+++++++++''''++++==---MAXZ)+=----  --  -  -==++++===+++))++))))))1ZXAM-==-AX
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                CCCCCCCCCCCCCCCCCCC++++CCCCCCCCC                                                CCCC
+                                                                 CCCC
*======-==============+======----MMMAAXXXXXAAM---===+++++'''''+'++'''+++++===--MMMAZ)+===-     --  --=========++++++))))1ZXXXAM==+=-M
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC             CCCCCCCCCCC+++++C+CC+++CCCCCCCCCC                                                CCCCC
+                                                        CCCCC C  CCC
*=+======+=======+++++=++=====--MMMAAXXXXXXAAMM--=++++++++'+++++++++'''''+++==--MMMAZ1)+=-----------====++====+++++))))1ZXAAM-=+''+=-
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC               CCCCCCCCCCC+CCCCCCCCC+++++CCCCCCC                                             CCC++CCC
+                                                         C         CCCCC                                                       CC
*++=====+++++++++++++++++======---MAAXXXZXXXXAM--==++++++++++++++++''''''++=-------MMAXZ)++++==+++++)))+++++++))))11111ZXXAM-=''..'+-
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC             CCCCCCCCCCCCCCCCCCCC++++++CCCCCCCCCC                                         CC++''+CC
+                                                                  CCCCCC                                                     CC++C
+                                                                                                                               CC
*++====++++++'''++++++++++++++==--MAXXZZZZZXXAM-========++++=+++++'''''''+++=====--===-AZ)+++)+)))))111)))1))))111ZZZZ1ZXAM-='..--.+=
+CCCCCCCCCCCC+++CCCCCCCCCCCCCCCCCC             CCCCCCCCCCCCCCCCCCC+++++++CCCCCCCCCCCCCC                                    CC+''..'CC
+            CCC                                                  CCCCCCC                                                    C++''+
+                                                                                                                             CCXXC
+                                                                                                                               CC
*++====++++'''''+''''+'''+''+++=--MAXZZ11ZZZXAM--=============++++''...''''''+====++===MX1))))++)))11Z111111111ZZZXXXXXXAM-=+'..--.''
+CCCCCCCCCC+++++C++++C+++C++CCCCCC             CCCCCCCCCCCCCCCCCCC++'''++++++CCCCCCCCCC                                   CCC+''..'++
+          CCCCC CCCC CCC CC                                      CC+++CCCCCC                                                C++''+CC
+                                                                   CCC                                                       CCXXC
+                                                                                                                               CC
*++===+'''''''''''''''''''''''+==-MAXZ1111ZZXAMM--===-========++'''....'''''+==++++++=-MXXXZ1))+++)1ZZZZZ1ZZZZ1ZXAAMAAAMM-==+''''....
+CCCCCC+++++++++++++++++++++++CCCC              CCCCCCCCCCCCCCCC+++''''+++++CCCCCCCCCCC                                  CCCC++++''''
+      CCCCCCCCCCCCCCCCCCCCCCC                                  CCC++++CCCCC                                                 CCCC++++
+                                                                  CCCC                                                          CCCC
*++===+''''''''''.........''''+==-MAXZ1))11ZXXAM---=====--=====+''.......''++=++++++=-MMM--AZZ1)++)11ZZXZZXAXXXXAMM-MM---===+++++++''
+CCCCCC++++++++++'''''''''++++CCCC              CCCCCCCCCCCCCCCC++'''''''++CCCCCCCCCCC   CC                        C  CCCCCCCCCCCCC++
+      CCCCCCCCCC+++++++++CCCC                                  CC+++++++CC                                                        CC
+                CCCCCCCCC                                        CCCCCCC
*===++''.''................'''+==-MXX111)11ZXXAM-----===--====++'..--...'+++=++++++==--+++=-MXZ1))))1ZXAXXAMAAAAM--------===========+
+CCCCC++'++''''''''''''''''+++CCCC              CCCCCCCCCCCCCCCC+''..'''+CCCCCCCCCCCCCCCCCCC                     CCCCCCCCCCCCCCCCCCCC
+     CC+CC++++++++++++++++CCC                                  C++''+++C
+       C  CCCCCCCCCCCCCCCC                                      CCXXCCC
+                                                                  CC
*-==++'..'.................'''++=-MXXZ11111ZZXAM----------===++''..--..''++===+++===-='.'+++=MAZ11)))1XAXXAAAAAM--MMMMMM-------======
+CCCCC+''+'''''''''''''''''+++CCCC              CCCCCCCCCCCCCCC++''..''++CCCCCCCCCCCCC+'+CCCC                   CC      CCCCCCCCCCCCC
+     C++C+++++++++++++++++CCC                                 CC++''++CC             C+C
+      CC CCCCCCCCCCCCCCCCC                                      CCXXCC                C
+                                                                  CC
*M-==++''''''''............''++==-MAXZZ1111ZZXAMM---------===+'''.....'++++======+==+'..'''+=MMXZ1)+)1ZZZZZXXAAAMMAAAAMMMMMMMM-------
+ CCCCC++++++++''''''''''''++CCCCC               CCCCCCCCCCCCC+++'''''+CCCCCCCCCCCCCC+''+++CC                                 CCCCCCC
+      CCCCCCCC++++++++++++CC                                 CCC+++++C              C++CCC
+              CCCCCCCCCCCC                                      CCCCC                CC
*AAM--=++++''''...........'''+++=--MXXZZZZZZZXAAMM--------===+'''...'''''++========'.-.....'==-AXZ1)+)11111ZZXXXXXXXXXAAAAAAXAMMMMMMM
+   CCCCCCC++++'''''''''''+++CCCCCC               CCCCCCCCCCCC+++'''+++++CCCCCCCCCC+'.'''''+CCC
+          CCCC+++++++++++CCC                                 CCC+++CCCCC          C+'+++++C
+              CCCCCCCCCCC                                       CCC                CXCCCCC
+                                                                                    C
*XXXAAM--==++'''..........'''++===-MAAXXZZZZXXAAMMMMMMMM---==+'''.''.''''+========'----....'++=MAZ1)))))))11ZZZZZZZZZZXXXXXZZXAAAAAAA
+      CCCCCC+++''''''''''+++CCCCCC                     CCCCCC+++'++'++++CCCCCCCCC+....''''+CCC
+            CCC++++++++++CCC                                 CCC+CC+CCCC         C''''++++C
+               CCCCCCCCCC                                       C  C              XXXXCCCC
+                                                                                  CCCC
*11ZZZXAMMM--=+''.......'''''++++==-MMAAAXXXXXAAAAMMAMMMM--==++'''''..''++=====-='.----.--.''+=-MAXZ1))+)))11111111111ZZZZZ11ZXXXXXXZ
+          CCCC++'''''''+++++CCCCCCC                     CCCCCC+++++''++CCCCCCCCC+'....'..'++CCC
+              CC+++++++CCCCC                                  CCCCC++CC         C+''''+''+CC
+                CCCCCCC                                            CC            CXXXXCXXC
+                                                                                  CCCC CC
*+)))11ZXXAMM-=+'''...'''''++++++++=--MMAXXXAXAAAAAAAAMMM---===++'....''++===--='.----......'+++=-MAXZ))+++))))))))1111ZZ)))1ZZXXZZZ1
+            CCC+++'''+++++CCCCCCCCCCC                   CCCCCCCC+''''++CCCCCCCC+'....''''''+CCCCC
+               CCC+++CCCCC                                      C++++CC        C+''''++++++C
+                  CCC                                            CCCC           CXXXXCCCCCC
+                                                                                 CCCC
*==++++)1ZZXXMM==+''.'''''''''''''++==-MMAAAAAAAAAAAMAAMM----==+'......'++==--='..---......-.''''+=-AXZ1))))))))))1111111))))ZZXZZZZ1
+              CCC++'+++++++++++++CCCCC                  CCCCCCC+''''''+CCCCCCC+''...''''''.'++++CCC
+                 CC+CCCCCCCCCCCCC                              C++++++C       C++'''++++++'+CCCC
+                   C                                            CCCCCC         CCXXXCCCCCCXC
+                                                                                 CCC      C
*-----==+)11ZXAM-=+''''''''''''''''+++=--MMMMMMAAAAAMAAMM----==''.....''++=--=+''........---.....''+-MAXZZZZ1))))1111111)))))11Z1ZZZ1
+               CCC++++++++++++++++CCCCCC                CCCCCC++'''''++CCCCCCC++''''''''...'''''++CC
+                  CCCCCCCCCCCCCCCC                            CC+++++CC       CC++++++++'''+++++CC
+                                                                CCCCC           CCCCCCCCXXXCCCCC
+                                                                                        CCC
*     --==++)ZXAM-=+'''''''''''...'''++==-----MMMAAAAAAMMM---=+''...--.'+=--=++''''...-..---..--...'+===-MMAXZZZ11111111)))))11ZZZZXZ
+                CCC+++++++++++'''+++CCCCCCCCC            CCCCC++'''..'+CCCCCCC++++'''.''...''..'''+CCCCC
+                   CCCCCCCCCCC+++CCC                          CC+++''+C       CCCC+++'++'''++''+++C
+                              CCC                               CCCXXC            CCCXCCXXXCCXXCCC
+                                                                   CC                C  CCC  CC
*      --==++)ZXAM-=++'+'++'''....''''++===-=---MMAAAAAAMMMM--==+''.--.'=--=++++++'''...----....----...'+==MMMAXZZZZ11)))))))11ZZZXXX
+                 CCCC+C+CC+++''''++++CCCCCCCCCC            CCCCC++'..'+CCCCCCCCCC+++'''....''''....'''+CCC
+                     C C  CCC++++CCCC                           CC+''+C          CCC+++''''++++''''+++C
+                             CCCC                                 CXXC              CCCXXXXCCCCXXXXCCC
+                                                                   CC                  CCCC    CCCC
*     --==+++)1ZXAMM-====+++++''''''''''++++===---MAAAMAMMMMMMM-=='....+==+===+++++''''.----...-------..'.'+=-MAXZZ11)))))))11ZXXAAXX
+                   CCCCCCCCCC++++++++++CCCCCCCCCC             CCC+''''CCCCCCCCCCCC++++'....'''.......''+'+CCC
+                             CCCCCCCCCC                          C++++            CCCC+''''+++'''''''++C+C
+                                                                  CCCC                CXXXXCCCXXXXXXXCC C
+                                                                                       CCCC   CCCCCCC
*  --====++)))))1ZXXXAAMM---====++++''''++++++===--MAAAAAAAAAAMM-=+'..'+++++===+++++'+'........--------....''+=-AX11))1))))11ZXXXAAXA
+                        CCCCCCCCCCC++++CCCCCCCCCCC             CCC+''+CCCCCCCCCCCCC+C+''''''''........''''++CCC
+                                   CCCC                           C++C             C C++++++++''''''''++++CC
+                                                                   CC                 CCCCCCCCXXXXXXXXCCCC
+                                                                                              CCCCCCCC
*  --=++)))))++++)111ZZXXAAMMM-M-==+++''+''+++++==--MAAAAAAAAAAM-=++'++'.''+=====++++++'''''.....------....-..'=MXZ11111))11ZZXXAAAAA
+                             C CCCCCC++C++CCCCCCCCC            CCCC+CC+'++CCCCCCCCCCCC+++++'''''......''''.''+C
+                                     CC CC                         C  C+CC            CCCCC+++++''''''++++'++C
+                                                                       C                   CCCCCXXXXXXCCCCXCC
+                                                                                                CCCCCC    C
*   -=++)11))+++=+++)11ZZZXXAAAM--======++++++++++=--MAAXAAAAAMM--===+'...'+++========++++++''''''.......-----.+-MAAXZ1ZZ111ZXXAAMAAM
+                               CCCCCCCCCCCCCCCCCCCCC           CCCCCC+'''+CCCCCCCCCCCCCCCCC++++++'''''''.....'CC
+                                                                     C+++C                 CCCCCC+++++++'''''+
+                                                                      CCC                        CCCCCCCXXXXXC
+                                                                                                        CCCCC
*----==+++)))++===+++)1ZZZZZXXAAM--------==++++'+++=-MAAXXAAAAAMM---=+'...'++====---==+++++++''''+++'..-------.+==-MMAAAXZZZXAAAMMMM-
+                                CCCCCCCCCCCCCC+CCCCC            CCCCC+'''+CCCCCCCCCCCCCCCCCC++++CCC+''.......'CCCC                 C
+                                              C                      C+++C                  CCCC   C++'''''''+
+                                                                      CCC                           CCXXXXXXXC
+                                                                                                      CCCCCCC
*---=====+++++=====++))111ZZZZXXXAAAMMMMMM--==+++++=-MMAAXAAAAAAMMM-=+'...''++====--=+++++==++++++++'..-------''++====-MAAAAAMM---M-=
+                                         CCCCCCCCCCC              CCC+'''++CCCCCCCCCCCCCCCCCCCCCCCC+''.......++CCCCCCC        CCC CC
+                                                                     C+++CC                        C++'''''''CC
+                                                                      CCC                           CCXXXXXXX
+                                                                                                      CCCCCCC
*---===+++===-======++111111111111ZZXXXAAAM--==++++==-MMAAAAAAAAAAM--=+''''''++=====++++++=+++++''+'''..-----.....'''++=------=====+=
+                                          CCCCCCCCCCC             CCCC++++++CCCCCCCCCCCCCCCCCCC++C+++''.....'''''+++CCCCCCCCCCCCCCCC
+                                                                      CCCCCC                   CC CCC++'''''+++++CCC
+                                                                                                     CCXXXXXCCCCC
+                                                                                                       CCCCC
*-========-    ----=-=++))++++++++++)11ZXXAMM--=======--MMAAAAAXXAAM--=+'''''''=-==+++''+++++++''''''''..---..-----.'++++++++++++'''+
+                                            CCCCCCCCCCC            CCCC+++++++CCCCCCC++CCCCCCC++++++++''...''.....'+CCCCCCCCCCCC+++C
+                                                                       CCCCCCC       CC       CCCCCCCC++'''++'''''+C            CCC
+                                                                                                      CCXXXCCXXXXXC
+                                                                                                        CCC  CCCCC
* --------           ---=====-===--===+)11ZXXAAM--=======--MMAAXXXAAM-==++''''+====+++'+++'++++''''.'''....--------..''''''''.......'
+                                               CCCCCCCCCCC          CCCCC++++CCCCCCCC+CCC+CCCC++++'+++''''........''++++++++'''''''+
+                                                                         CCCC        C   C    CCCC+CCC++++''''''''++CCCCCCCC+++++++C
+                                                                                                  C   CCCCXXXXXXXXCC        CCCCCCC
+                                                                                                          CCCCCCCC
*-                     -    ------   --==+))1ZXXAM-==+++++=-MMAXXXXAAM--=++'''+====+++++++++++++++''''''...-------.....'''...---.--..
+                                                 CCCCCCCCCC          CCCCC+++CCCCCCCCCCCCCCCCCCCC++++++'''.......'''''+++'''...'..''
+                                                                          CCC                    CCCCCC+++'''''''+++++CCC+++'''+''++
+                                                                                                       CCCXXXXXXXCCCCC   CCCXXXCXXCC
+                                                                                                          CCCCCCC           CCC CC
*                      --    -===--     -===+)1ZAAM-=+'''''+=-AAXZXXAAM-==++''+============++++==++++++'''.-------...........-------.
+                                                  CCC+++++CCC         CCCCC++CCCCCCCCCCCCCCCCCCCCCCCCC+++'.......'''''''''''.......'
+                                                     CCCCC                 CC                         CCC+'''''''+++++++++++'''''''+
+                                                                                                         CXXXXXXXCCCCCCCCCCCXXXXXXXC
+                                                                                                          CCCCCCC           CCCCCCC
* -- ------                   -===-      --=+)1XXAM-=++''''+=-MAXXXXXAAM-==++++===-=========++==========+.--------...........-----...
+                                                  CCCC++++CCC          CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'........'''''''''''.....'''
+                                                      CCCC                                              +''''''''+++++++++++'''''+++
+                                                                                                        CXXXXXXXXCCCCCCCCCCCXXXXXCCC
+                                                                                                         CCCCCCCC           CCCCC
*------====-                   ----- - -----=+)1ZXAM-=+''''+==-MAXXXXAAM--==+++==----====--===+++=---==-='.-------............----...
+                                                   CCC++++CCCC         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+'.......''''''''''''....'''
+                                                      CCCC                                              C+'''''''++++++++++++''''+++
+                                                                                                         CXXXXXXXCCCCCCCCCCCCXXXXCCC
+                                                                                                          CCCCCCC            CCCC
*+++===++))+=--                -----==+=====++)1ZXAM-=++'''+++=MAXXZXAMM--===++==-----------==+++==------+.-----.''''.'.........--...
+                                                   CCCC+++CCCC         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'.....'++++'+'''''''''..'''
+                                                       CCC                                               +'''''+CCCC+C+++++++++''+++
+                                                                                                         CXXXXXC    C CCCCCCCCCXXCCC
+                                                                                                          CCCCC                CC
*Z111)))111))+==-            ------=+))))++++)1ZXAAM-=+++'+=++=-AXZXXAM-====+++===--MMMMM----=+++==------+..---.'++'+'''''.......-...
+                                                   CCCCC+CCCCCC       CCCCCCCCCCCCC     CCCCCCCCCCCCCCCCC''...'+CC+C+++++'''''''.'''
+                                                        C                                                ++'''+C  C CCCCC+++++++'+++
+                                                                                                         CCXXXC          CCCCCCCXCCC
+                                                                                                           CCC                  C
*MAAZZZZZ11)))))+-          --=====))1Z11)))11ZXAAMM--==++=====-MXZZXAM-====+++===--MMMMMMMMM-======------+'...'++=+==+'''.....''..''
+                                                   CCCCCCCCCCCC       CCCCCCCCCCCCC         CCCCCCCCCCCCCC+'''+CCCCCCC+++'''''++''++
+                                                                                                          C+++C       CCC+++++CC++CC
+                                                                                                           CCC           CCCCC  CC
*--MAAAAX11))1111)=----    -==+++))1ZZZZZZZZZZAAMM---=======+++=-MAXXAM-==========----MMAAAMMMM--=====----=+'''++======+''..-...'''''
+CC                                               CCCCCCCCCCCCCCC      CCCCCCCCCCCCCCC         CCCCCCCCCCCCC+++CCCCCCCCC++''.'''+++++
+                                                                                                           CCC         CC++'+++CCCCC
+                                                                                                                         CCXCCC
+                                                                                                                           C
*MMMMM-MX1))))11111)))++===+++))11ZZZZZZXXXXAAM--==-===++==+++'+=-MAXAM-=+=======-----MMAAAAMMM--==+++=--==++++====---==+'.---..'''+'
+     C                                        CCCCCCCCCCCCCCC+CCC     CCCCCCCCCCCCCCC         CCCCCCCCCCCCCCCCCCCCCCCCCC+'...''+++C+
+                                                             C                                                          C+'''++CCC C
+                                                                                                                         CXXXCC
+                                                                                                                          CCC
*AAAAAAAX1)))11ZZZZZZZZ1)+++))1ZZZXXXXZXXXAAAM--======+++++'''''+=-MMM-==++++=====-----MMMAAAAAM-=++'''+++++++======--=++'.----..''+'
+                                             CCCCCCCCCCCCC+++++CCC   CCCCCCCCCCCCCCCCC         CCCC+++CCCCCCCCCCCCCCCCCC+'....''++C+
+                                                          CCCCC                                    CCC                  C+''''++CC C
+                                                                                                                         CXXXXCC
+                                                                                                                          CCCC
*AXXZXXXXZ111)1111ZXXAAXZ1))11ZZXXXZZZZXXXAAAAM-=----=+++++'''''+==----=++''++========-M--MAAAAM-=+'....''++===========+''------.''++
+                                              CCCCCCCCCCCC+++++CCCCCCCCCC++CCCCCCCCCCC CC      CCC+''''++CCCCCCCCCCCCCC++......'++CC
+                                                          CCCCC          CC                       C++++CC              CC''''''+CC
+                                                                                                   CCCC                  XXXXXXC
+                                                                                                                         CCCCCC
*AXXAAAAAAXZZZZZXAAAAAAXZZ111ZXXAAXXXZZXAAAAMMM---M--========+++===--==+++''''++++++=====--MAMAM-=+'..---..'+==+++=====++'.-----.''''
+                                              CCC CCCCCCCCCCCCCCCCCCCCCCC++++CCCCCCCCCCCCC     CCC+''...''+CCCCCCCCCCCCC+'.....'++++
+                                                                         CCCC                     C++'''++C             C+'''''+CCCC
+                                                                                                   CCXXXCC               CXXXXXC
+                                                                                                     CCC                  CCCCC
*MMM---MMAAXAMMM---MAAAAAXZZXXAAAAAAAXXAAAAAM--------===-------========++++'''++++++=======-----==+'...----.'++''+=----=+'...---.'''.
+   CCC         CCC                          CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++CCCCCCCCCCCCCCCCCCCCC+'''....'+CC++CCCCCCCC+'''...'+++'
+                                                                          CCC                     C+++''''+C  CC        C+++'''+CCC+
+                                                                                                   CCCXXXXC              CCCXXXC   C
+                                                                                                      CCCC                  CCC
*--==--MAXXXA-==+=-MAAMMAAAAAAAAAAAAMMMMMMAM--=----====-MM----------==-==++''+++======+==++=+++=+''''''.----.'''+=---==+''.'+'..'+'..
+CCCCCC      CCCCCC                         CCCCCCCCCCCC  CCCCCCCCCCCCCCCCC++CCCCCCCCCCCCCCCCCCCC++++++'....'+++CCCCCCCC++'+C+''+C+''
+                                                                          CC                    CCCCCC+''''+CCC        CC+C C++C C++
+                                                                                                      CXXXXC             C   CC   CC
+                                                                                                       CCCC
*-MMMAAAAAAM-====-MAAAMMMMMAAAXXAMMMMMM--MMMM------==---MMMM-M--=-------=+''++++===+++''''+++++'...'+++'----.''+=-=++''+'''+=+'''''..
+C          CCCCCC                     CC    CCCCCCCCCCC    C CCCCCCCCCCCC++CCCCCCCCCC++++CCCCC+'''+CCC+....'++CCCCCC++C+++CCC+++++''
+                                                                         CC          CCCC     C+++C   C''''+CC      CC CCC   CCCCC++
+                                                                                               CCC     XXXXC                      CC
+                                                                                                       CCCC
*XXAXXAMM-==+===-MMAAAAMMMAAMM-----MM--==--MAM---=======-MAM--=++===---===++======='''...'+===='..'+++'.----.++==+'.-.'+''+++'''+++++
+        CCCCCCCC             CCCCC  CCCCCC   CCCCCCCCCCC   CCCCCCCCCCCCCCCCCCCCCCC+++'''+CCCCC+''+CCC+'....'CCCCC+'.'+C++CCC+++CCCCC
+                                                                                  CCC+++C     C++C   C+''''+     C+'+C CC   CCC
+                                                                                     CCC       CC     CXXXXC      CXC
+                                                                                                       CCCC        C
*XAMAA------MMMMMMMAAAAAAAAA-=++==-M-=+++=-MM-=========-MMM---======+=+====---===-=+++''++=--==+++===+''.--.'===='...'+=+++'''+===--M
+     CCCCCC                CCCCCCC CCCCCCC  CCCCCCCCCCC   CCCCCCCCCCCCCCCCCCCCCCCCCCC++CCCCCCCCCCCCCC++'..'+CCCC+'''+CCCCC+++CCCCCC
+                                                                                     CC              CC+''+C    C+++C     CCC
+                                                                                                       CXXC      CCC
+                                                                                                        CC
*--==---MAAXXXXAAMMAAAAAMMM-=+'+=--M-=+'+=MM-====++====-MM-=------=++++==-----===--=+++++==--=========+''...+=--='''+====++'+=-MMMMMM
+CCCCCCC                   CCC+CCCC CCC+CC  CCCCCCCCCCCC  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++'''CCCCC+++CCCCCCC+CCC
+                             C        C                                                               CC+++     CCC       C
+                                                                                                        CCC
*=+'++--MAXXXXXAAMMMAAAM--==+++=-MMMM====-M-=====++===-M-=++=--M--=====-MM---======++''++=----======---=++++=---=+=---==+++=--MMMM--=
+CC+CCCC                CCCCCCCCC    CCCCC CCCCCCCCCCCC CCCCCCC CCCCCCCC  CCCCCCCCCCC++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC    CCC
+  C                                                                                 CC
*-'=-=--MAAM-MAAMM-MMMM--==+'''+-M---======+'+=++'+++=--=''+=---=-----------=====++==+'+==-MM-------MMM-=++====--------====----==++''
+C+CCCCC    C     C    CCCCC+++CC CCCCCCCCCC+CCCC+CCCCCCC++CCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCC  CCCCCCC   CCCCCCCCCCCCCCCCCCCCCCCCCCCC++
+ C                         CCC             C    C       CC                           C                                            CC
*MMMAMAM--M--MAAAM----=++++''''+=----==+++'.'+++'+++=--=+''+==+++====--=+======++++--=++=-MAAAAMM------+'''+==-------=====---==+'''.'
+       CC CC     CCCCCCCCC++++CCCCCCCCCCC+'+CCC+CCCCCCCC++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC       CCCCCCC+++CCCCCCCCCCCCCCCCCCCCC+++'+
+                          CCCC           C+C   C        CC                                             CCC                     CCC+C
+                                          C                                                                                       C
*MMMMMAAAAAAAXXAAM---==''''.'''++===-++++'''''+++=-----=''+==+''''+++==+'++=++++'+=---==-MAAAAMMM----=+''.'+=---========----===++'''+
+                 CCCCC++++'+++CCCCCCCCCC+++++CCCCCCCCCC++CCCC++++CCCCCC+CCCCCCC+CCCCCCCC        CCCCCC++'+CCCCCCCCCCCCCCCCCCCCCC+++C
+                      CCCC+CCC          CCCCC          CC    CCCC      C       C                      CC+C                      CCC
+                          C                                                                             C
*MM-MAAXXZXXXAAAAMMMM-==+'.---.'+==-=+++++=+++=-----MM-=+===++'...'++++'''+=+++++=MM-===-MMMM---M--====++++=--====--=====--===+++++++
+  C                 CCCC+'...'+CCCCCCCCCCCCCCCCCCCC  CCCCCCCC+'''+CCCC+++CCCCCCCC  CCCCC    CCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                        C+'''+C                              C+++C    CCC
+                         CXXXC                                CCC
+                          CCC
*-MMAMAXXXXAMMMMMMMM--=++'.---..'===+++++===++-M-------===---=='''+++++'''=======-M--===--MM------=++=====--------M---====---=+''+++=
+C                  CCCCC+'...''+CCCCCCCCCCCCCC CCCCCCCCCCCCCCC+++CCCCC+++CCCCCCCC CCCCCCC  CCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCC++CCCC
+                        C+'''++C                              CCC     CCC                                                     CC
+                         CXXXCC
+                          CCC
*-MMMMAAAAMM===------=++++'--.''+===+=+==---=----MM----=--MAAM-====+++'''=------MMM-----MMMMM----=++++==-------MMMMM---=-=----=++++==
+C          CCCCCCCCCCCCCC+..'++CCCCCCCCCCCCCCCCC  CCCCCCC    CCCCCCCC+++CCCCCCC   CCCCC     CCCCCCCCCCCCCCCCCC     CCCCCCCCCCCCCCCCC
+                         C''+CC                                      CCC
+                          XXC
+                          CC
*-MMMMMMMM-=+''++=====++'++.'+=+=--==---M-MMM----MMMM-----MMMM-====-====-MMMM--MAAAMM-MMMMMMM---=+++++==-------MMMMMMM---------=====-
+C        CCC++CCCCCCCCC+CC'+CCCCCCCCCCC C   CCCC    CCCCC    CCCCCCCCCCC    CC      C       CCCCCCCCCCCCCCCCCC       CCCCCCCCCCCCCCC
+            CC         C  +C
+                          C
*-MMMMM---=+'''++==+++++++''+++==--M-MMMMMMAMM----MMMM--MM------=---MMMMMAAMMMMMAAAAM-MMMM--MM--=+=====-M-----M-MMMMMM--====---------
+C     CCCCC+++CCCCCCCCCCC++CCCCCCC C         CCCC    CC  CCCCCCCCCC                 C    CC  CCCCCCCCCC CCCCC C      CCCCCCCCCCCCCCC
+           CCC           CC
1I                                                                       =)XM+-'''''''''''''''''''--------------------------.'=MX1
*                                                                      =)XM+-'''''''''''''''''''--------------------------.'=MX1)=-
+                                                                          C.CCCCCCCCCCCCCCCCCCC..........................'+C
+                                                                           'BBBBBBBBBBBBBBBBBBB''''''''''''''''''''''''''+C
+                                                                           XHHHHHHHHHHHHHHHHHHHXXXXXXXXXXXXXXXXXXXXXXXXXXC
+                                                                           CXXXXXXXXXXXXXXXXXXXCCCCCCCCCCCCCCCCCCCCCCCCCC
*                                                                     -+1X-+--'''''---'''''''''''--------------------------'+-XZ)=-
+                                                                         CC..CCCCC...CCCCCCCCCCC..........................+CC
+                                                                           ''BBBBB'''BBBBBBBBBBB''''''''''''''''''''''''''C
+                                                                           XXHHHHHXXXHHHHHHHHHHHXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                                           CCXXXXXCCCXXXXXXXXXXXCCCCCCCCCCCCCCCCCCCCCCCCCC
*                                                                     =+1A-+--'''''--''''''''''''--------------------------'+MXZ)=-
+                                                                         CC..CCCCC..CCCCCCCCCCCC..........................+C
+                                                                           ''BBBBB''BBBBBBBBBBBB''''''''''''''''''''''''''C
+                                                                           XXHHHHHXXHHHHHHHHHHHHXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                                           CCXXXXXCCXXXXXXXXXXXXCCCCCCCCCCCCCCCCCCCCCCCCCC
*                                                                    -+)ZM='--''''''''''''''''''''-------------------------.+-AZ)=
+                                                                         C+..CCCCCCCCCCCCCCCCCCCC.........................'CC
+                                                                          C''BBBBBBBBBBBBBBBBBBBB'''''''''''''''''''''''''+
+                                                                           XXHHHHHHHHHHHHHHHHHHHHXXXXXXXXXXXXXXXXXXXXXXXXXC
+                                                                           CCXXXXXXXXXXXXXXXXXXXXCCCCCCCCCCCCCCCCCCCCCCCCC
*                                                                    =)1AM='--''''''''''''''''''''-------------------------.+-X1)=
+                                                                         C+..CCCCCCCCCCCCCCCCCCCC.........................'CC
+                                                                          C''BBBBBBBBBBBBBBBBBBBB'''''''''''''''''''''''''+
+                                                                           XXHHHHHHHHHHHHHHHHHHHHXXXXXXXXXXXXXXXXXXXXXXXXXC
+                                                                           CCXXXXXXXXXXXXXXXXXXXXCCCCCCCCCCCCCCCCCCCCCCCCC
*                                                                   =+1XA-+.--''''''''''''''''''''-------------------------.+-A1)=-
+                                                                        CC'..CCCCCCCCCCCCCCCCCCCC.........................'CC
+                                                                          +''BBBBBBBBBBBBBBBBBBBB'''''''''''''''''''''''''+
+                                                                          CXXHHHHHHHHHHHHHHHHHHHHXXXXXXXXXXXXXXXXXXXXXXXXXC
+                                                                           CCXXXXXXXXXXXXXXXXXXXXCCCCCCCCCCCCCCCCCCCCCCCCC
*                                                                  -+1ZAM='--'''''''''''''''''''''-------------------------.+-AZ)=-
+                                                                        C+..CCCCCCCCCCCCCCCCCCCCC.........................'CC
+                                                                         C''BBBBBBBBBBBBBBBBBBBBB'''''''''''''''''''''''''+
+                                                                          XXHHHHHHHHHHHHHHHHHHHHHXXXXXXXXXXXXXXXXXXXXXXXXXC
+                                                                          CCXXXXXXXXXXXXXXXXXXXXXCCCCCCCCCCCCCCCCCCCCCCCCC
*                                                                 -+)ZAM=+.--'''''''''''''''''''---------------------------'=MX1)=
+                                                                       CC'..CCCCCCCCCCCCCCCCCCC...........................+C
+                                                                         +''BBBBBBBBBBBBBBBBBBB'''''''''''''''''''''''''''C
+                                                                         CXXHHHHHHHHHHHHHHHHHHHXXXXXXXXXXXXXXXXXXXXXXXXXXX
+                                                                          CCXXXXXXXXXXXXXXXXXXXCCCCCCCCCCCCCCCCCCCCCCCCCCC
*                                                                -=)1XM-+'--''''''''''''''''''''-----.....-----------------.+-MX1+-
+                                                                      CC+..CCCCCCCCCCCCCCCCCCCC.....'''''.................'CC
+                                                                        C''BBBBBBBBBBBBBBBBBBBB'''''+++++'''''''''''''''''+
+                                                                         XXHHHHHHHHHHHHHHHHHHHHXXXXXCCCCCXXXXXXXXXXXXXXXXXC
+                                                                         CCXXXXXXXXXXXXXXXXXXXXCCCCC     CCCCCCCCCCCCCCCCC
*-                                                               -=)1XM='.--'''''''''''''''''----..'''+++'..---------------.+-MZ)+-
+                                                                      C+'..CCCCCCCCCCCCCCCCC....''+++CCC+''...............'CC
+                                                                       C+''BBBBBBBBBBBBBBBBB''''++CCC   C++'''''''''''''''+
+                                                                        CXXHHHHHHHHHHHHHHHHHXXXXCC       CCXXXXXXXXXXXXXXXC
+                                                                         CCXXXXXXXXXXXXXXXXXCCCC           CCCCCCCCCCCCCCC
*+=-====--=---- ---                                              -=)ZAM='--''''''''''''''''----..''++===-=+'..-------------.+-AX1+-
+                                                                      C+..CCCCCCCCCCCCCCCC....''++CCCCCCCC+''.............'CC
+                                                                       C''BBBBBBBBBBBBBBBB''''++CC        C++'''''''''''''+
+                                                                        XXHHHHHHHHHHHHHHHHXXXXCC           CCXXXXXXXXXXXXXC
+                                                                        CCXXXXXXXXXXXXXXXXCCCC               CCCCCCCCCCCCC
*)++))++++=++=====-----                                          -=)1AM='--'''''''''''''''--..''+++=----MMM-+'.------------.+-AZ1+-
+                                                                      C+..CCCCCCCCCCCCCCC..''++CCCCCCCC   CC+'............'CC
+                                                                       C''BBBBBBBBBBBBBBB''++CC             C+''''''''''''+
+                                                                        XXHHHHHHHHHHHHHHHXXCC                CXXXXXXXXXXXXC
+                                                                        CCXXXXXXXXXXXXXXXCC                   CCCCCCCCCCCC
*1))1)))))+++++=====-----                                        -=)ZA-='--'''''''''''''--..'+++====-MMMMMAAM='.-----------.'=MX1+-
+                                                                     CC+..CCCCCCCCCCCCC..''+CCCCCCCC        C+'...........'+C
+                                                                       C''BBBBBBBBBBBBB''++C                 C+'''''''''''+C
+                                                                        XXHHHHHHHHHHHHHXXCC                   CXXXXXXXXXXXC
+                                                                        CCXXXXXXXXXXXXXCC                      CCCCCCCCCCC
*1))1))))))++++=====----- -                                      -=)1XM=+.---'''''''''--..'+++===-----MMMMAAAM='.----------.'=MX1+=
+                                                                      CC'...CCCCCCCCC..''+CCCCCCCCCCC        C+'..........'+C
+                                                                        +'''BBBBBBBBB''++C                    C+''''''''''+C
+                                                                        CXXXHHHHHHHHHXXCC                      CXXXXXXXXXXC
+                                                                         CCCXXXXXXXXXCC                         CCCCCCCCCC
*)+))))))+)+++=====----- -                                       -=)1ZA-='.--'''''''---.'+++===----------MMMAXA='.---------.'=MX1+=-
+                                                                      CC+'..CCCCCCC...'+CCCCCCCCCCCCCCCC      C+'.........'+C
+                                                                        C+''BBBBBBB'''+C                       C+'''''''''+C
+                                                                         CXXHHHHHHHXXXC                         CXXXXXXXXXC
+                                                                          CCXXXXXXXCCC                           CCCCCCCCC
*==+===+=====-----                                               -=+)ZXA-=+.--'''''--.'+++===--------=-==--MAXXM='.--------.'=MX1)=-
+                                                                       CCC'..CCCCC..'+CCCCCCCCCCCCCCCCCCCC     C+'........'+C
+                                                                          +''BBBBB''+C                          C+''''''''+C
+                                                                          CXXHHHHHXXC                            CXXXXXXXXC
+                                                                           CCXXXXXCC                              CCCCCCCC
*  --------                                                       --+)1XA-=+.--''--.'++++==---------=======-MAAM-+.--------.'=MAZ)=-
+                                                                        CCC'..CC..'+CCCCCCCCCCCCCCCCCCCCCCC    CC'........'+C
+                                                                           +''BB''+C                             +''''''''+C
+                                                                           CXXHHXXC                              CXXXXXXXXC
+                                                                            CCXXCC                                CCCCCCCC
*                                                                  -=+)1XA-='.----'+++===-----------========-MAAM='--------.'=MXZ)=-
+                                                                         CC+'....+CCCCCCCCCCCCCCCCCCCCCCCCCC    C+........'+C
+                                                                           C+''''C                               C''''''''+C
+                                                                            CXXXX                                 XXXXXXXXC
+                                                                             CCCC                                 CCCCCCCC
*                                                                   -=+)1ZA-='.--'+++==--MM---==-----==+++===-MAM='--------.'=MXZ)+-
+                                                                          CC+'..+CCCCCCC  CCCCCCCCCCCCCCCCCCC   C+........'+C
+                                                                            C+''C                                C''''''''+C
+                                                                             CXX                                  XXXXXXXXC
+                                                                              CC                                  CCCCCCCC
*                                                                     -=)1ZA-='.'''+=--MMMMM-===-----=====++=-MAA-+.-------.'=MAZ)+=
+                                                                           CC+'+++CCCC     CCCCCCCCCCCCCCCCCC   CC'.......'+C
+                                                                             C+CCC                                +'''''''+C
+                                                                              C                                   CXXXXXXXC
+                                                                                                                   CCCCCCC
*                                                                      =+)1XM-=++'++=--M-------=----===+++++==-AAM='-------.'=-AZ1+=
+                                                                            CCCC+CCCCC CCCCCCCCCCCCCCCCCCCCCCC   C+.......'+CC
+                                                                                C                                 C'''''''+C
+                                                                                                                   XXXXXXXC
+                                                                                                                   CCCCCCC
*                                                                      -=+)ZAM-=+++=-----------=======++++++==-MAM-'.------.'=-AZ)+-
+                                                                             CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC   C+'......'+CC
+                                                                                                                  C+''''''+C
+                                                                                                                   CXXXXXXC
+                                                                                                                    CCCCCC
*                                                                       -=)ZXM--===-------------=====++++++++=-MAM-+.------.'+-AZ1+=-
+                                                                             CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC   CC'......'+CC
+                                                                                                                   +''''''+C
+                                                                                                                   CXXXXXXC
+                                                                                                                    CCCCCC
*                                                                       -=)ZXAM-------------MMM--====++''''++==-AM-='------.'=-AX1+=-
+                                                                              CCCCCCCCCCCCC   CCCCCCCC++++CCCCC  CC+......'+CC
+                                                                                                      CCCC         C''''''+C
+                                                                                                                    XXXXXXC
+                                                                                                                    CCCCCC
*                                                                      -=+)1XAM-------M-----MMMMM-====+''''''+=-MAM='------.'=MAZ1+=
+                                                                              CCCCCCC CCCCC     CCCCCC++++++CCC   C+......'+C
+                                                                                                      CCCCCC       C''''''+C
+                                                                                                                    XXXXXXC
+                                                                                                                    CCCCCC
*                                                                    -=+))ZZXAMMMM---MMMMMMMMMMMM--===++'''''++-MMM='.-----.'+-AZ1)=-
+                                                                                 CCC            CCCCCCC+++++CCC   C+'.....'+CC
+                                                                                                       CCCCC       C+'''''+C
+                                                                                                                    CXXXXXC
+                                                                                                                     CCCCC
*                                                                  -++)11ZZXAMM-M----MMMMAMMMMMMMM--==++''''''+=-MM-+.-----.'+-AZ1+=-
+                                                                              C CCCC             CCCCCC++++++CCC  CC'.....'+CC
+                                                                                                       CCCCCC       +'''''+C
+                                                                                                                    CXXXXXC
+                                                                                                                     CCCCC
*      -------- -                                               --=)1ZZXXXAAMM-----MMMMAAAAAAAAAMMMM-==+++'''''+=MM-='-----.'+-MX1)=-
+                                                                             CCCCC                 CCCCCC+++++CC  CC+.....'+CC
+                                                                                                         CCCCC      C'''''+C
+                                                                                                                     XXXXXC
+                                                                                                                     CCCCC
*--===++))++++++)+===--                                    --==++)1XAAAMMM--------MMMMMMAAAAAAAAAMMM--==+++''''+=MM-+.-----.'+-MX1)=-
+                                                                         CCCCCCCC                  CCCCCCC++++CC  CC'.....'+CC
+                                                                                                          CCCC      +'''''+C
+                                                                                                                    CXXXXXC
+                                                                                                                     CCCCC
*)))111ZZZZZZZZZZZ11)))+++++=+===----        -----==--===++))11ZZZXAMMM-----------MMMMMMAAAAAAAAAMMMM-==++'''''+=-M-=.-----.'+-MX1)=-
+                                                                      CCCCCCCCCCC                   CCCCC+++++CCC CC'.....'+CC
+                                                                                                         CCCCC      +'''''+C
+                                                                                                                    CXXXXXC
+                                                                                                                     CCCCC
*ZXXXXXAAAAAAAAAAAAXXXXZZZZZZZ1111)))++++++++))))))111111ZZZXXAAAAMMM---====-------MMMMMAAAAAAAAAAMMM--=+++''''+=-M-='------.+=MXZ)+=
+                                                                    CCCCCCCCCCCCCC                  CCCCCC++++CCC CC+......'CC
+                                                                                                          CCCC      C''''''+
+                                                                                                                     XXXXXXC
+                                                                                                                     CCCCCC
*AAMMMMMM---------MMMMMAAAAAAAAAXXXXXZZZZZZZZZZXZXXAAAAAAAMMMM----MMM----==--------MMAAAAAAAAXXAAAMMM--=+++''''+=-M-='-----.'+-AX1)=-
+        CCCCCCCCC                                            CCCC   CCCCCCCCCCCCCC                  CCCCCC++++CCC CC+.....'+CC
+                                                                                                          CCCC      C'''''+C
+                                                                                                                     XXXXXC
+                                                                                                                     CCCCC
*----------=========---------------MMMMMMMMMMMMMM----=---=========----------------MMAAAAAXAAAAAAAMMM---=++''..'+=--M='------'+-MXZ)+-
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC              CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                  CCCCCC++''+CCCC C+......+CC
+                                                                                                         CC++C      C''''''C
+                                                                                                           CC        XXXXXX
+                                                                                                                     CCCCCC
*===============++++=============================++++++++++++++++=-------=------MMMMAAAXXXXXAAAAMMM----==+''...'+=-M-+.-----.+-MXZ)+=
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                   CCCCCCC++'''+CCC CC'.....'CC
+                                                                                                         CC+++C      +'''''+
+                                                                                                           CCC       CXXXXXC
+                                                                                                                      CCCCC
*++++++++++++++++''+++++++++++'+''++++'++++++++'''''''''''''''''+====---==------MMAAAAAXXZXXXXAAMMM--====++'....'=-M-=.-----.+=MAZ)+=
+CCCCCCCCCCCCCCCC++CCCCCCCCCCC+C++CCCC+CCCCCCCC+++++++++++++++++CCCCCCCCCCCCCCCC                   CCCCCCCC+''''+CC CC'.....'CC
+                CC           C CC    C        CCCCCCCCCCCCCCCCC                                           C++++C     +'''''+
+                                                                                                           CCCC      CXXXXXC
+                                                                                                                      CCCCC
*++++'+++''+++''''''''''''''''''''''''''''''''''...............'+====----------MMMMMAAAAXXXXXXAAAMM--===+++'''..'=-M-='-----.+-MXZ)+=
+CCCC+CCC++CCC++++++++++++++++++++++++++++++++++'''''''''''''''+CCCCCCCCCCCCCCC                    CCCCCCCC+++''+CC CC+.....'CC
+    C   CC   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++++++++++++C                                           CCC++C     C'''''+
+                                               CCCCCCCCCCCCCCC                                               CC       XXXXXC
+                                                                                                                      CCCCC
*'''''''''''''''''..'...'.''...............''''...-.----..-...'+++++======-==--MMMMMAAAXAAAAAXAAAMM--==+++++'''''+---='----..+=MXZ)+=
++++++++++++++++++''+'''+'++'''''''''''''''++++'''.'....''.'''+CCCCCCCCCCCCCCCC                    CCCCCCCCC+++++CCCCC+....''CC
+CCCCCCCCCCCCCCCCC++C+++C+CC+++++++++++++++CCCC+++'+''''++'+++C                                             CCCCC     C''''++
+                 CC CCC C  CCCCCCCCCCCCCCC    CCCXCXXXXCCXCCC                                                         XXXXCC
+                                                 C CCCC  C                                                            CCCC
*''''''''''''''............................''''...---------...'++++=======----MMMAAAAAXXXAAAAAAAAAMM--===++++''''+=MM='.----'+=MAZ1)=
+++++++++++++++''''''''''''''''''''''''''''++++'''.........'''+CCCCCCCCCCCCCCC                      CCCCCCCCC++++CC  C+'....+CC
+CCCCCCCCCCCCCC++++++++++++++++++++++++++++CCCC+++'''''''''+++C                                              CCCC     C+''''C
+              CCCCCCCCCCCCCCCCCCCCCCCCCCCC    CCCXXXXXXXXXCCC                                                         CXXXX
+                                                 CCCCCCCCC                                                             CCCC
*'''''''''''''.............................''''....--------..'+=++=====---MMMMMAAAAAXXXXXXXAAAMAAAMM--====++++'''+=MM-+.---.'+=MAZ1+=
++++++++++++++'''''''''''''''''''''''''''''++++''''........''+CCCCCCCCCCCC                          CCCCCCCCCC+++CC  CC'...'+CC
+CCCCCCCCCCCCC+++++++++++++++++++++++++++++CCCC++++''''''''++C                                                CCC      +'''+C
+             CCCCCCCCCCCCCCCCCCCCCCCCCCCCC    CCCCXXXXXXXXCC                                                          CXXXC
+                                                  CCCCCCCC                                                             CCC
*'''''''''''''................'''''''''''''''''.....-...---.'+++++=--==-MMMMAAAAXXXXXXXZZZZXAAAMMMMMM--===+=+++''+=MMM='.--.'+=-AX1)=
++++++++++++++''''''''''''''''+++++++++++++++++'''''.'''...'+CCCCCCCCCCC                             CCCCCCCCCC++CC   C+'..'+CCC
+CCCCCCCCCCCCC++++++++++++++++CCCCCCCCCCCCCCCCC+++++'+++'''+C                                                  CC      C+''+C
+             CCCCCCCCCCCCCCCC                 CCCCCXCCCXXXC                                                            CXXC
+                                                   C   CCC                                                              CC
*'''''''''''''...............'''''''''''''''++'''........-..'++++=--===--MMAAAAAXXXXXXXZZZZZZXAAMMMMMM--===+++++++=MAM='.--..+=-MXZ)+
++++++++++++++'''''''''''''''+++++++++++++++CC+++''''''''.''+CCCCCCCCCCCC                             CCCCCCCCCCCCC   C+'..''CCC
+CCCCCCCCCCCCC+++++++++++++++CCCCCCCCCCCCCCC  CCC++++++++'++C                                                          C+''++
+             CCCCCCCCCCCCCCC                    CCCCCCCCXCC                                                            CXXCC
+                                                        C                                                               CC
*''''''''++'''.............'''''''''''''''+++++++'''.......'+==========--MMAAAAXXXZZZZZZZZZZZZZXAAMMMMMM--=+++++++=MAM-'.---.'=-MXZ)+
+++++++++CC+++'''''''''''''+++++++++++++++CCCCCCC+++'''''''+CCCCCCCCCCCCC                               CCCCCCCCCCC   C+'...'+CC
+CCCCCCCC  CCC+++++++++++++CCCCCCCCCCCCCCC       CCC+++++++C                                                           C+'''+C
+             CCCCCCCCCCCCC                         CCCCCCC                                                             CXXXC
+                                                                                                                        CCC
*'''++++++++''''...........''''''''''''''++======+++'''''''++======++=-MMMAAAXXXXZZZZZZZXXXXXZZXXXAAMMMAMM-==++++==MAM-'.--..'=-MXZ)+
++++CCCCCCCC++++'''''''''''++++++++++++++CCCCCCCCCCC+++++++CCCCCCCCCCCC                                   CCCCCCCCC   C+'..''+CC
+CCC        CCCC+++++++++++CCCCCCCCCCCCCC           CCCCCCC                                                            C+''++C
+               CCCCCCCCCCC                                                                                             CXXCC
+                                                                                                                        CC
*'++++==++++++'''..........''''''''''''''+==------=====+++++=========-MMAAAAXXXXZZZZZZ1ZZZXXXXXXXXXAAAAAAAMM-=+++=-MAA-+.--..+=-MXZ)+
++CCCCCCCCCCCC+++''''''''''++++++++++++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCC                                      CCCCCCC   CC'..''CCC
+C            CCC++++++++++CCCCCCCCCCCCCC                                                                               +''++
+                CCCCCCCCCC                                                                                             CXXCC
+                                                                                                                        CC
*'+++======+++''...........'''''''''''''+==--MMMMM-------==+========--MMAAAAAAXXXZZZZZZZ1ZZZXXXAAAAMMMAAAAAAM-===--AXA-+..-..'=-MXZ1)
++CCCCCCCCCCCC++'''''''''''+++++++++++++CCCCC     CCCCCCCCCCCCCCCCCCCC                                       CCCCCC   CC''.''+CC
+C            CC+++++++++++CCCCCCCCCCCCC                                                                                ++'++C
+               CCCCCCCCCCC                                                                                             CCXCC
+                                                                                                                         C
*'+++======++'''.......''''''''''''''''++=--MMMMMM--------====+=====--MMAAAAXXXZZZZ1ZZZZZZZZZZZXXAAMMMMAAAXAAM--=-MAAA-+.....'=-MAZ1)
++CCCCCCCCCCC+++'''''''++++++++++++++++CCCCC      CCCCCCCCCCCCCCCCCCCC                                        CCCC    CC'''''+CC
+C           CCC+++++++CCCCCCCCCCCCCCCC                                                                                 +++++C
+               CCCCCCC                                                                                                 CCCCC
*'++++++==+++'''.......'''''.''''''''''+==--MMMMM---------===++====--MAAAAAAXXXZZZ111ZZ1ZZZZZZZZXXAAAAMMAAAAAAM---MAAA-+.....+=-MAXZ)
++CCCCCCCCCCC+++'''''''+++++'++++++++++CCCCC     CCCCCCCCCCCCCCCCCCCC                                          CCC    CC'''''CCC
+C           CCC+++++++CCCCC+CCCCCCCCCC                                                                                 +++++
+               CCCCCCC     C                                                                                           CCCCC
*++++++++++'''''''''''''''''.....''''+++==--M-M---=========++++===---MAAXAAAXXXZZ111)111111ZZZZZZXXXXXXAAAAAAMM--MMXXA-+....''+=MAXZ1
+CCCCCCCCCC+++++++++++++++++'''''++++CCCCCCC C CCCCCCCCCCCCCCCCCCCCCC                                          CC     CC''''++CC
+          CCCCCCCCCCCCCCCCC+++++CCCC                                                                                   ++++CC
+                           CCCCC                                                                                       CCCC
*++++++++++''''''''''''''''.......''''+++=----===+++++=+++++++++===--MMAAXXXXXXZZ11)))))))))1)1111ZZ111ZZXXAAM---MAXXM-+....''+=-AXZ1
+CCCCCCCCCC++++++++++++++++'''''''++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                                         CCC     CC''''++CCC
+          CCCCCCCCCCCCCCCC+++++++CCCC                                                                                  ++++CC
+                          CCCCCCC                                                                                      CCCC
*+++++++++++''+++++++++''''.......'''''++==-===+''''+++++++++++++==--MMMAXXXZZZZZ11))))+++++))))11111))111ZXAMM--MAXXM-+''..''+=-MAXZ
+CCCCCCCCCCC++CCCCCCCCC++++'''''''+++++CCCCCCCCC++++CCCCCCCCCCCCCCCCC                                          CC     CC++''++CCC
+           CC         CCCC+++++++CCCCC         CCCC                                                                    CC++CC
+                          CCCCCCC                                                                                        CC
*+++++++++++++++==++++++'''...'..'''''+++===+++'...'''++++'+++++==---MAAAXXZZZZ1111)))+)++++++)))1111))))11ZXAM--MAXAM=+''.''++=-MAXZ
+CCCCCCCCCCCCCCCCCCCCCCC+++'''+''+++++CCCCCCCCC+'''+++CCCC+CCCCCCCCCC                                          CC     CC++'++CCCC
+                       CCC+++C++CCCCC         C+++CCC    C                                                             CC+CC
+                          CCC CC               CCC                                                                       C
*==++++++=++++========++''''''''''''+++++==++''....'''+++'''+++=---MMMAAXXXZZ1111)))+)))+++++++)))))1111ZZZXXAM--MAAAM=++''''+==-MAXZ
+CCCCCCCCCCCCCCCCCCCCCCC++++++++++++CCCCCCCCC++''''+++CCC+++CCCCCCC                                            CC     CCC++++CCCC
+                       CCCCCCCCCCCC         CC++++CCC   CCC                                                             CCCC
+                                              CCCC
*==+++++==========---==++''''''.'''''++++=++''.---.'''+++'''++=----MMAAAAXXZ11)))++++))))))))))1111Z1ZZZZXXAAAMM-MAAAM=++''''++=--MXZ
+CCCCCCCCCCCCCCCCCCCCCCCC++++++'+++++CCCCCCC++'...'+++CCC+++CCCCCCC                                             C     CCC++++CCCCC
+                        CCCCCC+CCCCC       CC+'''+CCC   CCC                                                             CCCC
+                              C              CXXXC
+                                              CCC
*=======---===-----MM-=+++''''''''''++++++++'..--...''++''''++=---MMAAAAAXXZZ1))))))+)))))))111111ZZZZZZXXAAMMMM--MAAM=++''''++==-MAZ
+CCCCCCCCCCCCCCCCCC  CCCCC++++++++++CCCCCCCC+''..'''++CC++++CCCCCC                                              CC    CCC++++CCCCC
+                         CCCCCCCCCC        C++''+++CC  CCCC                                                             CCCC
+                                            CCXXCCC
+                                              CC
*====-------==---MMMAM-=+++++''''''++==++++'..---.'..'+''''''+==-MMMAAAAXXZZZZ11111111))))))11)1)111ZZZXXAAAMMMMMMMAA-=+''''''++=-MAX
+CCCCCCCCCCCCCCCC     CCCCCCC++++++CCCCCCCC+''...'+''+C++++++CCCC                                                    CCC++++++CCCC
+                            CCCCCC        C++'''+C++C CCCCCC                                                           CCCCCC
+                                           CCXXXC CC
+                                             CCC
*==---------==---MMAAMM===++++'''''++==++++'.---..'''''''''+++==-MMMMAAXXXZZZZZZZZZZZ1111111111)))11ZZXXXAAAAAAAAAAAAM+'''''''++=-MAX
+CCCCCCCCCCCCCCCC      CCCCCCC+++++CCCCCCCC+'...''+++++++++CCCCCC                                                     C+++++++CCCC
+                             CCCCC        C+'''++CCCCCCCCC                                                            CCCCCCC
+                                           CXXXCC
+                                            CCC
*==-------=-====--MMMM-====++++''''++====++'.--....'''...''++===-MMMMMAXXZZZZ11111111Z1ZZZZZZZ11111ZZXAAAAAAAAAAAAXXA-+''''''''+=-MAX
+CCCCCCCCCCCCCCCCC    CCCCCCCCC++++CCCCCCCC+'..''''+++'''++CCCCCC                                                    CC++++++++CCC
+                              CCCC        C+''++++CCC+++CC                                                            CCCCCCCC
+                                           CXXCCCC   CCC
+                                            CC
*=========--=====--M--======+++++++++===+++'.--..'.'''....''+-M---MMMAAXXZ1111)))))))111ZZZZZZZZZZZZXXAMMMMMAAAAAXXXA-+''''''''+=-MAX
+CCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCC+'..''+'+++''''++CC CCC                                                   CC++++++++CCC
+                                          C+''++C+CCC++++CC                                                           CCCCCCCC
+                                           CXXCC C   CCCC
+                                            CC
*=========---===------======++++=+==+==+++'.---.''''''....''+-M---MMMAAXXZZ111))))++)))))111111ZZZZZXXAMMMMAAAXAAXXXA-+''..''''+=-MAX
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+'...'++++++''''++CC CCC                                                   CC++''++++CCC
+                                         C+'''+CCCCCC++++CC                                                           CC++CCCC
+                                          CXXXC      CCCC                                                               CC
+                                           CCC
*========--------------====++++======++++''.--.'''''.'....''+=-----MMAAXXXZZZ11))++++======+++))1111ZZXXAAAXXXXXXXZXA-+'....'''+=-MAX
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++'..'+++++'+''''++CCCCCCC                                                  CC+''''+++CCC
+                                        CC+''+CCCCC+C++++CC                                                           C++++CCC
+                                          CXXC     C CCCC                                                              CCCC
+                                           CC
*++============---=----====++++====+++''''.----.''+'......''+==----MMAAXXXZZZ111))+++++++=====+++)))111ZZZZZ11ZZZZZXM=''......'++=-MX
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++++'....'++C+''''''++CCCCCCC                                                  C++''''''+CCCC
+                                     CCCC+''''+CC C++++++CC                                                          CC++++++C
+                                         CXXXXC    CCCCCC                                                              CCCCCC
+                                          CCCC
*++=============--==---====+++++++++''.''..--...''''.--..''++==--MMMMAAXXZZZZ111)))))++))+++++++++++))11111))111Z11XM=''......''+=-MA
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++'++''..'''++++'..''++CCCCCC                                                    C++''''''++CCC
+                                   CC+CC++''+++CCCC+''++CC                                                           CC++++++CC
+                                     C  CCXXCCC    CXXCC                                                               CCCCCC
+                                          CC        CC
*'++======+================++++'''''.............''..--..''++==-MAAAAAAXXZZZZ111))))))))))1)))))11)))))1111))111111ZM=+''.....''+=-MA
++CCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++'''''''''''''++''..''++CCCCC                                                     CC++'''''++CCC
+C                             CCCCC+++++++++++++CC++''++CC                                                            CC+++++CC
+                                   CCCCCCCCCCCCC  CCXXCC                                                                CCCCC
+                                                    CC
*''++===================+++++++''...----.'''''.'''..--...''+=--MAAXXXXXXXZZ11111)))))))))1111ZZZXXZZZZ111111ZZ1111ZXM=''.......'+=-MA
+++CCCCCCCCCCCCCCCCCCCCCCCCCCCC++'''....'+++++'+++''..'''++CCCC                                                      C++'''''''+CCC
+CC                            CC+++''''+CCCCC+CCC++''+++CC                                                           CC+++++++C
+                                CCCXXXXC     C   CCXXCCC                                                               CCCCCCC
+                                   CCCC            CC
*''++===========++======+++++'''...-----.'+''''.''..---..''+=--MMAXXXXXXXXZZZ11111)1111111ZZZXAXAAAAAXXXXXXXXXZZXXXA-+'........''+=-A
+++CCCCCCCCCCCCCCCCCCCCCCCCCC+++'''.....'+C++++'++''...''++CCCC                                                     CC+''''''''++CCC
+CC                          CCC+++'''''+C CCCC+CC++'''++CC                                                           C++++++++CC
+                               CCCXXXXXC      C  CCXXXCC                                                              CCCCCCCC
+                                  CCCCC            CCC
*++=============++======++++'''...------.'++++'''...---..''+=--MMAAXXXXXXXXZZZZZZZZZZZZZZZZZXXAAAAMMMMAAXXXAAAAXAAM-=+'.........'+=-M
+CCCCCCCCCCCCCCCCCCCCCCCCCCC+++'''......'+CCCC+++'''...''++CCCC                                                    CCC+'''''''''+CCC
+                           CCC+++''''''+C    CCC+++'''++CC                                                           C+++++++++C
+                              CCCXXXXXXC        CCCXXXCC                                                              CCCCCCCCC
+                                 CCCCCC            CCC
*=======+===++++++++++====++''...-------.''++++'....---..'++=--MMAAXXXZZZXXXXXXXXAAAAAAAAXXXXXXXXAAMMMMAAAAAAAAAAM===+'.........'++=-
+CCCCCCCCCCCCCCCCCCCCCCCCCCC++'''.......'++CCCC+''''...''+CCCCC                                                   CCCC+'''''''''+CCCC
+                           CC+++'''''''+CC    C++++'''++C                                                            C+++++++++C
+                             CCCXXXXXXXC       CCCCXXXCC                                                              CCCCCCCCC
+                                CCCCCCC            CCC
*==+==-=====+++++++++++++++'''...-------...'+=+''.......'++==-MMMAAAXXXZZZZXXXXXAAMMMMMMMMMMAAXXXXXAMMMMAAAAAAAAM-++=+'.........''+=-
+CCCCCCCCCCCCCCCCCCCCCCCCCC+++'''.......'''+CCC++'''''''+CCCCC                                                   CCCCC+'''''''''++CCC
+                          CCC+++'''''''+++C   CC+++++++C                                                             C+++++++++CC
+                             CCCXXXXXXXCCC      CCCCCCC                                                               CCCCCCCCC
+                                CCCCCCC
*++++=--====++''+++++++++++''...--------..-.+++'''......'++=--MMMAAAXXXXXXXXZZXAAAMMMMMM-----MMAXZZXAAAAAAAAAAMM-=''+++.........'''+=
+CCCCCCCCCCCCC++CCCCCCCCCCC++'''........''.'CCC+++''''''+CCCCC                          CCCCC                   CC++CCC'''''''''+++CC
+             CC           CC+++''''''''++'+   CCC++++++C                                                         CC   +++++++++CCC
+                            CCCXXXXXXXXCCXC      CCCCCC                                                               CCCCCCCCC
+                               CCCCCCCC  C
*++++==--===++''+===++++++'''..---------..-.'++'''......'++=--MMMAXXXXXXXXXXZZXXAAMMMMMMMM--MMMAXXZZXXXAAAAMMM--=+'''++'.........'''+
+CCCCCCCCCCCCC++CCCCCCCCCC+++''.........''.'+CC+++''''''+CCCCC                            CC                  CCCC+++CC+'''''''''+++C
+             CC          CCC++'''''''''++'+C  CCC++++++C                                                         CCC  C+++++++++CCC
+                            CCXXXXXXXXXCCXC      CCCCCC                                                                CCCCCCCCC
+                              CCCCCCCCC  C
*'++++=---==++''+===++'++'''+'.---------..-..''''......''++=--MMAAXXZZXXXXZZZZZZZXXAAAAAAAAAAAAAXXZZZZZZXAAMM--==+'''+'..........'''+
++CCCCCCCCCCCC++CCCCCC+CC+++C+'.........''.''++++''''''++CCCCC                                               CCCCC+++C+''''''''''+++C
+C            CC      C  CCC C+'''''''''++'++CCCC++++++CC                                                         CCC C++++++++++CCC
+                             CXXXXXXXXXCCXCC    CCCCCC                                                                CCCCCCCCCC
+                              CCCCCCCCC  C
*++++=---==+''''+==++''''''++'..-------...-...''...'....''+==--MMAXXZZZZ1111111111ZZZZZZZXZZZZZZZZZZZ111ZXAAM-==++'''+'...........'''
+CCCCCCCCCCC++++CCCCC++++++CC+''.......'''.'''++'''+''''++CCCCC                                              CCCCC+++C+'''''''''''+++
+           CCCC     CCCCCC  C++'''''''+++'+++CC+++C++++CC                                                        CCC C+++++++++++CCC
+                             CCXXXXXXXCCCXCCC  CCC CCCC                                                               CCCCCCCCCCC
+                               CCCCCCC   C
*++++=---=='''.'+++'''''''''''.--------.'..--........'..''++=---MAAAXXZ1111))))))))))))1111))))1111111111ZXAAM-=+++'++'.--........'.'
+CCCCCCCCCC+++'+CCC+++++++++++'........'+''..''''''''+''++CCCCCC                                              CCCCC+CC+'..''''''''+'+
+          CCC+C   CCCCCCCCCCC+''''''''+C++''++++++++C++CC                                                         C  C+''++++++++C+C
+             C               CXXXXXXXXC CCXXCCCCCCCC CC                                                               CXXCCCCCCCC C
+                              CCCCCCCC    CC                                                                           CC
*++''+=-===+'...'''''.''''.'''.--------...------.--....'''++==--MMAAXXXZ11)))+++++++)))))11))))))))11111111ZXAM-=++'++'..-..........'
+CC++CCCCCCC+'''+++++'++++'+++'........'''......'..''''+++CCCCCC                                               CCCC+CC+''.''''''''''+
+  CC       C+++CCCCC+CCCC+CCC+''''''''+++''''''+''++++CCC                                                         C  C++'++++++++++C
+            CCC     C    C   CXXXXXXXXCCCXXXXXXCXXCCCC                                                                CCXCCCCCCCCCC
+                              CCCCCCCC   CCCCCC CC                                                                      C
*''''+=+'+=+'.....'''.''....''.--------..---------.....''''++=--MMAAAXXXZZ1))))++++++++++)))))))))))11111111ZAM-==+++++'.-..........'
+++++CCC+CCC+'''''+++'++''''++'........''.........'''''++++CCCCC                                               CCCCCCCC+'.''''''''''+
+CCCC   C   C+++++CCC+CC++++CC+''''''''++'''''''''+++++CCCC                                                            C+'++++++++++C
+            CCCCC   C  CCCC  CXXXXXXXXCCXXXXXXXXXCCCCC                                                                 CXCCCCCCCCCC
+                              CCCCCCCC  CCCCCCCCC                                                                       C
*'''++=+''++'.......''''....'''..-----.'.---------.....''''+==--MMAAAXXXXXZ1111))))+++++=+===++++++)))))))))1ZAM-=+'++'..............
++++CCCC++CC+'''''''++++''''+++''.....'+'.........'''''++++CCCCC                                                CCC+CC+''''''''''''''
+CCC    CC  C+++++++CCCC++++CCC++'''''+C+'''''''''+++++CCCC                                                        C  C++++++++++++++
+            CCCCCCC    CCCC   CCXXXXXC CXXXXXXXXXCCCCC                                                                CCCCCCCCCCCCCC
+                                CCCCC   CCCCCCCCC
*'''+==+'.''..-.....''''.....'....---..'.----------....''''++==--MMAAAXXXXXZZZZ111))))))+)++++=++++++++++)++)1XAM-=++++'.............
++++CCCC+'++''.'''''++++'''''+''''...''+'..........''''++++CCCCCC                                                CCCCCC+'''''''''''''
+CCC    C+CC++'+++++CCCC+++++C++++'''++C+''''''''''++++CCCC                                                            C+++++++++++++
+        C  CCXCCCCC    CCCCC CCCCXXXCC CXXXXXXXXXXCCCC                                                                 CCCCCCCCCCCCC
+             C                   CCC    CCCCCCCCCC
*'''=-==+....---....''''...........--.''.---------..'''''+++++==---MMAAAXXXXZZZZ111))))))))))++++))++++++++++)1XAM-===+'.............
++++CCCCC''''...''''++++'''''''''''..'++'.........''+++++CCCCCCCCCC                                               CCCCC+'''''''''''''
+CCC     ++++'''++++CCCC+++++++++++''+CC+'''''''''++CCCCC                                                              C+++++++++++++
+        CCCCXXXCCCC    CCCCCCCCCCCXXC  CXXXXXXXXXCC                                                                    CCCCCCCCCCCCC
+            CCC                   CC    CCCCCCCCC
*'.'+--=+'..----......'.............-.''.--------...''''+++=+=====--MMAAAAAXXXZZZZ11111111111111111111111)))++1XAAM---=''............
++'+CCCCC+''....''''''+'''''''''''''.'++'........'''++++CCCCCCCCCCCC                                               CCCC++''''''''''''
+C+C     C++''''++++++C+++++++++++++'+CC+''''''''+++CCCC                                                               CC++++++++++++
+ C       CCXXXXCCCCCC CCCCCCCCCCCCCXC  CXXXXXXXXCCC                                                                     CCCCCCCCCCCC
+           CCCC                    C    CCCCCCCC
*+''+--==+..----.......'''...-.---.--.''.----.....''''+++========------MMMAAAXXZZZZ111ZZXXXXZZZZXXAAAXXXXZZ1))ZAMM----=+'............
+C++CCCCCC''....'''''''+++'''.'...'..'++'....'''''++++CCCCCCCCCCCCCCCCC                                           CCCCCC+''''''''''''
+ CC      ++''''+++++++CCC+++'+'''+''+CC+''''+++++CCCC                                                                  C++++++++++++
+         CCXXXXCCCCCCC   CCCXCXXXCXXC  CXXXXCCCCC                                                                       CCCCCCCCCCCC
+           CCCC             C CCC CC    CCCC
*+'.'=-=+'............'..'....-------.''.----..''''++++==----------------MMMMAAXXZZZZ1ZXXXAAAAAAAMM--MMMAXXZ11ZM-=====+''............
+C+'+CCCC+''''''''''''+''+''''.......'++'....''++++CCCCCCCCCCCCCCCCCCCCCC                          CC           CCCCCCC++''''''''''''
+ C+C    C++++++++++++C++C++++'''''''+CC+''''++CCCC                                                                    CC++++++++++++
+  C      CCCCCCCCCCCC CC CCCCXXXXXXXC  CXXXXCC                                                                          CCCCCCCCCCCC
+                             CCCCCCC    CCCC
*='.'++++'.......'........'...-------.''.----.''''+++===--MMMMMMMM-----------MMAXXZZZZZZXXAAM------====-MAXZ11XM-+++++'..............
+C+'+CCCC+'''''''+''''''''+'''.......'++'....'++++CCCCCCCC        CCCCCCCCCCC                CCCCCCCCCCC        CCCCCC+''''''''''''''
+ C+C    C+++++++C++++++++C+++'''''''+CC+''''+CCCC                                                                    C++++++++++++++
+  C      CCCCCCC CCCCCCCC CCCXXXXXXXC  CXXXXC                                                                         CCCCCCCCCCCCCC
+                             CCCCCCC    CCCC
*=+''+++++'...........---.....----.--.''.----..''++++===-MMAAAAAAMMM---------MMAAXXXXXXXXXAAM--=+++++===-MAXZZXM-+++++'..............
+CC++CCCCC+'''''''''''...'''''....'..'++'....''++CCCCCCCC           CCCCCCCCC                CCCCCCCCCCCC       CCCCCC+''''''''''''''
+  CC     C+++++++++++'''+++++''''+''+CC+''''++CC                                                                     C++++++++++++++
+          CCCCCCCCCCCXXXCCCCCXXXXCXXC  CXXXXCC                                                                        CCCCCCCCCCCCCC
+                     CCC     CCCC CC    CCCC
*=+..'++++''....'....-----........'...''.---..'''+=====--MAAAAAXAAMM----MM---MMAAAXAAAXXXAAAMM-==++'++==-MAXZXM-=++==+'..............
+CC''+CCCC++''''+''''.....''''''''+'''++'...''+++CCCCCCCC           CCCC  CCC                 CCCCC+CCCCC      CCCCCCC+''''''''''''''
+  ++C    CC++++C++++'''''++++++++C+++CC+'''++CCC                                                  C                  C++++++++++++++
+  CC       CCCC CCCCXXXXXCCCCCCCC CCC  CXXXCC                                                                         CCCCCCCCCCCCCC
+                    CCCCC               CCC
*++'.'+++++'...'''.---------.'..''''.'''.---..''++====---MAAAAXXXAAM-----MMMMMMMAAAAAAAMMMMMMM-====+++==-MAXZZA-+++==++'.............
+CC+'+CCCCC+'''+++'.........'+''++++'+++'...''++CCCCCCCCC           CCCCC                     CCCCCCCCCCC      CCCCCCCC+'''''''''''''
+  C+C     C+++CCC+'''''''''+C++CCCC+CCC+'''++CC                                                                       C+++++++++++++
+   C       CCC   CXXXXXXXXXC CC    C   CXXXCC                                                                          CCCCCCCCCCCCC
+                  CCCCCCCCC             CCC
*+++''''''++'..''''.--.-----.'..'''''++'.---..''++=====--MAAXXXXXXAMM------MMAAAAMMAAAAMM-----=========--MAXZZA-+++===+'.............
+CCC++++++CC+''++++'..'.....'+''+++++CC+'...''++CCCCCCCCC            CCCCCC              CCCCCCCCCCCCCCCC      CCCCCCCC+'''''''''''''
+   CCCCCC  C++CCCC+''+'''''+C++CCCCC  C+'''++CC                                                                       C+++++++++++++
+            CC    CXXCXXXXXC CC        CXXXCC                                                                          CCCCCCCCCCCCC
+                   CC CCCCC             CCC
*+=+'''''''''..'''''....----.'..''''++='---...''++++++==-MAAXXXXXXAMMMM---MMAAAAAMMMAAAAMM-===+++++==----MAZ1ZA-======+'.............
+CCC+++++++++''+++++''''....'+''++++CCC+...'''++CCCCCCCCC              CCC                CCCCCCCCCCCCCCC      CCCCCCCC+'''''''''''''
+   CCCCCCCCC++CCCCC++++''''+C++CCCC   C'''+++CC                                                                       C+++++++++++++
+            CC     CCCCXXXXC CC        XXXCCC                                                                          CCCCCCCCCCCCC
+                       CCCC            CCC
*+=+++++'''..'''''''.....---.'..''+++=='---..''+++++++=-MAAAAAAAAAAAAAAAMAAAXXAXAAAAAAAAAM-==+++++++===-MMXZ1ZA------=+''............
+CCCCCCC+++''+++++++'''''...'+''++CCCCC+...''++CCCCCCCCC                                  CCCCCCCCCCCCCC       CCCCCCCC++''''''''''''
+       CCC++CCCCCCC+++++'''+C++CC     C'''++CC                                                                        CC++++++++++++
+          CC       CCCCCXXXC CC        XXXCC                                                                            CCCCCCCCCCCC
+                        CCC            CCC
*''++==+''..............---.....'''++++'.--..''''''''+=-MMMAAMMMMMMAAAXXXZZXXXXXXXXXXAAAMM-==+++++++++==-MAZZZA------=+''............
+++CCCCC++''''''''''''''...'''''+++CCCC+'..''++++++++CCC                                  CCCCCCCCCCCCCCC      CCCCCCCC++''''''''''''
+CC     CC++++++++++++++'''+++++CCC    C+''++CCCCCCCC                                                                  CC++++++++++++
+         CCCCCCCCCCCCCCXXXCCCCC        CXXCC                                                                            CCCCCCCCCCCC
+                       CCC              CC
*'.'+==++''''...''...------..--..''+++''.---.'''''..'+==---------MMAXXZZZZZZXXZZZZZXXAAAAM--========+==-MAAZZXA-=----=+''............
++'+CCCCC++++'''++'''......''..''++CCC++'...'+++++''+CCCCCCCCCCCC                         CCCCCCCCCCCCCC       CCCCCCCC++''''''''''''
+C+C     CCCC+++CC+++''''''++''++CC   CC+'''+CCCCC++C                                                                  CC++++++++++++
+ C          CCC  CCCXXXXXXCCXXCC       CXXXC     CC                                                                     CCCCCCCCCCCC
+                    CCCCCC  CC          CCC
*...'====++''''.'''.-------.---...'+=+''.---..''....''+=====+===-MMAXXZZZZZXXXZZZZZXXXAAAAMM------=====-MMAXZXM-===--=+''............
+'''+CCCCCC++++'+++'.......'...'''+CCC++'...''++''''++CCCCCCCCCCC                           CCCCCCCCCCCC       CCCCCCCC++''''''''''''
++++C      CCCC+CCC+'''''''+'''+++C   CC+'''++CC++++CC                                                                 CC++++++++++++
+CCC           C   CXXXXXXXCXXXCCC      CXXXCC  CCCC                                                                     CCCCCCCCCCCC
+                   CCCCCCC CCC          CCC
*'..'=--===+++''''+'..---------.'..'+=+'.----.....''''''+++++++==-MAXXXZZXXXXXZZZZZZZXXAAAAMMMMMMM-====--MAAXA-=++==-==+'............
++''+CCCCCCCCC++++C+''.........'+''+CCC+'....'''''++++++CCCCCCCCCC                                CCCCCCC     CCCCCCCCCC+''''''''''''
+C++C         CCCC C++'''''''''+C++C   C+''''+++++CCCCCC                                                                C++++++++++++
+ CC                CCXXXXXXXXXC CC     CXXXXCCCCC                                                                       CCCCCCCCCCCC
+                     CCCCCCCCC          CCCC
*''.'+-====++=+'.''+''..-----...''.'+++'.----.....'''..''++++++===-MMAAXXAAAAXXZZXXXXAAMMAAXXXAAM--====----MM-==+++====+'..-.........
+++'+CCCCCCCCCC+'++C++''.....'''++'+CCC+'....'''''+++''++CCCCCCCCCC                              CCCCCCCCCC  CCCCCCCCCCC+''.'''''''''
+CC+C          C+CC CC++'''''+++CC+C   C+''''+++++CCC++CC                                                               C++'+++++++++
+  C            C     CCXXXXXCCC  C     CXXXXCCCCC   CC                                                                  CCXCCCCCCCCC
+                       CCCCC            CCCC                                                                              C
*++''+==+=====+'.'+++''.--.....'''''++'..----...'''''..''++========--MMMMMMMAAXXAAAAAMMMMAXZ1ZXAM--==========++''''+===+'..---.......
+CC++CCCCCCCCCC+'+CCC++'..'''''+++++CC+''....'''+++++''++CCCCCCCCCCCC                            CCCCCCCCCCCCCC++++CCCCC+''...'''''''
+  CC          C+C   CC+''+++++CCCCC  C++''''+++CCCCC++CC                                                      CCCC     C++'''+++++++
+               C      CXXCCCCC        CCXXXXCCC     CC                                                                  CCXXXCCCCCCC
+                       CC               CCCC                                                                              CCC
*=++''++++====+'.'+++'..-......'...'+''..---..''++''...'''+==++++++======--MMAAAMMMAMMAAAXZ111ZXAM-======+++'''...'+===+'..-----.....
+CCC++CCCCCCCCC+'+CCC+''.''''''+'''+C++''...''++CC++'''+++CCCCCCCCCCCCCCCCC                       CCCCCCCCCC+++'''+CCCCC+''.....'''''
+   CC         C+C   C++'++++++C+++C CC++'''++CC  CC+++CCC                                                  CCC+++C     C++'''''+++++
+               C     CCXCCCCCC CCC    CCXXXCC      CCC                                                        CCC       CCXXXXXCCCCC
+                       C                CCC                                                                               CCCCC
*++''''++++===''''++++'.-..''''..-.''''..--.''+==+''...'''++++''''+++++++=--MMMMMMMAAAAXXZZ11ZZXXAM==++++'''....--.'+==+''..------...
+CC++++CCCCCCC++++CCCC+'.''++++''.'++++''..'++CCCC++'''+++CCCC++++CCCCCCCCCC                       CCCCCC+++''''..'+CCCC++''......'''
+  CCCC       CCCC    C+'++CCCC++'+CCCC++''+CC    CC+++CCC    CCCC                                       CCC++++''+C    CC++''''''+++
+                      CXCC    CCXC    CCXXC        CCC                                                     CCCCXXC       CCXXXXXXCCC
+                       C        C       CC                                                                     CC          CCCCCC
*''....''++===+'''''''.--.''''...--.''''..-.'++=++''..'''''+'''''''+++''++=--MMMMMMMMMAAXZZZZZXXAM=++++''...------..'+==+'...-----...
+++''''++CCCCCC+++++++'..'++++'''..'++++''.'+CCCCC++''+++++C+++++++CCC++CCCCC                     CCCCC++'''......''+CCCC+'''.....'''
+CC++++CC      CCCCCCC+''+CCCC+++''+CCCC++'+C     CC++CCCCC CCCCCCC   CC                               CC+++''''''++C    C+++'''''+++
+  CCCC               CXXC    CCCXXC    CCXC        CC                                                   CCCXXXXXXCC      CCCXXXXXCCC
+                      CC        CC       C                                                                 CCCCCC           CCCCC
*''.....''+===++''''...--.''''.''..'''''....''++++''.'''''''''''''+=+++++==----MMMM--MMAAXXXXXXA-=+''''''...-----...'++=+''..-----...
+++'''''++CCCCCC++++'''..'++++'++''+++++''''++CCCC++'+++++++++++++CCCCCCCCCCCCC    CC           CCC++++++'''.....'''+CCCC++''.....'''
+CC+++++CC      CCCC+++''+CCCC+CC++CCCCC++++CC    CC+CCCCCCCCCCCCC                                 CCCCCC+++'''''+++C    CC++'''''+++
+  CCCCC            CCCXXC    C  CC     CCCC        C                                                    CCCXXXXXCCC       CCXXXXXCCC
+                      CC                                                                                   CCCCC            CCCCC
*'......'''+===+''''..--...'''.'''.''''.....''''++''.'''''''''''''+==+++++==--------=--MMMAAAAM-=+'''.......-----...''+=++'...----...
++''''''+++CCCCC++++''..'''+++'+++'++++'''''++++CC++'+++++++++++++CCCCCCCCCCCCCCCCCCCCC        CCC+++'''''''.....'''++CCCC+'''....'''
+C++++++CCC     CCCC++''+++CCC+CCC+CCCC+++++CCCC  CC+CCCCCCCCCCCCC                                CCC+++++++'''''+++CC    C+++''''+++
+ CCCCCC            CCXXCCC   C   C    CCCCC        C                                                CCCCCCCXXXXXCCC       CCCXXXXCCC
+                     CC                                                                                    CCCCC             CCCC
*''.....'''+++++++=+'---.'.....''''........'''''''''''...'++++''''+=+++++++=--===--====---MMMM-=+''..........---.....'+===+'...--.-..
+++'''''+++CCCCCCCCC+...'+'''''++++''''''''+++++++++++'''+CCCC++++CCCCCCCCCCCCCCCCCCCCCCCC    CCC++''''''''''...'''''+CCCCC+'''..'.''
+CC+++++CCC         C'''+C+++++CCCC++++++++CCCCCCCCCCC+++C    CCCC                               CC++++++++++'''+++++C     C+++''+'++
+  CCCCC             XXXC CCCCC    CCCCCCCC           CCC                                          CCCCCCCCCCXXXCCCCC       CCCXXCXCC
+                    CCC                                                                                     CCC               CC C
*''......'''++=====+'....'.--..........-.''''''''''''..'''+++++'''+++++++++====++=========-----=+''...------..-......'+===+''........
+++''''''+++CCCCCCCC+''''+'..''''''''''.'++++++++++++''+++CCCCC+++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++'''......''.''''''+CCCCC++''''''''
+CC++++++CCC        C++++C+''++++++++++'+CCCCCCCCCCCC++CCC     CCC                               CC+++''''''++'++++++C     CC++++++++
+  CCCCCC            CCCC CXXCCCCCCCCCCXC            CC                                            CCCXXXXXXCCXCCCCCC        CCCCCCCC
+                          CC          C                                                              CCCCCC  C
*'........''+==---=+'...'''---.....--....''''''''''''''+++===++'''''''++++===++++++==++++==----==+''..------.........'++===+''.......
++''''''''++CCCCCCCC+'''+++...'''''..''''++++++++++++++CCCCCCCC+++++++CCCCCCCCCCCCCCCCCCCCCCCCCCCC++''......'''''''''+CCCCCC++'''''''
+C++++++++CC        C+++CCC'''+++++''++++CCCCCCCCCCCCCC        CCCCCCC                            CC++''''''+++++++++C      CC+++++++
+ CCCCCCCC           CCC   XXXCCCCCXXCCCC                                                           CCXXXXXXCCCCCCCCC         CCCCCCC
+                          CCC     CC                                                                 CCCCCC
*'...''...''+=----=+'...'''----....--..'''''''''''''''+++====+''''''+++++++=+++++++++++++===----==+'..----........''''++====+'.......
++'''++'''++CCCCCCCC+'''+++....''''..''+++++++++++++++CCCCCCCC++++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+''....''''''''++++CCCCCCC+'''''''
+C+++CC+++CC        C+++CCC''''++++''++CCCCCCCCCCCCCCC        CCCCCC                               C++''''++++++++CCCC       C+++++++
+ CCC  CCC           CCC   XXXXCCCCXXCC                                                             CCXXXXCCCCCCCC            CCCCCCC
+                          CCCC    CC                                                                 CCCC
*+'.'''..''+=-MMMM-=''''''..--..''.-..''''.'''''''''+++++++==+''''''++++++++++++==++++'++==-------=+'.--.....'..'''+''++==-==+'......
+C+'+++''++CCC    CC++++++''..''++'.''++++'+++++++++CCCCCCCCCC++++++CCCCCCCCCCCCCCCCCC+CCCCCCCCCCCCC+'..'''''+''+++C++CCCCCCCC+''''''
+ C+CCC++CC         CCCCCC++''++CC+'++CCCC+CCCCCCCCC          CCCCCC                  C             C+''+++++C++CCC CC        C++++++
+  C   CC                 CCXXCC  CXCC    C                                                          CXXCCCCC CC               CCCCCC
+                           CC     C                                                                  CC
*+''''''..'+=-MMMMM=+'''''.--.-..'.-..'''...''''''''++++'++==+'''''++'''++++''++==++'''+==-------=++'........'''''''++++===-==+'.....
+C++++++''+CCC     CC+++++'..'.''+'.''+++'''++++++++CCCC+CCCCC+++++CC+++CCCC++CCCCCC+++CCCCCCCCCCCCC+''''''''+++++++CCCCCCCCCCC+'''''
+ CCCCCC++C          CCCCC+''+'++C+'++CCC+++CCCCCCCC    C     CCCCC  CCC    CC      CCC             C++++++++CCCCCCC           C+++++
+       CC                CXXCXCC CXCC   CCC                                                         CCCCCCCC                   CCCCC
+                          CC C    C
*=+++=+'..'+=MAAAAA-+'''''....-......'''''.'''++'''''+'+++===+''''++'''''++''++===+''++==--==---==++'''.....'''''''''++++=====++'''..
+CCCCCC+''+CC      CC+++++''''.''''''+++++'+++CC+++++C+CCCCCCC++++CC+++++CC++CCCCCC++CCCCCCCCCCCCCCC+++'''''+++++++++CCCCCCCCCCC+++''
+      C++C          CCCCC++++'++++++CCCCC+CCC  CCCCC C       CCCC  CCCCC  CC      CC               CCC+++++CCCCCCCCC           CCC++
+       CC                CCCCXCCCCCC     C                                                            CCCCC                       CC
+                             C
*=+'+=+'..'+=-AAXXA-+''.'''....-.....'''+'''''++++'''''++===++''''++''.'''+'+++==+'''+=====++====++'''''...''++''''''''++++====+'''..
+CC+CCC+''+CCC     CC++'+++''''.'''''+++C+++++CCCC+++++CCCCCCC++++CC++'+++C+CCCCCC+++CCCCCCCCCCCCCC+++++'''++CC++++++++CCCCCCCCC+++''
+  C   C++C          CC+CCC++++'+++++CCC CCCCC    CCCCC       CCCC  CC+CCC C      CCC              CCCCC+++CC  CCCCCCCC         CCC++
+       CC             C   CCCCXCCCCC                                 C                                 CCC                        CC
+                              C
*+.'+=='..'+=MAXXXA-+'''''''''.-.....''++++'''++++''++++==+++++''''++'''''++=====+''++==+++''+++''''++'''''+++++'''...''++++==-=+'''.
+C'+CCC+''+CC      CC+++++++++'.'''''++CCCC+++CCCC++CCCCCCCCCCC++++CC+++++CCCCCCCC++CCCCCCC++CCC++++CC+++++CCCCC+++'''++CCCCCCCCC+++'
+ +C   C++C          CCCCCCCCC+'+++++CC    CCC    CC           CCCC  CCCCC        CC       CC   CCCC  CCCCC     CCC+++CC         CCC+
+ C     CC                    CXCCCCC                                                                              CCC              C
+                              C
*'..+++'..'+=MAAAAM=+''''''......----.++=+++++++'''+++++++''++++++++++''++======+'.'+++++''''''..''++++++++++++++'''..''''++==-=+'''.
++''CCC+''+CC      CC++++++''''''....'CCCCCCCCCC+++CCCCCCC++CCCCCCCCCC++CCCCCCCCC+'+CCCCC++++++''++CCCCCCCCCCCCCC+++''++++CCCCCCC+++'
+C++   C++C          CCCCCC++++++''''+          CCC       CC          CC         C+C     CCCCCC++CC              CCC++CCCC       CCC+
+ CC    CC                 CCCCCCXXXXC                                            C            CC                   CC              C
+                                CCCC
*'..'''...'+=MAAAA-='..'++'......----'+==++=++++''+++'''''''+++====+++++=======+'..'+++''''''...'''++++++++==+====++'''''''++====+''.
++''+++'''+CC     CC+''+CC+''''''....+CCCCCCCCCC++CCC+++++++CCCCCCCCCCCCCCCCCCCC+''+CCC++++++'''+++CCCCCCCCCCCCCCCCC+++++++CCCCCCC++'
+C++CCC+++C         C++C  C++++++''''C          CC   CCCCCCC                    C++C   CCCCCC+++CCC                 CCCCCCC       CC+
+ CC   CCC           CC    CCCCCCXXXX                                            CC          CCC                                    C
+                                CCCC
*'..''....'+=-AAA-=+'..'++'.------...'+======++++'++'...''''+++====+++=========+'.'''''.'''''..''''''++++++==+=====+++'''''++====+''.
++''++''''+CCC   CCC+''+CC+'......'''+CCCCCCCCCCC+CC+'''++++CCCCCCCCCCCCCCCCCCCC+'+++++'+++++''++++++CCCCCCCCCCCCCCCCC+++++CCCCCCC++'
+C++CC++++C         C++C  C+''''''+++C           C  C+++CCCC                    C+CCCCC+CCCCC++CCCCCC                 CCCCC       CC+
+ CC  CCCC           CC    CXXXXXXCCC                CCC                         C     C     CC                                     C
+                           CCCCCC
*'.......'+==-MAM-=+'''+=+'.-----...'++==--==++++++''...''++++==========-==++==+'''''''''+++'''''+'''++++++===========+++++++====+''.
++'''''''+CCCC   CCC+++CCC+'.....'''+CCCCCCCCCCCCCC++'''++CCCCCCCCCCCCCCCCCCCCCC+++++++++CCC+++++C+++CCCCCCCCCCCCCCCCCCCCCCCCCCCCC++'
+C+++++++C          CCC   C+'''''+++C              CC+++CC                      CCCCCCCCC   CCCCC CCC                             CC+
+ CCCCCCC                  CXXXXXCCC                 CCC                                                                            C
+                           CCCCC
*.---.-..'+====-==+'''+=-='.------.'''+=---====++++'...'''+++++====---====++++++''''''''+++++'''+++++++++++===============+++===++''.
+'...'.''+CCCCCCCCC+++CCCC+'......'+++CCCCCCCCCCCCC+'''+++CCCCCCCCCCCCCCCCCCCCCC++++++++CCCCC+++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++'
++'''+'++C         CCC    C+''''''+CCC             C+++CCC                      CCCCCCCC     CCC                                  CC+
+CXXXCXCC                  CXXXXXXC                 CCC                                                                             C
+ CCC C                     CCCCCC
*.---...'+===++++'''.'+--='.------.'''+=-MM--=====+'''''''+++++=======+++=+++=+++''''++++++++''+===+++++++++====================++''.
+'...'''+CCCCCCCC+++'+CCCC+'......'+++CCC  CCCCCCCC+++++++CCCCCCCCCCCCCCCCCCCCCCC++++CCCCCCCC++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++'
++'''+++C        CCC+C    C+''''''+CCC             CCCCCCC                       CCCC        CC                                   CC+
+CXXXCCC            C      CXXXXXXC                                                                                                 C
+ CCC                       CCCCCC
*.---..'+=--=+'......'=--='.------.'''+=MMMM-==--=+''''''+++'++=====+++++=====++'''+++=++++++'+++++++'+=+++=============--=======+''.
+'...''+CCCCCC+''''''+CCCC+'......'+++CC    CCCCCCC++++++CCC+CCCCCCCCCCCCCCCCCCC+++CCCCCCCCCC+CCCCCCC+CCCCCCCCCCCCCCCCCCCCCCCCCCCC++'
++'''++C      C++++++C    C+''''''+CCC             CCCCCC   C                   CCC          C       C                            CC+
+CXXXCC        CCCCCC      CXXXXXXC                                                                                                 C
+ CCC                       CCCCCC
*--...'+=---='.......'=--=+.------.''+=-MMMMM--M-=+++''++''''++====++'++======++''++=======++++++'''''++====---=========-----====++''
+..'''+CCCCCC+'''''''+CCCCC'......'++CCC     CC CCCCC++CC++++CCCCCCCC+CCCCCCCCCC++CCCCCCCCCCCCCCC+++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCC++
+''+++C      C+++++++C     +''''''+CC                CC  CCCC        C          CC               CCCCC                             CC
+XXCCC        CCCCCCC      CXXXXXXC
+CC                         CCCCCC
*--...'+=---=+....-..'=--=+.-----...''+=-MMM-MMM-==+'''''''''++++++++++=======++'++=======++''''''''''+====--M--==++===------====++''
+..'''+CCCCCCC''''.''+CCCCC'.....'''++CCC   C   CCCC+++++++++CCCCCCCCCCCCCCCCCCC+CCCCCCCCCCC++++++++++CCCCCCC CCCCCCCCCCCCCCCCCCCCC++
+''+++C       ++++'++C     +'''''+++CC              CCCCCCCCC                   C           CCCCCCCCCC                             CC
+XXCCC        CCCCXCC      CXXXXXCCC
+CC               C         CCCCC
*....'+=----='....-..+=--=+.-----...''+=--MMMMAMM-=++''..'''''++++++=====---==+++++========+'''''''''+==-----M----=====---MM---==++''
+''''+CCCCCCC+''''.''CCCCCC'.....'''++CCCC       CCCC++''+++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++++++CCCCCCCC CCCCCCCCCCCC  CCCCCCC++
+++++C       C++++'++      +'''''+++CC               CC++CCCCC                              CCCCCCCCC                              CC
+CCCC         CCCCXCC      CXXXXXCCC                   CC
+                 C         CCCCC
*...''+=---=+'...--..+=---+.-----...''++=-MAAAAAM==++'......'''''++++===---===++++======++++'''++'''+==-------------------MMM---=++''
+'''++CCCCCCC+'''..''CCCCCC'.....'''++CCCC       CCCC+''''''+++++CCCCCCCCCCCCCCCCCCCCCCCCCCC+++CC+++CCCCCCCCCCCCCCCCCCCCCC   CCCCCC++
++++CC       C+++''++      +'''''+++CC               C++++++CCCCC                           CCC  CCC                               CC
+CCC          CCCXXCC      CXXXXXCCC                  CCCCCC
+                CC         CCCCC
*...''+===++'...--..'+=-M-+.------..''+=-MAXAAAA-=+++'..........'+++++==--===========+++==+++++++'''++=----===---MMM-MM---MMMMM-==++'
+'''++CCCCCC+'''..''+CCC CC'......''++CCC       CCCCC+''''''''''+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++CCCCCCCCCCCCC   C  CCC     CCCCC+
++++CC      C+++''++C      +''''''++CC               C++++++++++C                                CCC                                C
+CCC         CCCXXCC       CXXXXXXCC                  CCCCCCCCCC
+               CC          CCCCCC
*...'+===+'...---..'+=-MM-+.-------.'++=-MXXXXAM-=++'...........'+++++======-----===+++====++++''.''++=======---MMMMMMM-----MMM--==+'
+'''+CCCCC+'''...''+CCC  CC'.......'+CCCC       CCCC+'''''''''''+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++'++CCCCCCCCCCCC       CCCCC   CCCCC+
++++C     C+++'''++C       +'''''''+C               C+++++++++++C                              CC+CC                                C
+CCC       CCCXXXCC        CXXXXXXXC                 CCCCCCCCCCC                                 C
+             CCC           CCCCCCC
*...'+=-='..-.---..'+=-MM-+.-------.'++=-AXZZXAM-=+'...........''''++++++===-------=++=====++''.....'++======--MMMMMMMMM-----MMM--=++
+'''+CCCC+''.'...''+CCC  CC'.......'+CCCC       CCC+'''''''''''++++CCCCCCCCCCCCCCCCCCCCCCCCCC++'''''+CCCCCCCCCC         CCCCC   CCCCC
++++C    C++'+'''++C       +'''''''+C              C+++++++++++CCCC                          CC+++++C
+CCC      CCXCXXXCC        CXXXXXXXC                CCCCCCCCCCC                                CCCCC
+           C CCC           CCCCCCC
*...'=--='.--.--..'+=--M-=+.-------.'+=-MAXXXXXAM=+''.........''''''''''++=-----M--====++==++'..--..''++=----=-MMMMMMMMMM----MMMM--=+
+'''+CCCC+'..'..''+CCCC CCC'.......'+CCC         CC++'''''''''++++++++++CCCCCCCC CCCCCCCCCCCC+''..''++CCCCCCCCC          CCCC    CCCC
++++C    C+''+''++C        +'''''''+C              CC+++++++++CCCCCCCCCC                     C++''++CC
+CCC      CXXCXXCC         CXXXXXXXC                 CCCCCCCCC                                CCXXCC
+          CC CC            CCCCCCC                                                             CC
*.''+=--='..---...'+=-MMM-+.------..'+=-AAXXXXXAM=+''.........''''''''''+==---M----====++==++''...''+++==--===--MMMMMMMMMM---MMMMM-==
+'++CCCCC+''...'''+CCC   CC'......''+CCC         CC++'''''''''++++++++++CCCCCC CCCCCCCCCCCCCC++'''++CCCCCCCCCCCC          CCC     CCC
++CC     C++'''+++C        +''''''++C              CC+++++++++CCCCCCCCCC                     CC+++CC
+C        CCXXXCCC         CXXXXXXCC                 CCCCCCCCC                                 CCC
+           CCC             CCCCCC
*'''+=--+'.----...'+-MMMM-+.------..'+=-MAAAAXAAM-=+'........''+''''''+++==-------==========+++''''+++++=======-MMMM-----M-----MMM--=
++++CCCCC+'....'''+CC    CC'......''+CCC         CCC+''''''''++C++++++CCCCCCCCCCCCCCCCCCCCCCCCC++++CCCCCCCCCCCCC    CCCCC CCCCC   CCC
+CCC     C+''''+++C        +''''''++C               C++++++++CC CCCCCC                         CCCC
+         CXXXXCCC         CXXXXXXCC                 CCCCCCCC
+          CCCC             CCCCCC
*'''+=--='.--..-..'+-MAAM-='.------.'+=--MMAAAAAAM-='........''+++'++++========-------=======++++++''''+++==------------------------=
++++CCCCC+'..''.''+CC    CC+'......'+CCCC         CC+''''''''++CCC+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+CCC     C+''++'++C        C+''''''+C               C++++++++CC   C                                CCCC
+         CXXCCXCC          CXXXXXXC                 CCCCCCCC
+          CC  C             CCCCCC
*++'+=--+'........'+-MAAM-+'.------.'+==-MMMAXXXAM-='.......''''++++===---======------==+++++++++++'''''++==----------------------===
+CC+CCCCC+''''''''+CC    CC+'......'+CCCC         CC+'''''''++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+  C     C++++++++C        C+''''''+C               C+++++++CCCC                                   CCCCC
+         CCCCCCCC          CXXXXXXC                 CCCCCCC
+                            CCCCCC
*+''+---+.........'=-MAAM-+'-------..'+=-MMAAXXAA-=+'.....'''++++===-----M------MM----========++++'''+''++===---------------------===
+C++CCCCC'''''''''+CC    CC+.......''+CCC        CCC+'''''+++CCCCCCCCCCCC CCCCCC  CCCCCCCCCCCCCCCC+++C++CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+ CC     +++++++++C        C'''''''++C              C+++++CCC                                     CCC CC
+        CCCCCCCCC          XXXXXXXCC                CCCCC
+                           CCCCCCC
*'..'=-=+..--.....'+--MMM-='.-------.'+=-MAAAXAA-=+'.....''+++++===------MMMMMMMMM-----=======++''''''''+====----=-------MMMMM-----==
++''+CCCC''..'''''+CCC   CC+'.......'+CCC       CCC+'''''++CCCCCCCCCCCCCC         CCCCCCCCCCCCCC++++++++CCCCCCCCCCCCCCCCC     CCCCCCC
+C++C    ++''+++++C        C+'''''''+C             C+++++CC                                     CCCCCCCC
+ CC     CCXXCCCCC          CXXXXXXXC               CCCCC
+          CC                CCCCCCC
*...'=-=+..--....''+--MMM-='.-------.'+=-AAXXXAM-+''.....''++++===---MMMMMMMMMMMMM-----===+++++++'''''+++==--------------MMMMMM-----=
+'''+CCCC''..''''++CCC   CC+'.......'+CCC       CC++'''''++CCCCCCCCCC             CCCCCCCCCCCCCCC+++++CCCCCCCCCCCCCCCCCCC      CCCCCC
++++C    ++''++++CC        C+'''''''+C            CC+++++CC                                      CCCCC
+CCC     CCXXCCCC           CXXXXXXXC               CCCCC
+          CC                CCCCCCC
*...'==+'..--....'+=-MMMM-='.--------.+=MAAXXXAM-+''..'''''++==---MMMAAAAMAAAAAMMM------==+''+++++''++====---MMMM-------MMMAAMMMM---=
+'''+CCC+''..''''+CCC    CC+'........'CC        CC++''+++++CCCCCCC                CCCCCCCCC++CCCCC++CCCCCCCCC    CCCCCCC         CCCC
++++C   C++''++++C         C+''''''''+            CC++CCCCC                                CC     CC
+CCC     CCXXCCCC           CXXXXXXXXC              CC
+          CC                CCCCCCCC
*'''+==+'..--...''+=-MMMM--+'--------.+=-MAXXXAM-+'..'++++++=--MMAAAAAAAAAAAAAAMMM----MMM-+''''+++++++===--MM-MMMMM------MMMAMMMMM--=
++++CCCC+''..'''++CCC    CCC+........'CCC       CC+''+CCCCCCCCC                   CCCC   CC++++CCCCCCCCCCCC  C     CCCCCC         CCC
+CCC    C++''+++CC          C''''''''+            C++C                                     CCCC
+        CCXXCCC             XXXXXXXXC             CC
+          CC                CCCCCCCC
*++++==+'..-..'''++=--MMM--+.--------.'=-MAXXAM-=+'.'+++=++++=-MMAAAAAAAAMMMMMMMM-----MM--=+++++++=++++++=---------===---MMMMMMMMM--=
+CCCCCCC+''.''+++CCCCC   CCC'........'+CC      CCC+'+CCCCCCCCCC                  CCCCC  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC         CCC
+       C++'++CCC           +''''''''+C           C+C
+        CCXCC              CXXXXXXXXC             C
+          C                 CCCCCCCC
*===+=+''..-..'''+==----M--+'--------.'+-AAXXAM-=++''++++=+++=--MMAAXXXXAAAMMMAAAAMMMM---===+++++====++++==--===--=====--MMMMMMMMMM--
+CCCCCC++''.''+++CCCCCCC CCC+........'+CC      CCCC++CCCCCCCCCCC                      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC          CC
+      CC++'++CCC           C''''''''+C            CC
+        CCXCC               XXXXXXXXC
+          C                 CCCCCCCC
*=====+''....'''++==-------+.--------.'=MAXXXAM--=++++++++====--MMMAAXXXXXAAAAAXXZXXAM--===++'+++++=======---------====--MMMMAAAMMM--
+CCCCCC++''''+++CCCCCCCCCCCC'........'+C       CCCCCCCCCCCCCCCCC                      CCCCCCC+CCCCCCCCCCCCCCCCCCCCCCCCCCC          CC
+      CC++++CCC            +''''''''+C                                                      C
+        CCCC               CXXXXXXXXC
+                            CCCCCCCC
*+---=++''..''++++=-------=+'--------'=-AXXXAM--===+++'''++==-----MMMMAAAAAAAAAXXZXXAMM--===+'''++++=-----MMMMMMMM---===-MMAAAAAAAMM-
+CCCCCCC++''++CCCCCCCCCCCCCC+........+CC      CCCCCCCC+++CCCCCCCCC                     CCCCCC+++CCCCCCCCCC        CCCCCCC           C
+       CC++CC              C''''''''C                CCC                                    CCC
+         CC                 XXXXXXXX
+                            CCCCCCCC
*+=---=+++'''''+++==---====+'--------'=-AAXAAM-===++'''....'++++++===--MMMAAAMMMAAAAMM---===++'''+++=--==-MMMM--MM--====--MAAAAMMAMM-
+CCCCCCCCC+++++CCCCCCCCCCCCC+........+CC      CCCCCC+++''''+CCCCCCCCCCC               CCCCCCCC+++CCCCCCCCC    CC  CCCCCCCC          C
+         CCCCC             C''''''''C              CCC++++C                                  CCC
+                            XXXXXXXX                  CCCC
+                            CCCCCCCC
*+=--M-==+'''''+++===-=====+'-------.'=-MAAAM--+'''....-----.......''++=--MMAMMMMMMMM-=====+++++++++======--MMMMMM--=====-MMAAMMMMMM-
+CCCC CCCC+++++CCCCCCCCCCCCC+.......'+CC     CCC+++''''.....'''''''++CCCCC           CCCCCCCCCCCCCCCCCCCCCCC      CCCCCCCC          C
+         CCCCC             C'''''''+C          CCC++++'''''+++++++CC
+                            XXXXXXXC              CCCCXXXXXCCCCCCC
+                            CCCCCCC                   CCCCC
*==--MM-=''''''++++========+'-------'+=-MAAMM=+.----------------------.'+=-MMMAMM----==+==+++==++++++======-MMMMMM----===--MMMMMMMMM-
+CCCC  CC++++++CCCCCCCCCCCCC+.......+CCC     CC'......................'+CCC      CCCCCCCCCCCCCCCCCCCCCCCCCCC      CCCCCCCCC         C
+        CCCCCC             C'''''''C          +''''''''''''''''''''''+C
+                            XXXXXXX           CXXXXXXXXXXXXXXXXXXXXXXC
+                            CCCCCCC            CCCCCCCCCCCCCCCCCCCCCC
*----MM-+'...''''++++======+.------.+=---MM-+'---'''''''-----------------.+--MAAAAM--==+++++===+++==+===------MMM-------------M-MMMM-
+CCCC  CC+'''++++CCCCCCCCCCC'......'CCCCC  CC+...CCCCCCC.................'CCC      CCCCCCCCCCCCCCCCCCCCCCCCCCC   CCCCCCCCCCCCC C    C
+        C+++CCCC           +''''''+         C'''BBBBBBB'''''''''''''''''+
+         CCC               CXXXXXXC          XXXHHHHHHHXXXXXXXXXXXXXXXXXC
+                            CCCCCC           CCCXXXXXXXCCCCCCCCCCCCCCCCC
*-----M-=+...'''''''++===++'.-----.'=---=++.--''''''''-----.......----''--.'+=-MAMMM-==++++++++++=======----==----===---------M---MMM
+CCCCC CCC'''+++++++CCCCCCC+'.....'+CCCCCCC'..CCCCCCCC.....'''''''....CC..'+CCC     CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCC
+         +++CCCCCCC       C+'''''+C       +''BBBBBBBB'''''+++++++''''BB''+C
+         CCC               CXXXXXC        CXXHHHHHHHHXXXXXCCCCCCCXXXXHHXXC
+                            CCCCC          CCXXXXXXXXCCCCC       CCCCXXCC
*----MMM=+'..''''''''++==++''....'+====+'.--'''''''---.''.-.''''++'.---''---.'+=---===++''++++++=========-====----====-------MM---MMM
+CCCC   CC+''++++++++CCCCCC++''''+CCCCCC+'..CCCCCCC...'++'.'++++CC+'...CC...'+CCCCCCCCCC++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC  CCC
+         C++CCCCCCCC      CC++++C      C+''BBBBBBB'''+CC+'+CCCC  C+'''BB'''+C          CC
+          CC                CCCC        CXXHHHHHHHXXXC  CXC       CXXXHHXXXC
+                                         CCXXXXXXXCCC    C         CCCXXCCC
*=---MMM-='.'''''...''++++++''.''+===+'.--'''''''--.'=--='-.'++===++'.--'----..++==++++''''++++++=+++++=====-----=====--------MM--M--
+CCCC   CC+'+++++'''++CCCCCC++'++CCCCC+'..CCCCCCC..'+CCCC+.'+CCCCCCC+'..C....''CCCCCCCC++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC  CC CC
+         C+CCCCC+++CC      CC+CC     C+''BBBBBBB''+C    C'+C       C+''B''''++        CCCC
+          C     CCC          C        CXXHHHHHHHXXC      XC         CXXHXXXXCC
+                                       CCXXXXXXXCC       C           CCXCCCC
*=-MMMMM-=+''''......''+===+++++===++'.--''''''---.+-MAM-+--.+=-MM-==+.-'---..'++==+''''''''++++++++''+=========----==-----===-------
+CC     CCC++++''''''++CCCCCCCCCCCCCC+'..CCCCCC...'CC   CC..'CCC  CCCC'.C...''+CCCCC++++++++CCCCCCCC++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+          CCCC++++++CC              C+''BBBBBB'''+       ''+         +'B'''++C     CCCCCCCC        CC
+              CCCCCC                 CXXHHHHHHXXXC       XXC         CXHXXXCC
+                                      CCXXXXXXCCC        CC           CXCCC
*=-MMMMM-==++'..---..''+=-========+'...--'''''---..'+=--='---+-MAAMM-='--'--.'+==-==++''''''''''''''''''+++======--============------
+CC     CCCCC+''...''++CCCCCCCCCCCC+'''..CCCCC...''+CCCCC+...CC     CC+..C..'+CCCCCCCC++++++++++++++++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+            C++'''++CC            C+++''BBBBB'''++C     C'''         C''B''+C        CCCCCCCCCCCCCCCCCC
+             CCXXXCC               CCCXXHHHHHXXXCC       XXX          XXHXXC
+               CCC                    CCXXXXXCCC         CCC          CCXCC
*=-MMAMM-==++'..---..'+=--------=+'....-'''''--------'MM+.---'-MAAAAM-+.----.+-MM---==++++''''''''........'++====--==================
+CC     CCCCC+''...''+CCCCCCCCCCCC+''''.CCCCC........+  C'...+C      CC'....'CC  CCCCCCCCC++++++++''''''''+CCCCCCCCCCCCCCCCCCCCCCCCCC
+            C++'''++C            C++++'BBBBB''''''''C   +'''C         +''''+             CCCCCCCC++++++++C
+             CCXXXCC              CCCCXHHHHHXXXXXXXX    CXXX          CXXXXC                     CCCCCCCC
+               CCC                    CXXXXXCCCCCCCC     CCC           CCCC
*=-MAMM-==+++'..---..'+--------=+''....-------''-''---++.----.=MAXXXAM-'----.=MXAAM---====++'''''...------.''++==============-=--====
+CC    CCCCCC+''...''+CCCCCCCCCCC++''''.......++.CC...CC'....'C       C+....'C     CCCCCCCCC+++++'''......'++CCCCCCCCCCCCCCCCCCCCCCCC
+            C++'''++C           CC++++'''''''CC'BB'''  +''''+         C''''+               CCCCC+++''''''+CC
+             CCXXXCC              CCCCXXXXXXX  XHHXXX  CXXXXC          XXXXC                    CCCXXXXXXC
+               CCC                    CCCCCCC  CXXCCC   CCCC           CCCC                        CCCCCC
*-MAAMM-=+++'''.---.'+=-MMMMMM-++'''''.-------''-'''----''---.-AXXXXXAM+----'=X)ZXAMM---=--===+++''...........'++++========-------===
+C     CCCCC+++'...'+CCC      CCC+++++'.......++.CCC....CC...'C        C....+C       CCCCCCCCCCCC++'''''''''''+CCCCCCCCCCCCCCCCCCCCCC
+           CCC+'''+C            CCCCC+'''''''CC'BBB''''BB'''+          ''''C                    CC+++++++++++C
+              CXXXC                  CXXXXXXX  XHHHXXXXHHXXXC          XXXX                       CCCCCCCCCCC
+               CCC                    CCCCCCC  CXXXCCCCXXCCC           CCCC
*MMAAM-=++'''......'+=-AXXAAM-+''''''+'.--------''''''''''-''-=AAAAXXXM=.--.'-Z)1XAMM----------==++''+'''......'''''++======------=++
+     CCCC+++''''''+CCC      CC++++++C+'........CCCCCCCCCC.CC.C        C'..'+C       CCCCCCCCCCCCCC++C+++''''''+++++CCCCCCCCCCCCCCCCC
+         CCC++++++C           CCCCCC C+''''''''BBBBBBBBBB'BB'          +''+C                      CC CCC++++++CCCCC
+            CCCCCC                    CXXXXXXXXHHHHHHHHHHXHHX          CXXC                             CCCCCC
+                                       CCCCCCCCXXXXXXXXXXCXXC           CC
*MAAAAM=+''.......'==MAZ11ZXM+..'''++++.---''''''''''''''''''-=AXAAAXXM=.--.'-X1ZZXAAM----M------====+++''......''.'''++++++==----==+
+      CC++'''''''+CC        C''+++CCCC'...CCCCCCCCCCCCCCCCCC.C        C'..'+C        CCCC CCCCCCCCCCCCC++''''''++'+++CCCCCCCCCCCCCCC
+        CC+++++++C           ++CCC    +'''BBBBBBBBBBBBBBBBBB'          +''+C                           CC++++++CC+CCC
+          CCCCCCC            CC       CXXXHHHHHHHHHHHHHHHHHHX          CXXC                              CCCCCC  C
+                                       CCCXXXXXXXXXXXXXXXXXXC           CC
*MAAAM-=++'..--..'+-MX1+++1A=.-.'''+==+.-'''''''''''''''''''-.=AAAAXXXM=.--.+MXZZZZXAMMMMMMM--MMM----==++'''...''''''''''++++==--====
+     CCCC+''..''+CC        C'.'+++CCCC'.CCCCCCCCCCCCCCCCCCC.'C        C'..'C               CC   CCCCCCCC+++'''++++++++++CCCCCCCCCCCC
+         C++''++C           +'+CCC    +'BBBBBBBBBBBBBBBBBBB'+          +''+                             CCC+++CCCCCCCCCC
+          CCXXCC            CXC       CXHHHHHHHHHHHHHHHHHHHXC          CXXC                                CCC
+            CC               C         CXXXXXXXXXXXXXXXXXXXC            CC
*MMAAM-=+''..--.'+=MX)=--=1M'--.'+++=-='-'''''''''''''''''''-.-AXXXXZXM'---'-Z))1ZXXXAAAAAAMMMMMMMMM-==++++''..''''+++'+'++++=-----==
+     CCC++''..'+CC         +..'+CCCCCC+.CCCCCCCCCCCCCCCCCCC.'C        +...+C                       CCCCCCC++''++++CCC+C+CCCCCCCCCCCC
+        CC++''+C           C''+C      C'BBBBBBBBBBBBBBBBBBB'+         C'''C                               CC++CCCC   C C
+          CCXXC             XXC        XHHHHHHHHHHHHHHHHHHHXC          XXX                                  CC
+            CC              CC         CXXXXXXXXXXXXXXXXXXXC           CCC
*MMMM--=++'...-.+=MX1=   +X+---.+===---'-'''''''''''''''''''-'MXXXXXXA-'--.=A1+)1ZXXAAAAAMAAAMMMMMMM--=+++++'''''++++=+++++++=------=
+    CCCCC+'''.'CC         C...'CCCCCCC+.CCCCCCCCCCCCCCCCCCC.+        C+..'C                        CCCCCCCC+++++CCCCCCCCCCCCCCCCCCCC
+         C+++'+            '''+       C'BBBBBBBBBBBBBBBBBBB'C         C''+                                 CCCCC
+          CCCXC            XXXC        XHHHHHHHHHHHHHHHHHHHX           XXC
+             C             CCC         CXXXXXXXXXXXXXXXXXXXC           CC
*-MMM-==+'''...'=MZ+-    1=-''-.+-MMMMM+-'''''''''''''''''''.=XZZZZXXM+---'M1++)1ZZXAMMMMMMAMMM--MMAM-==+++++'''''++++=++++++=-----==
+C   CCCC+++'''+C         C.CC.'CC     C.CCCCCCCCCCCCCCCCCCC'C        C...+                    CC    CCCCCCCC+++++CCCCCCCCCCCCCCCCCCC
+        CCC+++C           'BB'+        'BBBBBBBBBBBBBBBBBBB+          '''C                                  CCCCC
+           CCC            XHHXC        XHHHHHHHHHHHHHHHHHHHC          XXX
+                          CXXC         CXXXXXXXXXXXXXXXXXXX           CCC
*-MMM-==++'''...+M1=     1=-''--+-MAAAAM'-'''''''''''''''''-'MZZZZZXA-'---+X1)))11XAMMM----MMM---MAAMM-==+++++'''''+++++++++==-----==
+C   CCCCC+++'''C         C.CC..CC      +.CCCCCCCCCCCCCCCCC.+        C+...C            CCCC   CCC     CCCCCCCC+++++CCCCCCCCCCCCCCCCCC
+         CCC+++           'BB''        C'BBBBBBBBBBBBBBBBB'C         C'''                                    CCCCC
+            CCC           XHHXX         XHHHHHHHHHHHHHHHHHX           XXX
+                          CXXCC         CXXXXXXXXXXXXXXXXXC           CCC
*-MMM--==++'''.'+A1-     Z+-'''-'-MAAAXA-.-''''''''''''''''-+XZZZZZXA=.--.=X1++))1XMMMM--==--M----MMM--==++'++'''''''+++++====------=
+C   CCCCCC+++'+C         C.CCC.+C      C'.CCCCCCCCCCCCCCCC.C        C'..'C            CCCCCC CCCC   CCCCCC+CC+++++++CCCCCCCCCCCCCCCC
+          CCC+C           'BBB'C        +'BBBBBBBBBBBBBBBB'          +''+                                 C  CCCCCCC
+             C            XHHHX         CXHHHHHHHHHHHHHHHHX          CXXC
+                          CXXXC          CXXXXXXXXXXXXXXXXC           CC
*--M-===++''''''=X+     -A.''''-.=MAAAAAM+-'''''''''''''''-'MXXZXXXA-'--.=A1)++)1XM-MMMM-==--MM-----==++++'''''''''''''++======-==--=
+CC CCCCCC++++++C         'CCCC.'C       C.CCCCCCCCCCCCCCC.+        C+..'C         C    CCCCC  CCCCCCCCCCC+++++++++++++CCCCCCCCCCCCCC
+         CCCCCC          +BBBB'+         'BBBBBBBBBBBBBBB'C         C''+                                 CCCCCCCCCCCCC
+                         CHHHHXC         XHHHHHHHHHHHHHHHX           XXC
+                          XXXXC          CXXXXXXXXXXXXXXXC           CC
*----====+'''+++-Z=     =M.'''''-'-AAMMAM-'-'''''''''''''-.=XXXXXXM-'--.+A)+++)1ZAMMMMM--==---M----=+'''+++'''''''''''+++=====--==--=
+CCCCCCCCC+++CCCC         'CCCCC.+C      C+.CCCCCCCCCCCCC.'C       C+..'C              CCCCCCC CCCCCC+++CCC+++++++++++CCCCCCCCCCCCCCC
+         CCC             +BBBBB'C        C'BBBBBBBBBBBBB'+         C''+                             CCC   CCCCCCCCCCC
+                         CHHHHHX          XHHHHHHHHHHHHHXC          XXC
+                          XXXXXC          CXXXXXXXXXXXXXC           CC
*==-----=+'''++=M)      +--'''''--+MAMMMMM-'-'''''''''''-.+MXXXXAM='---'M1==+)1XAM-----====----====++'''++++++++++++++++====---------
+CCCCCCCCC+++CCC         C.CCCCC..C       C+.CCCCCCCCCCC.'C       C+...+          CCCCCCCCCCCCCCCCCCC+++CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+         CCC             'BBBBB''         C'BBBBBBBBBBB'+         C'''C                             CCC
+                         XHHHHHXX          XHHHHHHHHHHHXC          XXX
+                         CXXXXXCC          CXXXXXXXXXXXC           CCC
*==---M--=+++++-X+      1+-''''''-.=MMMMMMM='-''''''''--'=AAXXXAM+.--.+A)- -+1AM----============+++''+++=++++=++++++++==----MMMMM-M--
+CCCCC CCCCCCCCC         C.CCCCCC.'C       C+.CCCCCCCC..+C       C'..'C         CCCCCCCCCCCCCCCCCCC++CCCCCCCCCCCCCCCCCCCCCCC     C CC
+                         'BBBBBB'+         C'BBBBBBBB''C         +''+                             CC
+                         XHHHHHHXC          XHHHHHHHHXX          CXXC
+                         CXXXXXXC           CXXXXXXXXCC           CC
*==--MMM-==++++-X=     =Z+-'''''''-.=MMMM---='.--'''---'-AXXXXA-+.--.+A)- -+)ZA-===+++++++++===++''''++========+===++===--MMMAMAMMMM-
+CCCC   CCCCCCCC         C.CCCCCCC.'C    CCCC+'..CCC...+C      CC'..'C         CCCCCCCCCCCCCCCCCC++++CCCCCCCCCCCCCCCCCCCCC          C
+                         'BBBBBBB'+         C+''BBB'''C         +''+                            CCCC
+                         XHHHHHHHXC          CXXHHHXXX          CXXC
+                         CXXXXXXXC            CCXXXCCC           CC
*----MMMM-==+++=A)     +X+--'''''''-.=MMM----=+'.---.'=MAZZZXA-'---.+A)--=)ZXAM-==++'''++++++++++++++++=----===+==++==--MMAAAAAAAAMMM
+CCCC    CCCCCCC         C..CCCCCCC.'C   CCCCCC+'...'+C       C+...'C          CCCCC+++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                         ''BBBBBBB'+          C+'''+C         C'''+                CCC
+                         XXHHHHHHHXC           CXXXC           XXXC
+                         CCXXXXXXXC             CCC            CCC
*=---MMAM-==+++=A1     )A'--''''''''-.+-MMMM--==+++=-MAZZ1ZA-+.---'=X+--+1XMM-=++++'++'++++++++++====+=----====++++==-MMAAXXXXXAAMMM-
+CCCC    CCCCCCC         +..CCCCCCCC.'CC    CCCCCCCCC       CC'...+C         CCCCCC+CC+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC              C
+                        C''BBBBBBBB'+                        +'''C                C  C
+                         XXHHHHHHHHXC                        CXXX
+                         CCXXXXXXXXC                          CCC
*=--MMAAM-=====-A)    -1M'---''''''''--'=-MMMMMMM-MMAZ1)1X-+.---.=A1+=+1ZA-=++++''+++++++==+++++==----=--=++==+=====-MAAXXXXXXXAMM---
+CCC     CCCCCCC         +...CCCCCCCC..+CC       C        CC'...'C        CCCCCC++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC             CCC
+                        C'''BBBBBBBB''C                    +'''+               CC
+                         XXXHHHHHHHHXX                     CXXXC
+                         CCCXXXXXXXXCC                      CCC
*=--MAAMM--===-MX)-   +X-.------'-'''''--'+---------MAA-='.--.'=M1)+1XAM=++'''''''''+''++=++'+++=--------=++++++=---MAXXAAAXXXAAM----
+CCC     CCCCCC         C'......C.CCCCC..+CCCCCCCCCC   CC+'..'+C        CCC+++++++++C++CCCCC+CCCCCCCCCCCCCCCCCCCCCCC             CCCC
+                        +''''''B'BBBBB''C               C+''+C            CCCCCCCCC CC     C
+                        CXXXXXXHXHHHHHXX                 CXXC
+                         CCCCCCXCXXXXXCC                  CC
*---AAAMM--==--AX)-  -)A+.-----------------.'''''''.'''''..'+-AZ1)1XM=+++'''........'''++++''++=-MMMM----==++++==---MAXXAAAXXXAAM--=-
+CCC     CCCCCC         C'.................'+++++++'+++++''+CC       CCCC+++''''''''+++CCCC++CCCC    CCCCCCCCCCCCCCC             CCCC
+                        +'''''''''''''''''+CCCCCCC+CCCCC++C             CCC++++++++CCC    CC
+                        CXXXXXXXXXXXXXXXXXC       C     CC                 CCCCCCCC
+                         CCCCCCCCCCCCCCCCC
*--MAXXAMM-==-MAX1=  =1M+.------..''..----------.--..''+=-MAAXXXAM=+''..'.''.......'''+'''''++=--MMAM-===-=====----MMAXXXXXXXXAAM--=-
+CC       CCCC          C'......''++''..........'..''++CCC        CC++''+'++'''''''+++C+++++CCCCC    CCCCCCCCCCCCCC              CCCC
+                        +''''''++CC++''''''''''+''++CC             CC++C+CC+++++++CCC CCCCC
+                        CXXXXXXCC  CCXXXXXXXXXXCXXCC                 CC C  CCCCCCC
+                         CCCCCC      CCCCCCCCCC CC
*-MAXZXAAMM---MAXZ)==+X-'....---'=MAMM---==+'''+===-MAXZ1ZZAM-=++''........''.'''''''''''''++=----MM-=====---=---MMAAXXXZZZXXAAMM----
+C         CCC         C+''''...+C    CCCCCC+++CCCCC         CCCC++''''''''++'+++++++++++++CCCCCCC  CCCCCCCCCCCCC                CCCC
+                       C++++'''C           CCC                  CC++++++++CC+CCCCCCCCCCCCC
+                        CCCCXXX                                   CCCCCCCC  C
+                            CCC
*MAAXZZXAMM----MAXZ))1A='....--.'M1++++===+)1ZZ1)))+++)ZAM=+'''''...........'.''+''''''''''+==-------====------MMMAXXZZZZZZZXAMM---==
+          CCCC        C+''''..'+                         CC+++++'''''''''''+'++C++++++++++CCCCCCCCCCCCCCCCCCCC                 CCCCC
+                       C++++''+C                           CCCCC+++++++++++C+CC CCCCCCCCCC
+                        CCCCXXC                                 CCCCCCCCCCC C
+                            CC
*AXXXZZZXM------MAXZZA-+...''..'=X)             -=+)ZXM=+''...'''..'..........''++''''''+++++=--=======--MMMAAMMAAAXXZZZZZXXAMM-=====
+         CCCCCC      CC'''++''+C                      CC++'''+++''+''''''''''++CC++++++CCCCCCCCCCCCCCCCC                      CCCCCC
+                       +++CC++C                         CC+++CCC++C++++++++++CC  CCCCCC
+                       CCC  CC                            CCC   CC CCCCCCCCCC
*XXXZXXZXAM-----MMAAA-='...'+''+-X)           =)ZAM-=++'...'..'''.......'......''''''''++++++====++=----MMMAXXXXXXXZZZZZZZXAM--==+===
+          CCCCC     CC+'''+C++CC                  CCCC+'''+''+++'''''''+''''''++++++++CCCCCCCCCCCCCCCCC                     CCCCCCCC
+                      C+++C CC                        C+++C++CCC+++++++C++++++CCCCCCCC
+                       CCC                             CCC CC   CCCCCCC CCCCCC
*XZZZZZXZXXAMMM--MMM-=+''.'++++=-X1=        -+ZM=+'.......''''''......'''.....'...'++++===++====++=-MMMMM--MAXXZZ1ZZZZZZZXXAM-==+++==
+              CC   CCC++'+CCCCCC               CC+'''''''++++++''''''+++'''''+'''+CCCCCCCCCCCCCCCCC     CC                  CCCCCCCC
+                      CC+C                       C+++++++CCCCCC++++++CCC+++++C+++C
+                        C                         CCCCCCC      CCCCCC   CCCCC CCC
*Z11ZZZZZZZXAAM-----=+'...'+===-MAZ+-   --+1ZAM=''.........''''''...'.'''''''''''''++++======+====-MAAAAAMMMAAXXZZZZZZZZXAAM-========
+              CCCCCCC+'''+CCCCC               C++'''''''''++++++'''+'+++++++++++++CCCCCCCCCCCCCCCC                         CCCCCCCCC
+                     C+++C                     CC+++++++++CCCCCC+++C+CCCCCCCCCCCCC
+                      CCC                        CCCCCCCCC      CCC C
*Z111ZZZZZZXXAM---==+'....'+=-MMMMX1+=+)1ZAM-==+''....'....'''''''''''''++++''''+'''+''+=====+=--MMXXXAAMMMAXXXXZXXXXXXXAAM--========
+              CCCCCC+''''+CCC              CCCC++''''+''''+++++++++++++CCCC++++C+++C++CCCCCCCCCC                          CCCCCCCCCC
+                    C++++C                     CC++++C++++CCCCCCCCCCCCC    CCCC CCC CC
+                     CCCC                        CCCC CCCC
*ZZZZZZZZZZXXAM--=+++'.--.'++-AAMMAX111ZXM-=++++''...'''...''''''''''''+++''''++++''''++======-MMAXXXAAMMMMAAXXXXXXAAAAAMMM-=====+++=
+              CCCCCC+'..'+CCC            CCCCCC++'''+++'''++++++++++++CCC++++CCCC++++CCCCCCCCC                            CCCCCCCCCC
+                    C+''+C                     CC+++CCC+++CCCCCCCCCCCC   CCCC    CCCC
+                     CXXC                        CCC   CCC
+                      CC
*ZZZZZZZZZXXXXM-==+'+'..-.''+-AAMMAXXXXXA-==++++'''..''''''++++++++++++++''''+++=+++++==-====-MAAXXAAMM--MMAAXXAAAAAMMMM---===++++++=
+              CCCC+C+''.'++CC           CCCCCCC+++''++++++CCCCCCCCCCCCCC++++CCCCCCCCCCCCCCCCC         CC               CCCCCCCCCCCCC
+                  C C++'+CC                    CCC++CCCCCC              CCCC
+                     CCXC                         CC
+                       C
*11ZZZZZZZZXXXAM-=+''''.-.''+=-MMMMAAAAMM-=+''''.....'''+'''++++++====++++''++========----==--MAXAAAM-----MMMAAAMMMMM----==+++++++++=
+               CCC++++'.'++CCC          CCC++++'''''+++C+++CCCCCCCCCCCCCC++CCCCCCCCCCCCCCCCCC       CCCCC           CCCCCCCCCCCCCCCC
+                  CCCC+'+CC                CCCC+++++CCC CCC              CC
+                      CXC                      CCCCC
+                       C
*))11ZZZZZXXXXAMM-=+''...'====-----MMMM-==+''.........''++''''''+++========++=====--MMMMM--MMAXXXAMM-====---MMMM---------====++++++==
+                CCC++'''+CCCCCCCCC    CCCC++'''''''''++CC++++++CCCCCCCCCCCCCCCCCCCC     CC         CCCCCCCC    CCCCCCCCCCCCCCCCCCCCC
+                   CC+++C                 CC+++++++++CC  CCCCCC
+                     CCC                    CCCCCCCCC
*)))1ZZZZXXXAAMMM--=+'..'+--===--====--=+++'..--.......'''......'++++====---=====-MMMAM----MXZZXAM--=+=====----------MM---====++=====
+                CCCC+''+CCCCCCCCCCCCCCCCCC+''..'''''''+++''''''+CCCCCCCCCCCCCCCCC     CCCC       CCCCCCCCCCCCCCCCCCC  CCCCCCCCCCCCCC
+                    C++C                  C++''+++++++CCC++++++C
+                     CC                    CCXXCCCCCCC   CCCCCC
+                                             CC
*+++)1ZZZXXAAAMMMM-=+'...+===+=-===++==++++'......'.............''++'++==---=====---MMM-==-MAZZXM-=++++====----------MM---==========-
+                 CCC+'''CCCCCCCCCCCCCCCCCC+''''''+'''''''''''''++CC+CCCCCCCCCCCCCCC   CCCC      CCCCCCCCCCCCCCCCCCCC  CCCCCCCCCCCCCC
+                    C+++                  C++++++C+++++++++++++CC  C
+                     CCC                   CCCCCC CCCCCCCCCCCCC
*++++)1ZZXXAAAMMMM-=+'....'+++=====+++++'''......'''.........''.'''+++++++==++++=====-----MAAXAM-=+++++++==-------------===+++++=====
+                 CCC+''''+CCCCCCCCCCCCC+++''''''+++'''''''''++'+++CCCCCCCCCCCCCCCCCCCCCCC      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                    C++++C             CCC++++++CCC+++++++++CC+CCC
+                     CCCC                 CCCCCC   CCCCCCCCC  C
*+++))1ZZXXXAAAMMMM-=+'...''''++=======++''..''''''''.......''''''''++++'+++++''+++==--MMAAAAMM-===+++=====-=-----------==+++++======
+                  CCC+'''++++CCCCCCCCCCC++''++++++++'''''''++++++++CCCC+CCCCC++CCCCCCC        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                     C+++CCCC           CC++CCCCCCCC+++++++CCCCCCCC    C     CC
+                      CCC                 CC        CCCCCCC
*++)))1ZXXXXAAAAAAM-=+'....'.''++======+++'''''...........''''++++'''+++''++++''''++=-MMAAXAM-=================-------===++++++======
+                  CCC+''''+'++CCCCCCCCCCC+++++'''''''''''++++CCCC+++CCC++CCCC++++CCCC       CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                     C++++C+CC           CCCCC+++++++++++CCCC    CCC   CC    CCCC
+                      CCCC C                  CCCCCCCCCCC
*++))11ZZXXXAAAAAAM-=+''.''''.''+======++''''''..........''++++==+++++++''+====+++==--MAAAAM-============----==------====++++++======
+                  CCC++'++++'++CCCCCCCCC++++++''''''''''++CCCCCCCCCCCCC++CCCCCCCCCCCC      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                     CC+CCCC+CC         CCCCCC++++++++++CC             CC
+                       C    C                 CCCCCCCCCC
*++))111XXAAAXAXAAA-=+'''''''''''++++++''''.''''...'....''+=====+++++++++++===-====-MMAAM---===========------===---==++++++++++=====+
+                  CCC+++++++++++CCCCCC++++'++++'''+''''++CCCCCCCCCCCCCCCCCCCCCCCCCC     CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                     CCCCCCCCCCC      CCCC+CCCC+++C++++CC
+                                          C    CCC CCCC
*++)))11ZXXXXXXXXAM-==+++++'''''''+++++''''''''''''...'''+==---=+++++==-===---MMM-MMMMMM--=============--------======+++++++========+
+                  CCCCCCCC+++++++CCCCC++++++++++++'''+++CCCCCCCCCCCCCCCCCCCCC   C      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                          CCCCCCC     CCCCCCCCCCCC+++CCC
+                                                  CCC
*+)))111ZXAAXXXXAMM==++==+++''+'''+++++'''++'''''''....''++=--==++++==-MMM----MMMM-----==========----------MMM---====++++===------==+
+                  CCCCCCCCC++C+++CCCCC+++CC+++++++''''++CCCCCCCCCCCCCC   CCCC    CCCCCCCCCCCCCCCCCCCCCCCCC   CCCCCCCCCCCCCCCCCCCCCCC
+                           CC CCC     CCC  CCCCCCC++++CC
+                                                  CCCC
*))))11ZXAAAAXXAMM-=++=--==+'''+'+++'''''++++++++''....''++====++++==-MAAAMM-------======-------MMMMMMMMMMAAAAMM-====++==-MMMMMMM--==
+                 CCCCCCCCCC+++C+CCC+++++CCCCCCCC++''''++CCCCCCCCCCCCC      CCCCCCCCCCCCCCCCCCCC                CCCCCCCCCC       CCCC
+                           CCC C   CCCCC        CC++++CC
+                                                  CCCC
*))111ZZXAAAMMAMM--=++==---=+++++++++'''''+++==++'''....'''+++=====--------==============------MMMAMMAAAAXXXAAAMM------=-MMMAMMMM--==
+                CCCCCCCCCCCCCCCCCCCC+++++CCCCCCC+++''''+++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC                  CCCCCCCC        CCCC
+                                    CCCCC       CCC++++CCC
+                                                   CCCC
*11111ZZXAAAAMMMM--=++==-M-=+++++++++++''''+++==+++'''...'''''+==-MAAMM--=+++++++===-------MMMMMMAMMAAAXXXZXXAAAAMMMM----MMMMMMM--==+
+                CCCCCCCC CCCCCCCCCCCCC++++CCCCCCCC+++'''+++++CCCC     CCCCCCCCCCCCCCCCCCCC                          CCCC       CCCCC
+                                      CCCC        CCC+++CCCCC
+                                                     CCC
*11111ZXXAAAAAMM----====-MM-=++++++++++++''++++==++++''.......'+=-AAXAAM-+++++++==--------MMMMMMAMMMMAAXXZZZXXXAAAAMM------MM---===++
+               CCCCCCCCC  CCCCCCCCCCCCCC++CCCCCCCCCC++'''''''+CCC      CCCCCCCCCCCCCCCCCC                           CCCCCC  CCCCCCCC
+                                        CC          CC+++++++C
+                                                      CCCCCCC
*1111ZZZXAAAAAM-------=-MAAM-==++++++++++++++++==++++++''......'+--MAAM-=+++=====-----MMMMMMMMMMMMMMAAXZZZZZZXAAM----=====-----=====+
+              CCCCCCCCC    CCCCCCCCCCCCCCCCCCCCCCCCCCC++''''''+CCC    CCCCCCCCCCCCCCC                           CCCCCCCCCCCCCCCCCCCC
+                                                      CC++++++C
+                                                        CCCCCC
*ZZZZZXXXAAAAMM-===-----MAAAAM----========++++++++'++++''.....''+==----==+++==----MM--MMMMMMMMMMMMAAXXZZZXXAMM-==+++++===============
+              CCCCCCCCC      CCCCCCCCCCCCCCCCCCCC+CCCC++'''''++CCCCCCCCCCCCCCCCCC  CC                        CCCCCCCCCCCCCCCCCCCCCCC
+                                                 C    CC+++++CC
+                                                        CCCCC
*ZZXXXAAAAAMMM-====-MMMMMMAAXAM-MM--==---==++'++''''''''''''''''+============-----M---------MMMAAAXXXAAAM--===+++''+++===============
+             CCCCCC           C  CCCCCCCCCCC+CC++++++++++++++++CCCCCCCCCCCCCCCCCC CCCCCCCCC             CCCCCCCC++CCCCCCCCCCCCCCCCCC
+                                            C  CCCCCCCCCCCCCCCC                                                 CC
*XXAAAMMAAAMM--=++=-MMMMMAAAXXAMMMMM-----===++''''+'''''''++++'''+====++===---MMMMM-------MMAAAAAMMM--==++++''+''++++==========-----=
+            CCCCCCC                CCCCCCCCCC++++C+++++++CCCC+++CCCCCCCCCCCCC     CCCCCCC          CCCCCCCC++C++CCCCCCCCCCCCCCCCCCCC
+                                             CCCC CCCCCCC    CCC                                           CC CC
*AAAAMMMMMMM--==++=-MMAAAAAAAAAMMMMM-------==+'''+++++'''''+++++======++==----MM--MMMMMMMMAMMMM--==++++'''''''++++=========-----MMMM-
+           CCCCCCCC                CCCCCCCCCC+++CCCCC+++++CCCCCCCCCCCCCCCCCCC  CC             CCCCCCCC+++++++CCCCCCCCCCCCCCCCCC    C
+                                             CCC     CCCCC                                            CCCCCCC
*MAAM-----M--==++==-MMAAXXXXAAAAAAAMM-------=+'''''+++''''''++==--=======-------------MM---===+++''''''''''++++===---------MMMMMMMMMM
+    CCCCC CCCCCCCCC                 CCCCCCCCC+++++CCC++++++CCCCCCCCCCCCCCCCCCCCCCCCCC  CCCCCCCCC++++++++++CCCCCCCCCCCCCCCC
+                                             CCCCC   CCCCCC                                     CCCCCCCCCC
*-MMM-==-----=+++=--MMAAXXXXAAAAAAAMMMM------=++''''+''+'''++===--===========-----=======+++++''''''''''++++==--MMMAAAAMMMMMMMMMMMMMM
+C   CCCCCCCCCCCCCCC                   CCCCCCCCC++++C++C+++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++++++++++CCCCCCCC
+                                               CCCC CC CCC                                   CCCCCCCCCC
*=========---=+++=--MMAAAXXAAAAAAAMMMMM-------=+++++'''+'+++=----==++++===--------===++++''''''''.''''++=---MMAAXXXXXAAMMM-----------
+CCCCCCCCCCCCCCCCCCC                   CCCCCCCCCCCCC+++C+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++++++++'++++CCCCCC              CCCCCCCCCCC
+                                                   CCC C                                CCCCCCCC+CCCC
+                                                                                                C
*+++++++++=--==+=-MMAAAAAXXXXXAAAAMMM--======-=====++++++===----=+++++=--MMMMMM--==+++''''''''''++++==-MAAAXXXXXXAAAAMM--------------
+CCCCCCCCCCCCCCCCC                   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC      CCCCCCC++++++++++CCCCCCC                CCCCCCCCCCCCCC
+                                                                                     CCCCCCCCCC
*'..''.''++=--==-MAAXXXXXXXXZXZXAMM--==+++======++++++===--=---==+++==--MMMM--=====++======----------MMAAAAAAAAMMM----========-------
++''++'++CCCCCCCC                  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC    CCCCCCCCCCCCCCCCCCCCCCCCC             CCCCCCCCCCCCCCCCCCC
+C++CC+CC
+ CC  C
*........''+=--MMMAXZ111ZXZZZZZXAM--==+'''++++++++++++===--=====+++====----------MMMMAAAAAMMMMM--====-------------====+++++++====----
+''''''''++CCCC                   CCCCC+++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC              CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+++++++++CC                            CCC
+CCCCCCCC
*---........'=-MAAAXZ)))111111ZXAM---=+''''+++++'''''++++++++++++====---MMAAAAAAAAAAAAMMM-==++++''+++============+++++++++++++======-
+...''''''''+CC                   CCCCC++++CCCCC+++++CCCCCCCCCCCCCCCCCCC                 CCCCCCC++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+'''++++++++C                          CCCC     CCCCC                                           CC
+XXXCCCCCCCC
+CCC
*---....---..+-AAAAZ)+=+++++)1ZXAAMM--='''++==++'''...''.''++++==--MMMAAAAAAAMM---====++'''''''.'''++=======+++++++'''++++++++=======
+...''''...''CC                     CCC+++CCCCCC+++'''++'++CCCCCCCC            CCCCCCCCC+++++++'+++CCCCCCCCCCCCCCCC+++CCCCCCCCCCCCCCC
+'''++++'''++                          CCC      CCC+++CC+CC                             CCCCCCC+CCC                CCC
+XXXCCCCXXXCC                                      CCC  C                                      C
+CCC    CCC
*---.....----'+-MMAZ+=---=+))1ZXAAMMM-=+++++++'''...''++==--MMMMMMMAAAAAMMM--==++'''''...''''''''''++=====++++++'''''''''+++++++====+
+...'''''....+CC                     CCCCCCCCC+++'''++CCCCCC               CCCCCC+++++'''++++++++++CCCCCCCCCCCCC+++++++++CCCCCCCCCCCC
+'''+++++''''C                                CCC+++CC                           CCCCC+++CCCCCCCCCC             CCCCCCCCC
+XXXCCCCCXXXX                                    CCC                                  CCC
+CCC     CCCC
*--..''''.---.'=-MX)-   --+)1ZXAMM-M--=++'''..'''''+=MAXXZZZZXAAAAAAAAMMM---==+''''......''''''''+++======+++'''''''..''''+++++++++=+
+..''++++'...'+CC                 C CCCCC+++''+++++CC                    CCCCCC++++''''''++++++++CCCCCCCCCCCC+++++++''++++CCCCCCCCCCC
+''++CCCC+'''+C                          CCC++CCCCC                            CCCC++++++CCCCCCCC            CCCCCCC++CCCC
+XXCC    CXXXC                              CC                                     CCCCCC                           CC
+CC       CCC
*-..'''''..---.+=M1=    -=+)ZAM-===-==+'.'..''+==--MX1)+))++)ZXXXXXAAMMM--==++''.......'''++++++++====-===+++''''''....''''++++++++==
+.''+++++''...'CC              CCCCCCCC+'+''++CCCCC                     CCCCCC++'''''''+++CCCCCCCCCCCCCCCCCCC++++++''''++++CCCCCCCCCC
+'++CCCCC++'''+                        C+C++CC                                CC+++++++CCC                   CCCCCC++++CCCC
+XCC     CCXXXC                         C CC                                    CCCCCCC                            CCCC
+C         CCC
*-.'''+'''..-..'-X)-    -=)1XM=++++==+'...'+=-AXZZ1))+++))1))))111ZXAMM--==+''''...''+++===--====++=++=+++++++'''''''''''''''++++++++
+.'+++C+++''.''+C             CCCCCCCC+'''+CCC                         CCCCC++++'''++CCCCCCCCCCCCCCCCCCCCCCCCC+++++++++++++++CCCCCCCC
+'+CCC CCC++'++C                      C+++C                                 CCCC+++CC                         CCCCCCCCCCCCCCC
+XC       CCXCC                        CCC                                      CCC
+C          C
*-..'.........'-A1-     -+)1XM=+''++=++''+=MAZ1)+++++))1Z111)++))1ZXAMM--=++'''++==--MMMMMMMM--=+++++++'''''''''''''''''''''''''''+++
+.''+'''''''''+C              CC++CCCCC++CC                            CCCCC+++CCCCCC        CCCCCCCCCC+++++++++++++++++++++++++++CCC
+'++C+++++++++C                 CC     CC                                   CCC                        CCCCCCCCCCCCCCCCCCCCCCCCCCC
+XCC CCCCCCCCC
+C
*-..------..'=MX)=      -=+1ZA-+++++=----MAXZ1)))111ZZZZZZ1)))))ZXAAAAAAMMMMMMMMAAXXXXXXXXXAAMM--=======+++++++++'+''++'''''''''''''+
+.''......''+C                CCCCCCCCCCC                                                      CCCCCCCCCCCCCCCCCC+C++CC+++++++++++++C
+'++''''''++C                                                                                                    C CC  CCCCCCCCCCCCC
+XCCXXXXXXCC
+C  CCCCCC
*---------'=MX)=        -=+)1ZA-===-MAXXXZ1ZZZXXXAAAMMMAXXXZZZZZXXAAAXXXXAAAAMMMMMMMMMMMAMMM--====++==========---======+++'''''''''''
+.........+C                   CCCCC                                                        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++++++++
+'''''''''C                                                                                                               CCCCCCCCCCC
+XXXXXXXXX
+CCCCCCCCC
*---''--.'-X1=          --==+)1XAAAXZ111))1XAAMMMMAAAAXXXXXXXXXZZXXAAMM--==++++'''++++++==++'''......''''+++===-MMMM---===++++'''''''
+...CC..'+C                                                            CCCCCCCC+++CCCCCCCCCC+++''''''++++CCCCCCC    CCCCCCCCCC+++++++
+'''BB''+C                                                                     CCC          CCC++++++CCCC                     CCCCCCC
+XXXHHXXC                                                                                      CCCCCC
+CCCXXCC
*--''--.+MX)-            -==--=)1ZZZZZ111ZXAAMMMAXZ1)))))1ZXAAAAM-=+++'''......-...''''''''...---------.....'''+=====----====++++++''
+..CC..'C                                                        CCCCC+++''''''.'''++++++++'''.........'''''+++CCCCCCCCCCCCCCCCCCCC++
+''BB''+                                                              CCC++++++'+++CCCCCCCC+++'''''''''+++++CCC                    CC
+XXHHXXC                                                                 CCCCCCXCCC        CCCXXXXXXXXXCCCCC
+CCXXCC                                                                        C              CCCCCCCCC
*--'--'-X)=              -=====+)))11ZXAAAAAAXXXZ1)+==++)ZXAM-=++'....------------..........------------.......'''''+++======++++''++
+..C..+C                                                     CCCC+''''............''''''''''............'''''''+++++CCCCCCCCCCCCC++CC
+''B''C                                                          C++++''''''''''''++++++++++''''''''''''+++++++CCCCC             CC
+XXHXX                                                            CCCCXXXXXXXXXXXXCCCCCCCCCCXXXXXXXXXXXXCCCCCCC
+CCXCC                                                                CCCCCCCCCCCC          CCCCCCCCCCCC
*---.+MZ+-             --==++)11)))11XAMMAXXZ11)))))))1ZXXA-=''..-------------------------------------..........'''''''+++++++++'''''
+...'C                                                     CC++''.....................................''''''''''+++++++CCCCCCCCC+++++
+'''+                                                        CC++'''''''''''''''''''''''''''''''''''''++++++++++CCCCCCC         CCCCC
+XXXC                                                          CCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCCCCCCCCC
+CCC                                                             CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
*--.=A1=             -----=+1ZXZ11)11ZXXZ1))=====+)1ZZZZXAM='.------------------------------------.............'''''''''''+++++++''''
+..'C                                                      C+'....................................'''''''''''''+++++++++++CCCCCCC++++
+''+                                                        C+''''''''''''''''''''''''''''''''''''+++++++++++++CCCCCCCCCCC       CCCC
+XXC                                                         CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCCCCCCCCCCCC
+CC                                                           CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
*--'M1=              ------=)ZZZ1)++))))++==--==+))1111ZA-+'.----''''''-''---------------------.......'''''.''''''++++'''''''++++''''
+..+                                                     CC+'....CCCCCC.CC.....................'''''''+++++'++++++CCCC+++++++CCCC++++
+''C                                                       C+''''BBBBBB'BB'''''''''''''''''''''+++++++CCCCC+CCCCCC    CCCCCCC    CCCC
+XX                                                         CXXXXHHHHHHXHHXXXXXXXXXXXXXXXXXXXXXCCCCCCC     C
+CC                                                          CCCCXXXXXXCXXCCCCCCCCCCCCCCCCCCCCC
*-.-Z=                    -==))++=========-==+))))+)))1X-'.----'''''''''''''-----------...........''''''+++''++++++++++++''+'+++++''+
+.'C                                                    C+'....CCCCCCCCCCCCC...........'''''''''''++++++CCC++CCCCCCCCCCCC++C+CCCCC++C
+'+                                                      C+''''BBBBBBBBBBBBB'''''''''''+++++++++++CCCCCC   CC            CC C     CC
+XC                                                       CXXXXHHHHHHHHHHHHHXXXXXXXXXXXCCCCCCCCCCC
+C                                                         CCCCXXXXXXXXXXXXXCCCCCCCCCCC
*-+A+-                       --     --======+)))++++1ZX-+.------''''''''''--------......''''''''''''+++++==++==+++++++++++++++++++''+
+.C                                                    CC'......CCCCCCCCCC........''''''++++++++++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++C
+'                                                       +''''''BBBBBBBBBB''''''''++++++CCCCCCCCCCCC                              CC
+X                                                       CXXXXXXHHHHHHHHHHXXXXXXXXCCCCCC
+C                                                        CCCCCCXXXXXXXXXXCCCCCCCC
*.-X+-                              -=+=++==++++==+ZAM=+.--------''''''--------...''''''++++++'++++++======----==========+++===++++++
+'C                                                   CC'........CCCCCC........'''++++++CCCCCC+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
++                                                      +''''''''BBBBBB''''''''+++CCCCCC      C
+C                                                      CXXXXXXXXHHHHHHXXXXXXXXCCC
+                                                        CCCCCCCCXXXXXXCCCCCCCC
*=X1+=--                     --------=+======+)))ZA-='.---''''''''''''------..'''''++++++++++++++++=====--------M------=========+++++
+C                                                 CC+'...CCCCCCCCCCCC......''+++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCC
+                                                    C+'''BBBBBBBBBBBB''''''++CCCCC
+                                                     CXXXHHHHHHHHHHHHXXXXXXCC
+                                                      CCCXXXXXXXXXXXXCCCCCC
*A1)+===-                    -=+==----------=)1ZZXM='---'''''''''''''-----..'''''++++++++++=++++++==--------MMMMMMMMMM--------====+++
+                                                  C+...CCCCCCCCCCCCC.....''+++++CCCCCCCCCCCCCCCCCCCCCCCCCCC          CCCCCCCCCCCCCCC
+                                                   C'''BBBBBBBBBBBBB'''''++CCCCC
+                                                    XXXHHHHHHHHHHHHHXXXXXCC
+                                                    CCCXXXXXXXXXXXXXCCCCC
*Z))))++==-                 --=++=--       -=+)1ZXM=+.--''''''''''''----..'''++''++++++++++++++=++=--------MMMMAAMMMMMMMMMM---=======
+                                                  CC'..CCCCCCCCCCCC....''+++CC++CCCCCCCCCCCCCCCCCCCCCCCCCC                CCCCCCCCCC
+                                                    +''BBBBBBBBBBBB''''++CCC  CC
+                                                    CXXHHHHHHHHHHHHXXXXCC
+                                                     CCXXXXXXXXXXXXCCCC
*1))Z1)+++==-       --==-- ---====-      --=+)1ZA-+''..----''''''''---..'''''+''+++++++++++++++====--------MMAAMAMAAAAAAAMM------==--
+                                                CC++''....CCCCCCCC...''+++++C++CCCCCCCCCCCCCCCCCCCCCCCCCCC                CCCCCCCCCC
+                                                  CC++''''BBBBBBBB'''++CCCCC CC
+                                                    CCXXXXHHHHHHHHXXXCC
+                                                      CCCCXXXXXXXXCCC
*11)1Z1)))))+==----===+==---------------=+)1ZXA-=+.------------''---..''''''+'''''''+''''''+++++==========--MMMMMMAAAAAMMMM----------
+                                              CCC'............CC...''++++++C+++++++C++++++CCCCCCCCCCCCCCCCC               CCCCCCCCCC
+                                                 +''''''''''''BB'''++CCCCCC CCCCCCC CCCCCC
+                                                 CXXXXXXXXXXXXHHXXXCC
+                                                  CCCCCCCCCCCCXXCCC
*Z111111))))++===========------ --==++))))1ZXA-+'.----''''----------.'''+++++''.....''''''''''+++++++++++====--MMMMAAAM--M--MMMMMMMMM
+                                             CC+'....CCCC..........'+++CCCCC++'''''++++++++++CCCCCCCCCCCCCCCCC        CC CC
+                                               C+''''BBBB''''''''''+CCC     CC+++++CCCCCCCCCC
+                                                CXXXXHHHHXXXXXXXXXXC          CCCCC
+                                                 CCCCXXXXCCCCCCCCCC
*AXZ11111)+++==--=========----=--=+))111ZZXAM-+'.-------''''''----.''+++++++''............'''''++''''''''++++==---MMMM------MMMMMMMMM
+                                            CC+'.......CCCCCC....'++CCCCCCC++''''''''''''+++++CC++++++++CCCCCCCCC    CCCCCC
+                                              C+'''''''BBBBBB''''+CC       CC++++++++++++CCCCC  CCCCCCCC
+                                               CXXXXXXXHHHHHHXXXXC           CCCCCCCCCCCC
+                                                CCCCCCCXXXXXXCCCC
*MAXZ1ZZZ1++===----====+=====++++))1ZZ11ZZXM+'.---'''------''''---.'++++++''......---......''''''''''''.''''++=====-MM------MMMMMMMMM
+                                           C+'...CCC......CCCC...'+CCCCCC++''''''...''''''++++++++++++'++++CCCCCCCC  CCCCCC
+                                            C+'''BBB''''''BBBB'''+C      CC++++++'''++++++CCCCCCCCCCCC+CCCC
+                                             CXXXHHHXXXXXXHHHHXXXC         CCCCCCXXXCCCCCC            C
+                                              CCCXXXCCCCCCXXXXCCC                CCC
*-MAXZXXXZ1+++++====+))))))))11ZZZZZXZZZZAM='.--''''''''----------...'''++'.......---...............'''..'''++===++=--MMM-==----M-MMM
+C                                         C+'..CCCCCCCC..........'''+++CC+'''''''...'''''''''''''''+++''+++CCCCCCCCCC   CCCCCCC C
+                                           C+''BBBBBBBB''''''''''+++CCC  C+++++++'''+++++++++++++++CCC++CCC
+                                            CXXHHHHHHHHXXXXXXXXXXCCC      CCCCCCCXXXCCCCCCCCCCCCCCC   CC
+                                             CCXXXXXXXXCCCCCCCCCC                CCC
*==-AXXXXXZ11111)))))11ZZZZXXXXZZXZZXXZZXM+'----''''''''''-------..'...''+++''.....----.--..........'''''''''++=++++=-----====----MMM
+CCC                                      C+....CCCCCCCCCC.......''+'''++CCC++'''''....'..''''''''''+++++++++CCCCCCCCCCCCCCCCCCCCC
+                                          C''''BBBBBBBBBB'''''''++C+++CC   CC+++++''''+''++++++++++CCCCCCCCC
+                                           XXXXHHHHHHHHHHXXXXXXXCC CCC       CCCCCXXXXCXXCCCCCCCCCC
+                                           CCCCXXXXXXXXXXCCCCCCC                  CCCC CC
*++=-MAAAAAXXXXXXXXZZZXXXAAMMAAXXXXXXXAMM=+.---'''''''''''''--..''++'''''++==+'''..------------....''''''...''++++++++==--===------MM
+CCCC                                    CC'...CCCCCCCCCCCCC..''++CC+++++CCCCC+++''............''''++++++'''++CCCCCCCCCCCCCCCCCCCCC
+                                          +'''BBBBBBBBBBBBB''++CC  CCCCC     CCC++''''''''''''++++CCCCCC+++CC
+                                          CXXXHHHHHHHHHHHHHXXCC                 CCXXXXXXXXXXXXCCCC      CCC
+                                           CCCXXXXXXXXXXXXXCC                     CCCCCCCCCCCC
*''++=--MMMMMMMM---MAAMMMM---MMXXXXXAAM=+''.-''''''''''''''---.''+===+++++++=++''.--------------...'.......-.'''++++++++=--==--------
+++CCCCC        CCC       CCC          CC++'.CCCCCCCCCCCCCC...'++CCCCCCCCCCCCCC++'..............'''+'''''''.'+++CCCCCCCCCCCCCCCCCCCCC
+CC                                      CC+'BBBBBBBBBBBBBB'''+CC              CC+''''''''''''''+++C+++++++'+CCC
+                                          CXHHHHHHHHHHHHHHXXXC                  CXXXXXXXXXXXXXXCCC CCCCCCCXC
+                                           CXXXXXXXXXXXXXXCCC                    CCCCCCCCCCCCCC           C
*''++=---=----====+==-==+++=-MMAAAXAAM-='-----'''''''''''-----.''++=++++++++++''..---------.............'....''''++'++'+========-----
+++CCCCCCCCCCCCCCCCCCCCCCCCCC         CC+.....CCCCCCCCCCC.....'++CCCCCCCCCCCCC++''.........'''''''''''''+''''++++CC+CC+CCCCCCCCCCCCCC
+CC                                     C'''''BBBBBBBBBBB'''''+CC             CC++'''''''''+++++++++++++C++++CCCC  C  C
+                                        XXXXXHHHHHHHHHHHXXXXXC                 CCXXXXXXXXXCCCCCCCCCCCCC CCCC
+                                        CCCCCXXXXXXXXXXXCCCCC                    CCCCCCCCC
*++++======--====++'++'''.'+-MMAAAXAM-=+'------'''''''''''---.''+++++++'''''''''..-----....'''''........'''.''..''''''''++++++==-===-
+CCCCCCCCCCCCCCCCCC+CC+++'+CC        CCC+......CCCCCCCCCCC...'++CCCCCCC+++++++++''.....''''+++++''''''''+++'++''++++++++CCCCCCCCCCCCC
+                  C  CCC+C             C''''''BBBBBBBBBBB'''+CC       CCCCCCCCC++'''''++++CCCCC++++++++CCC+CC++CCCCCCCC
+                        C               XXXXXXHHHHHHHHHHHXXXC                  CCXXXXXCCCC     CCCCCCCC   C  CC
+                                        CCCCCCXXXXXXXXXXXCCC                     CCCCC
*--===----=-----==+''''...'=-MMAAAXAM-+.---''---''''''''''--.'''++++++'''''''....------..''++++''...'........'...'''''.''''+++=======
+CCCCCCCCCCCCCCCCCC++++'''+CC        CC'...CC...CCCCCCCCCC..'+++CCCCCC+++++++''''......''++CCCC++'''+''''''''+'''+++++'++++CCCCCCCCCC
+                  CCCC+++C            +'''BB'''BBBBBBBBBB''+CCC      CCCCCCC++++''''''++CC    CC+++C++++++++C+++CCCCC+CCCC
+                      CCC             CXXXHHXXXHHHHHHHHHHXXC                CCCCXXXXXXCC        CCC CCCCCCCC CCC     C
+                                       CCCXXCCCXXXXXXXXXXCC                     CCCCCC
*MMM--MMMM-MMMMM---====++=-MAAAAAAAAA-'----''''''''''''''--.''++++++++'++'''...-------.'''+++==+''''''..........'''''.....'+====-====
+   CC    C     CCCCCCCCCCC          C+....CCCCCCCCCCCCCC..'++CCCCCCCC+CC+++'''.......'+++CCCCCC++++++''''''''''+++++'''''+CCCCCCCCCC
+                                     C''''BBBBBBBBBBBBBB''+CC        C  CCC+++'''''''+CCC      CCCCCC++++++++++CCCCC+++++C
+                                      XXXXHHHHHHHHHHHHHHXXC                CCCXXXXXXXC               CCCCCCCCCC     CCCCC
+                                      CCCCXXXXXXXXXXXXXXCC                    CCCCCCC
*MMMMMMMMAAAMAAAMMMMMMMMMMAAXXAAAAAMM='--'''''''''''''''---.'+++++++++++++++''..------.'''++=====++''''.........'''...--..'+=------==
+                                    C+..CCCCCCCCCCCCCCC...'+CCCCCCCCCCCCCCC++''......'+++CCCCCCCCC++++'''''''''+++'''..''+CCCCCCCCCC
+                                     C''BBBBBBBBBBBBBBB'''+C               CC++''''''+CCC         CCCC+++++++++CCC+++''++C
+                                      XXHHHHHHHHHHHHHHHXXXC                  CCXXXXXXC                CCCCCCCCC   CCCXXCC
+                                      CCXXXXXXXXXXXXXXXCCC                     CCCCCC                                CC
*AAMMMMAXXXAAAAXAAAAAAAAAAXXXXXAAMM-=+.---''''-.--'''''----.'+++++=++++====++''..-----.''+++==+++++'''''....''''..'..---..'+==-M-M---
+                                  CCC'...CCCC.'..CCCCC....'+CCCCCCCCCCCCCCCC++''.....'++CCCCCCCCCC+++++''''++++''+''...''+CCCC C CCC
+                                     +'''BBBB'+''BBBBB''''+C                CC++'''''+CC          CCCCC++++CCCC++C++'''++C
+                                     CXXXHHHHXCXXHHHHHXXXXC                   CCXXXXXC                 CCCC    CC CCXXXCC
+                                      CCCXXXXC CCXXXXXCCCC                      CCCCC                               CCC
*XXAAAAXXZZXAAAXXAAAAXXXAXXZXXAM--=='.---'''''-=+-''''''---.'++======+=====++''..----.'++====+'''''''''''''''''''....----.'+==----MMM
+                               CCCC+'...CCCCC.CC.CCCCCC...'+CCCCCCCCCCCCCCCC++''....'+CCCCCCC+++++++++++++++++++''''....'+CCCCCCC
+                                   C+'''BBBBB'  'BBBBBB'''+C                CC++''''+C       CCCCCCCCCCCCCCCCCCC++++''''+C
+                                    CXXXHHHHHX  XHHHHHHXXXC                   CCXXXXC                           CCCCXXXXC
+                                     CCCXXXXXC  CXXXXXXCCC                      CCCC                                CCCC
*ZXXXXXXZZZXAAAAXXXXXXXXXXZXXAM-++'.---'''''''-..-''''''---.'++++========+++++'..----.'+=====+'.'''...''++++++++''...---.'+=-----MMMM
+                              CCC+'...CCCCCCC.''.CCCCCC...'+CCCCCCCCCCCCCCCCC+''....'+CCCCCCC+'+++'''++CCCCCCCC++'''...'+CCCCCCC
+                                 C+'''BBBBBBB'++'BBBBBB'''+C                 C++''''+C       C+CCC+++CC        CC+++'''+C
+                                  CXXXHHHHHHHXCCXHHHHHHXXXC                   CCXXXXC         C   CCC            CCCXXXC
+                                   CCCXXXXXXXC  CXXXXXXCCC                      CCCC                                CCC
*1ZXXZZZZZXXAAMMAAAAXXXXAXXXA--+'.----''''''''''''''''''---.''+++++=====++''''..----.'+++===+'........''++==+++'''.......'+==----MMMA
+                            CCC+'....CCCCCCCCCCCCCCCCCC...'++CCCCCCCCCCCC++++''....'+CCCCCCC+''''''''++CCCCCCC+++'''''''+CCCCCCC
+                               C+''''BBBBBBBBBBBBBBBBBB'''+CC            CCCC++''''+C       C++++++++CC       CCC+++++++C
+                                CXXXXHHHHHHHHHHHHHHHHHHXXXC                  CCXXXXC         CCCCCCCC            CCCCCCC
+                                 CCCCXXXXXXXXXXXXXXXXXXCCC                     CCCC
*ZZZXZZZZZXXAAMMMAAAAAAAMMMM-+'.---''''''''''''''''''''---..''''++++=+++++'''.----.'++==++=+''.......''++=====++'''....''+====---MAAA
+                           CC+'...CCCCCCCCCCCCCCCCCCCC...''++++CCCCCCCCCC+++'....'+CCCCCCCC++'''''''++CCCCCCCCC+++''''++CCCCCCCC
+                             C+'''BBBBBBBBBBBBBBBBBBBB'''++CCCC          CCC+''''+C        CC+++++++CC         CCC++++CC
+                              CXXXHHHHHHHHHHHHHHHHHHHHXXXCC                 CXXXXC           CCCCCCC              CCCC
+                               CCCXXXXXXXXXXXXXXXXXXXXCCC                    CCCC
*ZZZZZZZZXXAAMMMMMMMMMMM-==+''.--'''''''''''''''''''''----.''''''''++++++++'.-----'+===+++++'.......''+++======++++'...'+=-==-----MAA
+                       CCCC++'..CCCCCCCCCCCCCCCCCCCCC....'++++++++CCCCCCCC+'.....+CCCCCCCCC+'''''''++CCCCCCCCCCCCC+'''+CCCCCCCCCC
+                           CC+''BBBBBBBBBBBBBBBBBBBBB''''+CCCCCCCC        C+'''''C         C+++++++CC             C+++C
+                             CXXHHHHHHHHHHHHHHHHHHHHHXXXXC                 CXXXXX           CCCCCCC                CCC
+                              CCXXXXXXXXXXXXXXXXXXXXXCCCC                   CCCCC
*XXXXXZ1ZXXXAAAMMM-MM--++''.-----''''''''''''''''''''-----..''.'''''++=+++''--.--.+====++++''.......'++===--MM--===='.-.'=--------MAA
+                 C  CCCC++'.....CCCCCCCCCCCCCCCCCCCC.....''++'+++++CCCCCC++..'..'CCCCCCCCC++'''''''+CCCCCCC  CCCCCC+'.'+CCCCCCCCC
+                        CC+'''''BBBBBBBBBBBBBBBBBBBB'''''++CC+CCCCC      CC''+''+         CC+++++++C               C+'+C
+                          CXXXXXHHHHHHHHHHHHHHHHHHHHXXXXXCC  C             XXCXXC           CCCCCCC                 CXC
+                           CCCCCXXXXXXXXXXXXXXXXXXXXCCCCC                  CC CC                                     C
*AAAAAXZXXAAAAAMM--===+'------'''''''''''''''''''''''-----......''..''++++'.-----.+===+++++'..--.....'+==---MMMM---+'.-.'=-MMMM--MMMA
+                CCCCCC+......CCCCCCCCCCCCCCCCCCCCCCC.....''''''++''++CCCC+'.....'CCCCCCCCC+''..'''''+CCCCCC    CCCC+'.'+CC    CC
+                      C''''''BBBBBBBBBBBBBBBBBBBBBBB'''''++++++CC++CC    C+'''''+         C++''+++++C              C+'+C
+                       XXXXXXHHHHHHHHHHHHHHHHHHHHHHHXXXXXCCCCCC  CC       CXXXXXC          CCXXCCCCC                CXC
+                       CCCCCCXXXXXXXXXXXXXXXXXXXXXXXCCCCC                  CCCCC             CC                      C
*AMMMAAAAAAAMMMM-==+'''.--'''''''''''''''''''''''''''-----........--..'+=+'-----.'++==+++++''........'+=----MMMMMM-=+.--.+-MAAAMMAAAA
+               CCCC+++'..CCCCCCCCCCCCCCCCCCCCCCCCCCC.....''''''''..''+CCC+.....'+CCCCCCCCC++''''''''+CCCCCC      CCC'..'CC
+                   CCC+''BBBBBBBBBBBBBBBBBBBBBBBBBBB'''''++++++++''++C   C'''''+C         CC++++++++C               +''+
+                      CXXHHHHHHHHHHHHHHHHHHHHHHHHHHHXXXXXCCCCCCCCXXCC     XXXXXC            CCCCCCCC                CXXC
+                       CCXXXXXXXXXXXXXXXXXXXXXXXXXXXCCCCC        CC       CCCCC                                      CC
*MMMMMMMAMAAMMM--+'.-------''''''''''''''''''''''''''-----....''.---...++'.----.'+++==+++++''''.....''+=----MMMMMMM-='.-.+-MAAMMAAAAA
+              CCC+'.......CCCCCCCCCCCCCCCCCCCCCCCCCC.....''''++'...'''CC+'....'+CCCCCCCCCC++++'''''++CCCCCC       CC+'.'CC
+                 C+'''''''BBBBBBBBBBBBBBBBBBBBBBBBBB'''''++++CC+'''+++  C+''''+C          CCCC+++++CC               C+'+
+                  CXXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHXXXXXCCCC  CXXXCCC   CXXXXC               CCCCC                  CXC
+                   CCCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXCCCCC       CCC       CCCC                                        C
*MMMMMMMMMMMMM-=+'.---'''----'''''''''''''''''''''''------..''''.------.''.---.'+++====++=++++''''.''+==----MAMMMMM--='..+-MMMMMMXXXX
+             CCC+'...CCC....CCCCCCCCCCCCCCCCCCCCCCC......''++++'......'++'...'+CCCCCCCCCCCCCC++++'++CCCCCCC       CCC+''CC
+                C+'''BBB''''BBBBBBBBBBBBBBBBBBBBBBB''''''++CCCC+''''''+CC+'''+C              CCCC+CC                 C++
+                 CXXXHHHXXXXHHHHHHHHHHHHHHHHHHHHHHHXXXXXXCC    CXXXXXXC  CXXXC                   C                    CC
+                  CCCXXXCCCCXXXXXXXXXXXXXXXXXXXXXXXCCCCCC       CCCCCC    CCC
*----------=--=+'.--'''''''---'''''''''''''''''''''''----..''''.--------..---..'+++====++===+++++'''+==--MMMMAMMMM---=+''+=-MMMMMAXXX
+CCCCCCCCCCCCCCC+'..CCCCCCC...CCCCCCCCCCCCCCCCCCCCCCC....''++++'........''...''+CCCCCCCCCCCCCCCCC+++CCCCC         CCCCC++CCC
+               C+''BBBBBBB'''BBBBBBBBBBBBBBBBBBBBBBB''''++CCCC+''''''''++'''++C                 CCC                   CC
+                CXXHHHHHHHXXXHHHHHHHHHHHHHHHHHHHHHHHXXXXCC    CXXXXXXXXCCXXXCC
+                 CCXXXXXXXCCCXXXXXXXXXXXXXXXXXXXXXXXCCCC       CCCCCCCC  CCC
*=-------==+'++'.--''''''''''''''''''''''''''''''''''---...'''.--------------.''+++===+++======+++''+====--MMMMMMMMMM-=+++=---MMAAXXZ
+CCCCCCCCCCC+CC+'..CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...'''+++'..............'++CCCCCCCCCCCCCCCCCC++CCCCCCC          CCCCCCCCC
+           C  C+''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'''+++CCC+''''''''''''''+CC                  CC
+               CXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXXCCC   CXXXXXXXXXXXXXXC
+                CCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCC       CCCCCCCCCCCCCC
*==+======+..------''''''''''''''''''''''''''''''''''--..''''.-----''''------.'+++++==+++==++==++++'+++==+=----MMMAAAMM-===----MAXXXX
+CCCCCCCCCC''......CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC..''++++'.....CCCC......'+CCCCCCCCCCCCCCCCCCCC+CCCCCCCCCCC        CCCCCCCC
+          ++''''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB''++CCCC+'''''BBBB''''''+C                    C
+          CCXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXCC    CXXXXXHHHHXXXXXXC
+            CCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC       CCCCCXXXXCCCCCC
*++''+++++'-------'''''''''''''''''''''''''''''''''''--..'''..----''''-------''++++++======+++=++++++'+++++-----MAAAAAMMM----==MAXZZZ
+CC++CCCCC+.......CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC..''+++''....CCCC.......++CCCCCCCCCCCCCCCCCCCCCC+CCCCCCCCCC         CCCCCC
+  CC     C'''''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB''++CCC++''''BBBB'''''''CC                      C
+          XXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXCC   CCXXXXHHHHXXXXXXX
+          CCCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCC       CCCCXXXXCCCCCCC
*+''.....'.------''''''''''''''''''''''''''''''''''''---.'''.----''''--------.''++++==+====+====+++++++++'+=---MMAAAAMAAM------MXXZZZ
+C++'''''+'......CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...'+++'....CCCC........'++CCCCCCCCCCCCCCCCCCCCCCCCC+CCCCC          CCCCCC
+ CC+++++C+''''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'''+CCC+''''BBBB''''''''+CC                         C
+   CCCCC CXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXXC   CXXXXHHHHXXXXXXXXC
+          CCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCC     CCCCXXXXCCCCCCCC
*''..----.-------''''''''''''''''''''''''''''''''''''---.''.----''''---------.''+++==++==-=====++++++++''..'+==MAXXXAAAMM--==--MAXZZZ
+++''....'.......CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...'++'....CCCC.........'++CCCCCCCCCCCCCCCCCCCCCCC++''+CCC          CCCCCC
+CC++''''+'''''''BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'''+CC+''''BBBB'''''''''+CC                       CC++C
+  CCXXXXCXXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHXXXC  CXXXXHHHHXXXXXXXXXC                           CC
+    CCCC CCCCCCCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCC    CCCCXXXXCCCCCCCCC
*....----------'''''''---'''''''-----''''''''''''''''---...---''''''---------..'+++==++==---===++++''.''.---.'=MAXXXAAAM-=++==MAXXZZZ
+''''..........CCCCCCC...CCCCCCC.....CCCCCCCCCCCCCCCC...'''...CCCCCC.........''+CCCCCCCCCCCCCCCCCCC++'++'...'+C         CCCCCC
+++++''''''''''BBBBBBB'''BBBBBBB'''''BBBBBBBBBBBBBBBB'''+++'''BBBBBB'''''''''++C                   CC+CC+'''+C
+CCCCXXXXXXXXXXHHHHHHHXXXHHHHHHHXXXXXHHHHHHHHHHHHHHHHXXXCCCXXXHHHHHHXXXXXXXXXCC                      C  CXXXC
+    CCCCCCCCCCXXXXXXXCCCXXXXXXXCCCCCXXXXXXXXXXXXXXXXCCC   CCCXXXXXXCCCCCCCCC                            CCC
*....--------''''''------------------------''''''''''----..--''''''----''----..''+======--M--=++''''.--------.+-AAAAXAAM-=+''=-AXZZZZ
+''''........CCCCCC........................CCCCCCCCCC....''..CCCCCC....CC....''++CCCCCCCCC CCCCC++++'........'CC        CCC++CC
+++++''''''''BBBBBB''''''''''''''''''''''''BBBBBBBBBB''''++''BBBBBB''''BB''''++CC               CCCC+''''''''+             CC
+CCCCXXXXXXXXHHHHHHXXXXXXXXXXXXXXXXXXXXXXXXHHHHHHHHHHXXXXCCXXHHHHHHXXXXHHXXXXCC                     CXXXXXXXXC
+    CCCCCCCCXXXXXXCCCCCCCCCCCCCCCCCCCCCCCCXXXXXXXXXXCCCC  CCXXXXXXCCCCXXCCCC                        CCCCCCCC
*.....------''''''---------------------------'''''''''------'''''-----'''-----.'++==--------=++'....--------.'=-MAMMAAM--='..+-MAXZZZ
+'''''......CCCCCC...........................CCCCCCCCC......CCCCC.....CCC.....'+CCCCCCCCCCCCCCC+''''........'+CC       CCC+''CC
++++++''''''BBBBBB'''''''''''''''''''''''''''BBBBBBBBB''''''BBBBB'''''BBB'''''+C               C++++''''''''+C            C++
+CCCCCXXXXXXHHHHHHXXXXXXXXXXXXXXXXXXXXXXXXXXXHHHHHHHHHXXXXXXHHHHHXXXXXHHHXXXXXC                 CCCCXXXXXXXXC              CC
+     CCCCCCXXXXXXCCCCCCCCCCCCCCCCCCCCCCCCCCCXXXXXXXXXCCCCCCXXXXXCCCCCXXXCCCCC                      CCCCCCCC
*.....-------'''--------------------------------''''''------''''------''''---..'+==--------=+'''.----------'+==-MM---M-===+'.'=MAAXXX
+'''''.......CCC................................CCCCCC......CCCC......CCCC...''+CCCCCCCCCCCCC+++'..........+CCCC  CCC CCCCC+'+C
++++++'''''''BBB''''''''''''''''''''''''''''''''BBBBBB''''''BBBB''''''BBBB'''++C             CCC+''''''''''C               C+C
+CCCCCXXXXXXXHHHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXHHHHHHXXXXXXHHHHXXXXXXHHHHXXXCC                 CXXXXXXXXXX                 C
+     CCCCCCCXXXCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCXXXXXXCCCCCCXXXXCCCCCCXXXXCCC                    CCCCCCCCCC
*''..-------------------------------......------------------''''------''''---'''+==-------=+....---------.'+=-==---=======+'''=MAAAAA
+++''...............................''''''..................CCCC......CCCC...+++CCCCCCCCCCCC''''.........'+CCCCCCCCCCCCCCCC+++C
+CC++'''''''''''''''''''''''''''''''++++++''''''''''''''''''BBBB''''''BBBB'''CCC            ++++'''''''''+C                CCC
+  CCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCCCCCCXXXXXXXXXXXXXXXXXXHHHHXXXXXXHHHHXXX               CCCCXXXXXXXXXC
+    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC      CCCCCCCCCCCCCCCCCCXXXXCCCCCCXXXXCCC                   CCCCCCCCC
*''.---------------...------...----.....''.----------------''''-------'''---.''''+===-MM-==+.-----------.''+=-=+=--==+++=++++=-MAAAMM
+++'...............'''......'''....'''''++'................CCCC.......CCC...'++++CCCCC  CCCC'...........'++CCCCCCCCCCCCCCCCCCCC
+CC+'''''''''''''''+++''''''+++''''+++++CC+''''''''''''''''BBBB'''''''BBB'''+CCCC           +'''''''''''+CC
+  CXXXXXXXXXXXXXXXCCCXXXXXXCCCXXXXCCCCC  CXXXXXXXXXXXXXXXXHHHHXXXXXXXHHHXXXC               CXXXXXXXXXXXC
+   CCCCCCCCCCCCCCC   CCCCCC   CCCC        CCCCCCCCCCCCCCCCXXXXCCCCCCCXXXCCC                 CCCCCCCCCCC
*''.--------------...'.----.....-----..''''.-----.--------''''--..---''''---.....'+++-MM-=+'.------'''--.'++==++===++'''''''+=-MAAMM-
+++'..............'''+'....'''''.....''++++'.....'........CCCC..''...CCCC...'''''+CCCC  CCC+'......CCC..'+CCCCCCCCCCC+++++++CCC     C
+CC+''''''''''''''+++C+''''+++++'''''++CCCC+'''''+''''''''BBBB''++'''BBBB'''+++++C         C+''''''BBB''+C           CCCCCCC
+  CXXXXXXXXXXXXXXCCC CXXXXCCCCCXXXXXCC    CXXXXXCXXXXXXXXHHHHXXCCXXXHHHHXXXCCCCC           CXXXXXXHHHXXC
+   CCCCCCCCCCCCCC     CCCC     CCCCC       CCCCC CCCCCCCCXXXXCC  CCCXXXXCCC                 CCCCCCXXXCC
*'.----'---------..'''..-..........--.''''''.......-.----------...---''------..--..''+=-=+'.------''''--.++===+++++''..-....'+=MMM--=
++'....C.........''+++''.''''''''''..'++++++'''''''.'..........'''...CC......''..''++CCCCC+'......CCCC..'CCCCCCCCCC++''.''''+CC   CCC
+C+''''B'''''''''++CCC++'++++++++++''+CCCCCC+++++++'+''''''''''+++'''BB''''''++''++CC     C+''''''BBBB''+          CC++'++++C
+ CXXXXHXXXXXXXXXCC   CCXCCCCCCCCCCXXC      CCCCCCCXCXXXXXXXXXXCCCXXXHHXXXXXXCCXXCC        CXXXXXXHHHHXXC            CCXCCCC
+  CCCCXCCCCCCCCC       C          CC              C CCCCCCCCCC   CCCXXCCCCCC  CC           CCCCCCXXXXCC               C
*'.---''--------.''++'.--.....''''.-..'++''''''..........------....---------...---..''++'.--------''''--.'+==++++'.--------.'+==-==++
++'...CC........'++CC+'..'''''++++'.''+CC++++++''''''''''......''''.........'''...''++CC+'........CCCC..'+CCCCCCC+'........'+CCCCCCCC
+C+'''BB''''''''+CC  C+''+++++CCCC+'++C  CCCCCC++++++++++''''''++++'''''''''+++'''++CC  C+''''''''BBBB''+C       C+''''''''+C
+ CXXXHHXXXXXXXXC     CXXCCCCC    CXCC         CCCCCCCCCCXXXXXXCCCCXXXXXXXXXCCCXXXCC     CXXXXXXXXHHHHXXC         CXXXXXXXXC
+  CCCXXCCCCCCCC       CC          C                     CCCCCC    CCCCCCCCC   CCC        CCCCCCCCXX CCCC          CCCCCCCC
*.-----------...''+++'.--...''+++'....''''''+'''...''''''.------....--------....---..'''.----------'----.'+=++''.---------.''++==++++
+'...........'''++CCC+'..'''++CCC+''''++++++C+++'''++++++'......''''........''''...''+++'..........C....'+CCCC++'.........'++CCCCCCCC
++'''''''''''+++CC   C+''+++CC   C++++CCCCCC CCC+++CCCCCC+''''''++++''''''''++++'''++CCC+''''''''''B''''+C    CC+'''''''''+CC
+CXXXXXXXXXXXCCC      CXXCCC      CCCC          CCC      CXXXXXXCCCCXXXXXXXXCCCCXXXCC   CXXXXXXXXXXHXXXXC       CXXXXXXXXXC
+ CCCCCCCCCCC          CC                                 CCCCCC    CCCCCCCC    CCC      CCCCCCCCCCXCCCC         CCCCCCCCC
*----------.''++++==+'....''++++''....'''''+++''..''++++'.-----......---------------....---'--..---------.'++'..---------.'''+++++'''
+..........'++CCCCCCC+''''++CCCC++''''+++++CCC++''++CCCC+'.....''''''...............''''...C..''.........'+CC+''.........'+++CCCCC+++
+''''''''''+CC       C++++CC    CC++++CCCCC   CC++CC    C+'''''++++++'''''''''''''''++++'''B''++'''''''''+C  C++'''''''''+CCC     CCC
+XXXXXXXXXXC          CCCC        CCCC          CC       CXXXXXCCCCCCXXXXXXXXXXXXXXXCCCCXXXHXXCCXXXXXXXXXC    CCXXXXXXXXXC
+CCCCCCCCCC                                               CCCCC      CCCCCCCCCCCCCCC    CCCXCC  CCCCCCCCC       CCCCCCCCC
*---.....''+++=====-==+''''''++'''..''+++++==++'''++++++'.--.....'''''.-...----------..------''.---------.'''...-------...'''''''''''
+...'''''++CCCCCCCCCCCC++++++CC+++''++CCCCCCCCC+++CCCCCC+'..'''''+++++'.'''..........''......++'.........'+++'''.......'''+++++++++++
+'''+++++CC            CCCCCC  CCC++CC         CCC      C+''+++++CCCCC+'+++''''''''''++''''''CC+'''''''''+CCC+++'''''''+++CCCCCCCCCCC
+XXXCCCCC                         CC                     CXXCCCCC     CXCCCXXXXXXXXXXCCXXXXXX  CXXXXXXXXXC   CCCXXXXXXXCCC
+CCC                                                      CC           C   CCCCCCCCCC  CCCCCC   CCCCCCCCC       CCCCCCC
*--.''+++++===-=------=+''''''''''..'++=====+'''+++=++++'........''+++....-----------...---.'+'------..--..'......-................''
+..'++CCCCCCCCCCCCCCCCCC++++++++++''+CCCCCCCC+++CCCCCCCC+''''''''++CCC''''...........'''...'+C+......''..''+''''''.''''''''''''''''++
+''+CC                  CCCCCCCCCC++C        CCC        C++++++++CC   ++++'''''''''''+++'''+C C''''''++''++C++++++'++++++++++++++++CC
+XXC                              CC                     CCCCCCCC     CCCCXXXXXXXXXXXCCCXXXC   XXXXXXCCXXCC CCCCCCXCCCCCCCCCCCCCCCC
+CC                                                                       CCCCCCCCCCC   CCC    CCCCCC  CC         C
*...'+====+==--=------=='''''''+''''+++===++''''+++++++'''...--..'+===+'..---..--...'+++'..'++'.--.-.......'''''''...''''.-.........'
+'''+CCCCCCCCCCCCCCCCCCC+++++++C++++CCCCCCCC++++CCCCCCC+++'''..''+CCCCC+''...''..'''+CCC+''+CC+'..'.'''''''+++++++'''++++'.'''''''''+
++++C                   CCCCCCC CCCC        CCCC       CCC+++''++C     C++'''++''+++C   C++C  C+''+'+++++++CCCCCCC+++CCCC+'+++++++++C
+CCC                                                      CCCXXCC       CCXXXCCXXCCC     CC    CXXCXCCCCCCC       CCC    CXCCCCCCCCC
+                                                            CC           CCC  CC               CC C                      C
*+''++==++'+==-=----====+++'''++++++==+=++''''+++=+++++'''''.--..'+===+'''..--.-..''+===+''+++'........-...'++++++''''+++....'''''.'+
+C++CCCCCC+CCCCCCCCCCCCCCCC+++CCCCCCCCCCCC++++CCCCCCCCC+++++'..''+CCCCC+++''..'.''++CCCCC++CCC+''''''''.'''+CCCCCC++++CCC''''+++++'+C
+ CC      C                CCC            CCCC         CCCCC+''++C     CCC++''+'++CC     CC   C++++++++'+++C      CCCC   ++++CCCCC+C
+                                                           CXXCC         CCXXCXCC             CCCCCCCCXCCC              CCCC     C
+                                                            CC             CC C                       C
*-=++=+'.''+=====--=-======++++=====--=+++''+++====+++++++++'...'+++===+++''.....''+==-=+++++++'''+'''.....'+++++++++++=+''''+===++++
+CCCCCC+'++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC++CCCCCCCCCCCCCCCC+'''+CCCCCCCCC++'''''++CCCCCCCCCCCC+++C+++'''''+CCCCCCCCCCCCC++++CCCCCCCC
+      C+CC                               CC                C+++C         CC+++++CC            CCC CCC+++++C             CCCC
+       C                                                    CCC            CCCCC                     CCCCC
*-=+++'..''++++==------==========-----=++++++++++==+++======+++++++++======+'''''++==-==+++++++'''++++''''''+++'+++++++==++++========
+CCCCC+''++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++CCCCCCCCCCCCCC+++CCCC++++++CCC+CCCCCCCCCCCCCCCCCCCCC
+     C++CC                                                                 CCCCC              CCC    CCCCCC   C
+      CC
*=+++'.'++'+++==---MMMM-==---===------=+++++++''+++====+========+++++========+++++=====++'++++'''''++==+++'''''''+++++++====-=====---
+CCCC+'+CC+CCCCCCCC    CCCCCCCCCCCCCCCCCCCCCCC++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCC+++++CCCCCCC+++++++CCCCCCCCCCCCCCCCCCCC
+    C+C  C                                   CC                                         C    CCCCC       CCCCCCC
+     C
*+++''.'+++====---MMMMM-=--==+++=-----=++++'+''''++===+++++++==++''++=========++++====+'''''''....'++====+''''''''''''++====-========
+CCC++'+CCCCCCCCCC     CCCCCCCCCCCCCCCCCCCC+C++++CCCCCCCCCCCCCCCC++CCCCCCCCCCCCCCCCCCCC+++++++''''+CCCCCCC++++++++++++CCCCCCCCCCCCCCC
+   CC+C                                   C CCCC                CC                    CCCCCCC++++C       CCCCCCCCCCCC
+     C                                                                                       CCCC
*+==+''++======-MMMMMM-=====++'+====-==++=+'++++++++==+++''''+++'''+===+++=+==+++====++'''''''....'+++===+'''''''''''''++============
+CCCC++CCCCCCCCC      CCCCCCCC+CCCCCCCCCCCC+CCCCCCCCCCCCC++++CCC+++CCCCCCCCCCCCCCCCCCCC+++++++''''+CCCCCCC+++++++++++++CCCCCCCCCCCCCC
+    CC                       C            C             CCCC   CCC                    CCCCCCC++++C       CCCCCCCCCCCCC
+                                                                                             CCCC
*=--========+=--MM----==++=+'.'++=========++++===++++==++''''+++'+++===++++++++++====+'++++++''..'''++++++++''''''''''+++++====+++===
+CCCCCCCCCCCCCCC  CCCCCCCCCC+'+CCCCCCCCCCCCCCCCCCCCCCCCCC++++CCC+CCCCCCCCCCCCCCCCCCCCC+CCCCCC++''+++CCCCCCCC++++++++++CCCCCCCCCCCCCCC
+                           C+C                          CCCC   C                     C      CC++CCC        CCCCCCCCCC
+                            C                                                                 CC
*=---M--======-----======+=+'..'+++++=====++++==++++++=++''''+========+'''++++++====+''++++++++'''''''+++++++++++++++++++++++==++====
+CCCC CCCCCCCCCCCCCCCCCCCCCC+''+CCCCCCCCCCCCCCCCCCCCCCCCC++++CCCCCCCCCC+++CCCCCCCCCCC++CCCCCCCC+++++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                           C++C                         CCCC          CCC           CC        CCCCCCC
+                            CC
*=-MMMM-----=--===-======+=+''''+++++======++===++'''''''''''+=======++'''+++====--=+''+=====++'''''''+++=============++++++=========
+CC    CCCCCCCCCCCCCCCCCCCCC++++CCCCCCCCCCCCCCCCCC+++++++++++CCCCCCCCCC+++CCCCCCCCCCC++CCCCCCCC+++++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                           CCCC                  CCCCCCCCCCC          CCC           CC        CCCCCCC
*-MMMMMM-------===-====+++==+++++======---======++'''.....'''++++++==+++++==========++++==+++'''''++++++========---====++==========++
+C      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++'''''+++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                                                 CCC+++++CCC                                CCCCC
+                                                    CCCCC
*-MAAMMMM--------=-==++++==+++++=====----M---====+++''''..''''''++==================++++=++'''''++===========---------=======-====+++
+C       CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCC++++''++++++CCCCCCCCCCCCCCCCCCCCCCCCCCC+++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                                                   CCCC++CCCCCC                           CCCCC
+                                                       CC
*MMAAMMMMMM--------==+++===+++==-------MMMMM-----===++++''''''''+=--==========+==+++++++++'''''++====---=====------------===---===+++
+          CCCCCCCCCCCCCCCCCCCCCCCCCCCC     CCCCCCCCCCCC++++++++CCCCCCCCCCCCCCCCCCCCCCCCCC+++++CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+                                                       CCCCCCCC                          CCCCC










*                                                                                                                                    +''''++