`,:;;;;;;:,                                                                      
                                                              .+nxMWWWWW@@@@@@@@WWWMxz+;:                                                             
                                                              *W@@@@@@@@@@@@@@@@@@@@@WW@@Wn*;`                                                        
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@W@Wn+:                                                     
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WW#,                                                  
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WM*`                                               
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W@n;                                             
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@x;                                           
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@x;                                         
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@x;                                       
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#.                                     
                                                              *@@@@W@WWxxxxxWW@@WWW@@@@W@@@@@@@@@@@@@@@@@@@@@@WWW*`                                   
                               .                              *Wn+i:,       `,`;i;*zxW@@W@@@@@@@@@@@@@@@@@@@@@@@@@x,   `                              
                             :nz                              .`                  ` `;ii#MW@@@@@@@@@@@@@@@@@@@@@@@@W*` +n;                            
                             ,Mxz,                            `:i*##nnxMMMMMMMxnz+i;:..:` .izW@@@@@@@@@@@@@@@@@@@WWni.#xM.                            
                             ;M#nM#;`                     `:*zxMxMMMMMMMMxMMMMMMMMMMMMxzi,   `;#W@@@@@@@@@@@@@@WW+:;+xnzM,                            
                             iM#;*xMx+.                .izMMxMxxnzzz####+++++###znnxMMMMMMx#;`  `in@W@@@@@@@@Wni.*xMx#*zM,                            
                            ,:Mz::;zMxx#.           `;zxMxnzz#+++++++++++++++++#######znxMMMMx#;`  ,#W@W@@WWn:.+xMMn***nM.                            
                          `+z,M#::::inMMx+i       .+nMxz*;*+;*+++++++++++#zznnxxxxxxxxnnz#zxMMMMx*.  `*M@W#.i+xMMn*****xn.n`                          
                         `z@z`Mz::::::*nMMM#`   ,#MMx#i.  .+*++++++++#znnxxxnxxxxxxxxxxxxxnxxxxxMxx+.  `;.`#MMMx*;*****x+;Wx.                         
                        `nW@z nx:::;*:::+xMMxi,*MMx#++: `,*++++++++znxxxxxz+#xxxxxxxxxxxxxxxxxxxxxMMxi` `ixMMx+::i#***+M;*WWM,                        
                       `nW@@z zx;::;nx#i:;+xMMxMxz+++++i++++++++#znxxxxxxxnnxxnxxxxxxxxxxxxxxxxxxxxxxMz;nMMx+;:i#xn***#M.z@W@M,                       
                      `n@@@@z *Mi::::+xMn*;;#xMx#++++++++++++++zxxxxxxxxxxxxxnzxxxxxxxxxxxxxxxxxxxxxxxMMMx#;:*nMx#****zx`M@@@@M,                      
                     `nW@@@@z ,M+:::::;#xxx+;inMMxz++++++++++znxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMMMx#;:*nMxz******n#.@@@@@WM.                     
                     zW@@@@@z  xz:::::::izxMx#iinxMxn#++++++#nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMMMx#;;*nMMn+***++**x*iW@@@@@@x`                    
                    *@@@@@@@z  +M;::::::::*nxxxz**zxMMnz+++++++nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMMMz*:;+nxxn+***#n#**+M.nW@@@@@@Wx`                   
                   ;@@@@@@@@z  :M*;*+*;::::;+nxnxn+i#nMMxz#++++nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMxMzi:izxxxn+***zxMx#**zz`WW@@@@@@@Wz                   
                  ,W@@@@@@@@z  `xz:ixMxz+*;:;i#xz#nx+;*nMMMnzznxxxxxxxxxxxxxxxxn#xxxxxxxxxxxMMxzi:innznx#***zxxz#z***xi*@@@@@@@@@@@*                  
                 `MW@@@@@@@@z   *Mi:;z#zxxn;::i*zxz+zn+;*xMMMMxxxxxxxxxxxxxxxxz*#xxxxxxxxxMMMni:+zz+zxz***iiMn***z**#x`x@@@@@@@@@@WWi                 
                `nW@@@@@@@@@n   .M#::#****x*:::;*+nx#*#z;;*zxMMMxxxxxxxxxxMxn***nxxxxxxMMMxz*:;##*#xn+*i;::;M#***z**n*;W@@@@@@@@@@@WW`                
                +W@@@@@@@@@@x    #xi:;****z#:::::i*+xn*z*:::*MMMxxxxxMMMMxn+****xxxxxxxMMx*:::i#*nx#*i;::::+x***##*+x`x@@@@@@@@@@@@@@n`               
               :@@@@@@@@@@@@x  ``.Mz:;**+##Mi:::::;**zn*n#::;#MMxxxxMx*;;*#z+**#xxxxxxxMM+:::#n*nz*i;:::::;xn++*n+*nii@@@@@@@@@@@@@@@@+               
              `x@@W@@@@@@@@@x  `  *M*:;+#zzxn;:::::;i*+n+xz;::zMxxxxM+i+nMx+**+xxxxxxxMMz::;zx+n+*i::::::;nxzz#zn*#n.M@@@@@@@@@@@@@@@@W:              
              #W@@@@@@@@@@@@x   ` `nx;:****+xn;::::::i*+x+nni::zMxxxMz*znn+***nxxxxxxxMn;:inn#x+i:::::::;nx+**+x++x;#@@@@@@@@@@@@@@@@@WM`             
             :@@@@@@@@@@@@@@x      iMn;:#***+xn;::::::;*+x#nx*::zMxni#*;i***i*xxxxxxxMzi:*xn#x+i:::::::;nx#***xz+xM#@@@@@@@@@@@@@@@@@@@@+             
             x@@@@@@@@@@@@@@x      ;MMziiz***#xx#;:::::;*+nnzx#;inM;#nz::;i;;*nMMxxMMzi;#xznn+i::::::;+xx#***nz#xMzWW@@@@@@@@@@@@@@@@@@@W,            
            i@@@@@@@@@@@@@@@x      ,nMM#*+n+zxxxxn;:::::;i*#xznxxxxzMMz::::::i+xMMMx#iinnzxz*i::::::+xMxxxz+nnxMMn.M@@@@@@@@@@@@@@@@@@@@Wn            
           .M@@@@@@@@@@@@@@@x      zMxxxn#+#z+**nMx#;:::::;*+nnzxxxzxxi:::::;;*#MMx**+xnxn+i;:::::+xMMn**+zxMMMxxn,+@@@@@@@@@@@@@@@@@@@@W@:           
           #@@@@@@@@@@@@@@@@x      +Mz+zxxMnx+***#xxx#;:::::;*+nnnz;zn;::::;****nM#+znnn+*;:::::*nMMx+***+xMMxxxxMz:@@@@@@@WW@@@@@@@@@@@@@M`          
          .W@@@@@@@@@@@@@@@@x      zx+++##xMMx#**#xzxMx#;:::::;i+zznxi*ni::*zn#*+n+zzz+*;:::::inxxnzx#**#xMMMxxxxM+`W@@@@@@WW@@@@@@@@@@@@@@*          
          #@@@@@@@@@@@@@@@@@x     ,Mz++++++xxMn##x#**#xMx#;:::::;i+MxxMMx*i#MMxnnx++**i:::::izxMx#**#x##nxMxxxxxxxz n@@@@@@@@@@@@@@@@@@@@@WM`         
         .W@@@@@@@@@@@@@@@@@x     +M#+++++#xxxMxxz****zxxMx+;::::;+nMMMMMxzxnxMMM#***;::::;#xMxxn****zxxMMxxxxxxxxM,*@@@@@@@@@@@@@@@@@@@@@@@i         
         #W@@@@@@@@@@@@@@@@@x    `xx+++++#xxxxxMMxz**zx+*#xMx+;:;i**x#*#zMMn**###+***i::;#xMxz*+xz*+nxMMxxxxxxxxxxM+:@@@@@@@@@@@@@@@@@@@@@@@x         
        .W@@@@@@@@@@@@@@@@@@x    ;Mn++++#xxxxxxxMMMMnM#****xxxx#***+x*:;i#ni;;***+*+##+nxMxn****#MnMMMxxxxxxxxxxxxMx:W@@@@@@@@@@@@@@@@@@@@@@@i        
        +@@@@@@@@@@@@@@@@@@@x    #Mz++++nxxxxxxxxxMMMMxnz##x+zxxxnxMM#:::::::i***nxMMMMMx#*x##znxMMMMxxxxxxxxxxxxxxMiW@@@@@WW@@@@@@@@@@@@@@@@n        
       `M@@@@@@@@@@@@@@@@@@@x    xM#+++nxxxxxxxxxxxxxMMMMMMMxxxxMMMMMn::::::i***+MMMMMMMxxxMMMMMMMxxxxxxxxxxxxxxxxxM#+W@@@@WW@@@@@@@@@@@@@@@@@:       
       :@@@@@@@@@@@@@@@@@@@@x   ,Mx+++zxxxxxxxxxxxxxxxxxxMMMMMMMMMMMMx*::;i*****nMMMMMxMMMMMMMMxxxxxxxxxxxxxxxxxxxxMx:@@@@@@@@@@@@@@@@@@@@@@@Wz       
       z@@@@@@@@@@@@@@@@@@@@x   iMx++#xxxxxxxxxxxxxxxxxxxxxxxMMMMxMxxMxi;******#xMMnxMMxMxxxxxxxxxxxxxxxxxxxxxxxxxxMM:@@@@@@@@@@@@@@@@@@@@@@@@M`      
      `@@@@@@@@@@@@@@@@@@@@@x   iMn++nxxxxxxxxxxxxxxxxxxxxxxxxxxxMx##MMxz+***+zxMMMzzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxM*n@@@@@@@@@@@@@@@@@@@@@@@W;      
      *@@@@@@@@@@@@@@@@@@@@@x   nM#+zxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx##nMMMMxxxMMMnzzxMMMMxxxxxxxxxxxxxxxxxxxxxxxxxxxxMn+@@@@@@@@@@@@@@@@@@@@@@@Wn      
      x@@@@@@@@@@@@@@@@@@@@@x  .Mx#+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+**+MMMMMMMMMMn**+zMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMMiW@@@@@@@@@@@@@@@@@@@@@@@@`     
     `@@@@@@@@@@@@@@@@@@@@@@x` iMx+zxxxxxxxxxxxxxxxxxxxxxxxxxxxxM#**+xxn#xMMxzMMx#**#MxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMx*+@@@@@@@@@@@@@@@@@@@@@@@@i     
     ;@@@@@@@@@@@@@@@@@@@@@W+ `+Mn+nxxxxxxxxxxxxxxxxxxxxxxxxxxxxMxnxMMMxxMMMMznMxxxxxMMMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMz *xW@@@@@@@@@@@@@@@@@@@@@n     
     +@@@@@@@@@@@@@@@@@@@@@W;;xMMz#xxxxxMMMMxxxxxxxxxxxxxxxxxxxxxxxxxxxMMxxxxMMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMM#``n@@@@@@@@@@@@@@@@@@@@@W`    
     M@@@@@@@@@@@@@@@@@@@@@xxM#*xnzxxxxMxxMMxxMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMMMxxxxxxxMMMx#:W@@@@@@@@@@@@@@@@@@@@W:    
    ,@@@@@@@@@@@@@@@@@@@@@WMMx*;#xxxxxxMxMMMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMMMxxMxxxxxxx#zxMzx@@@@@@@@@@@@@@@@@@@@@*    
    ;W@@@@@@@@@@@@@@@@@@@@MMMn*:;nxxxxxMxMMMMMMMMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMMxxxMMMMxxxxxxxxxz*#xMz+@@@@@@@@@@@@@@@@@@@@Wn    
    zW@@@@@@@@@@@@@@@@@@W@nMMn+::#xxxxxMxMMMMMMMMMMMMxxxxxxxMMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMMMMMMxxMxxxxxx+*#xMni@@@@@@@@@@@@@@@@@@@@@M`   
    M@@@@@@@@@@@@@@@@@@@@@xMM#+::*xxxxxMxMMMMMMMMMMMMMMMMMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMMMMMMMMMMMMxMxxxxxn**#nMn:@@@@@@@@@@@@@@@@@@@@@W:   
   .@@@@@@@@@@@@@@@@@@@@@WzMx*+::ixxxxxMxMMMMMMMMMMMMMMMMMMMMMMMMMMMxMMxxxxxxxxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMxMxxxxxz**zzMn,W@@@@@@@@@@@@@@@@@@@@W;   
   ,@@@@@@@@@@@@@@@@@@@@@W#Mx;#::;nxxxxMxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMxMxxxxx#**z#xn`@@@@@@@@@@@@@@@@@@@@@@#   
   *@@@@@@@@@@@@@@@@@@@@@@nMx;#:::#xxxxMxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMxMxxxxx#**z*xx M@@@@@@@@@@@@@@@@@@@@@n   
   #@@@@@@@@@@@@@@@@@@@@@@MMni#:::+xxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMxMxxxxx#**z+xx x@@@@@@@@@@@@@@@@@@@@@M   
   z@@@@@@@@@@@@@@@@@@@@@@MMni#i;:#xxxxxxMMMMx#xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMxz*MMMMMxxxxxxx#**z+xx`z@@@@@@@@@@@@@@@@@@@@@@.  
   x@@@@@@@@@@@@@@@@@@@@@@MMn*#**inxxxxxxMMMMMz.;+xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx#;.,zMMMMMxxxxxxx#**z+nM`zW@@@@@@@@@@@@@@@@@@@@@,  
   x@@@@@@@@@@@@@@@@@@@@W@nMMz#***xxxxMxMMMMMMMn,``,i#nMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMxz*:```ixMMMMMMxxxxxxxz**##xM.+W@@@@@@@@@@@@@@@@@@@@@,  
   x@@@@@@@@@@@@@@@@@@@@WWzMMx#***xxxxxxMMMMMMMMx;     ,;+xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx#i,`    .zMMMMMMMMxxxxxxxn**#nMM,+@@@@@@@@@@@@@@@@@@@@@@i  
   @@@@@@@@@@@@@@@@@@@@@@WnMMx#**#xxxxMxMMMMMMMMMM+`      `:+nxMMMMMMMMMMMMMMMMMMMMMMMMn+;.       ;xMMMMMMMMMxxxxxxxn**#xMM;zW@@@@@@@@@@@@@@@@@@@@@*  
  .@@@@@@@@@@@@@@@@WW@@@@M+;MM+**zxxxxMxMMMMMMMMMMMn,    .,:i#xMMMMMMMMMMMMxxMMMMMMMMMx++:,.`   .#MMMMMMMMMMMxxxxxxxx**#xMM:ixWW@@@@@@@@@@@@@@@@@@@*  
  ,@@@@@@@@@@@@@@@@WWWM@W#xxxMx+zxxxxxxxMMMMMMMMMMMMxzzznMMMMMMMMMMMMMMMi``  :xMMMMMMMMMMMMMx#zzxMMMMMMMMMMMMxxxxxxxxz*+xMMM#+nM@@@@@@@@@@@@@@@@@@@z  
  ,@@@@@@@@@@@@@@W@@MzMMxnxMMMMMMxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMi      ,nMMMMMMMMMMMMMMMMMMMMMMMMMMMMMxxxxxxxxx+zMMMMxMMi*W@@@@@@@@@@@@@@@@Wz  
  ,@@@@@@@@@@@@@@MMMzzMMMMMMMMMMxxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx;        .nMMMMMMMMMMMMMMMMMMMMMMMMMMMMxxxxxxxxxxMMMMMMM#+#z#W@@@@@@@@@@@@@@Wz  
  ,@@@@@@@@@@@@@x*xMMMMMMMMMMMMMxxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMx,          `#MMMMMMMMMMMMMMMMMMMMMMMMMMMxxxxxxxxxMMMMMMMMMMMxnn@@@@@@@@@@@@@@Wz  
  ,@@@@@@@@@@@@@M.zMMMMMMMMMMMMMxxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMz.             *MMMMMMMMMMMMMMMMMMMMMMMMMMxxxxxxxxxxMMMMMMMMMMx:W@@@@@@@@@@@@@@Wz  
  ,@@@@@@@@@@@@@@z`nMMMMMMMMMMMMxxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMM+`               :xMMMMMMMMMMMMMMMMMMMMMMMMxMxxxxxxxxMMMMMMMMMx:#@@@@@@@@@@@@@@@Wz  
  ,@@@@@@@@@@@@@Wx;zMMMMMMMMMMMMxxxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMxi                  .#MMMMMMMMMMMMMMMMMMMMMMMxxxxxxxxxMMMMMMMMMMx:WW@@W@@@@@@@@@@@Wz  
  ,@@@@@@@@@@W@n+#xMMMMMMMMMMMMMMxxxxxxxxMMMMMMMMMMMMMMMMMMMMMMn,                     ixMMMMMMMMMMMMMMMMMMMMMxMxxxxxxMxMMMMMMMMMMxxzzW@@@@@@@@@@@@Wz  
  ,@@@@@@@@@@z*#MMMMMMMMMMMMMMx#MMxxxxxxxMiizxMMMMMMMMMMMMMMMxi`       `               :xMMMMMMMMMMMMMMMMMMMMxMxxxxxxMMMMMMMMMMMMMMMni+M@@@@@@@@@@W#  
  `@@@@@@@M#+zMMMMMMMMMMMMMMMn, zMxxxxxxxM;  `,;+zxMMMMMMxxzi`  `+;`             ,,*:.  .#MMMMMMMMMMMMMxz*;#xxMxxxxxMMMMMMMMMMMMMMMMMMx*in@@@@@@@@@*  
   M@@@@@**nMMMMMMMMMMMMMMMM#.  .xMxxxxxxMi        .,::,.       `#Mx+:`      `i#xMMMx.    izxMMMMMMxz+;`   #xxxxxxxM+xMMMMMMMMMMMMMMMMMMx+*z@@@@@@@*  
   x@@@@W+xMMMMMMMMMMMMMMMM*     iMxxxxxxx+                      ,#MMMxn#;`,+xMMMMMxi       `,:;;:.`  `,`  zxxxxxxxz  ;xMMMMMMMMMMMMMMMMMMx:@@@@@@@:  
   x@@@@WxnMMMMMMMMMMMMMMx;       #Mxxxxxxz,ii.                  `+MMMMMMMnMMMMMMMx,                   `;*ixxxxxxxM:   `ixMMMMMMMMMMMMMMMx;n@@@@@@@,  
   x@@@@@@xzMMMMMMMMMMMMx:        `nMxxxxxxi`            ```      `*xMMMMMMMMMMMMx,`        .,`           ;Mxxxxxx+      .zMMMMMMMMMMMMMx.#@@@@@@@@,  
   .,,;;;;;,#MMMMMMMMMMx;          ,xMxxxxx.          ,+xn+*,      `:nMMMMMMMMMMz.``      :i+nxz;`        ,MxxxxMn`       `*MMMMMMMMMMMx.`,,,,,,,,,`  
            `#MMMMMMMMMi            *MMxxxx.        `+xMMMn;`.       `+MMMMMMMM+`        ` ixMMMM#.  `.   ,xxxxMM+`         ;xMMMMMMMMx.              
             `#MMMMMMM#`          .#xMxxxxx,  ;:   `#*;::#x;    ,:     ;xMMMMx;      ..    ix+..,;z`  ;*` .xxxxMMxz,         :xMMMMMMx:               
               +MMMMMn`          ixMM#+Mn*: `+*    ;.    :Mxi :`*i      ,nMMn,       *#`, *xM:    `:   +#` ixMMi#MMxi         *MMMMMM;                
                zMMMM:          ixMM#` .    +n`          `nMx,;.         ,xM;          `:;xMz          .x#  .z; `#MMM;        `nMxMx;                 
                .xMM#          :xMMz`      iM;            :MMn`   ,      .xM:       ,   `nMM,           +M*      `nMMx`        iMMM;                  
                 :Mx,          :xMx.      ;Mn`             zMx#` `n      .MM+`      +`  +xM#            ,xx:      ,xx+          nx+                   
                 `#n`           :xi      `nx*              :MMMz`        *MMxi``      `+MMx.             zxn       +*`          *M*                   
                ;.x+             ,`      *Mx:               zxMMn;`    .,nxxnn+:` `,:ixMxx#              iMM:      `            :xn:`                 
                 ,xi                     nMn`               ,xxMMxnz++*. ``` ``;+znxnxMMnx,              ,xM+                   `xM.                  
                 iM:     .`             .xM#                `n,xM#:,in#.;,  :z:;nxi,,+Mz,#               `xMn           ``       nM:                  
                 +x.     ;              :MM+                 *:.zz  +MMxMxnnxMMMMMz  zn,;,               `nMx`           :`      *M:                  
                 zx`    ::              ;MM+                 ,* *x`.xMMMMMMMMMMMMMM..xz`*`               `nMx`           `+,     ;M:                  
                 nn   `in`              ,+*,                 `# ;M;;MMMMMMMMMMMMMMM,iMi +                 `,,             +M#`   :M:                  
       WWWWWWWWWznn`  iM#`                                    + #MniMMMMMMMMMMMMMMM:xMz +                                 :MMz`  :Mx@@WWWWWWW@@;      
       #@@@@@@@@x+z` iMM;                                     ;`zMMzMMMMMMMMMMMMMMMzMM#.i                                 .xMM#` :MnW@@@@@@@@@W`      
       ,W@@@@@@@Wiz :xxM:                                     `.,xMMMMMMMMMMMMMMMMMMMx.:;                                  nMMM+ *zn@@@@@@@@@Wz       
        x@@@@@@@W;n.xM+M,                                      ..xMMMMMMMMMMMMMMMMMMMx.i:                                  #M*xM:#+W@@@@@@@@@@;       
        *W@@@@@@W+znMz`M;                                      `,xMi+MMMMMMMMMMMMM#xMx.#:                                  +M*#Mnx+W@@@@@@@@@x`       
        `W@@@@@@WM#MMi ni       ``                             ,`;x`:MMMMMMMMMMMMM:,M:.x.                          `       *M*+MMxz@@@@@@@@@@*        
         #W@@@@@@@ixn.+##       ,i                              *`#`.MMMMMMMMMMMMM. +`#*                          ::       +MiW#MiW@@@@@@@@@M`        
         .W@@@@@@WM.`iWix`      ;n.                   .:.       #,   nMMMMMMMMMMMn   ;#`     `                    #*`      zziW#*M@@@@@@@@@@*         
          #@@@@@@@WMzW@ixi      ix+                 `zMMx#.     ,x;  :MMMMMMMMMMMi `*n.    ,zxn,                 :M#`     :M;#@@@@@@@@@@@@WW.         
          ,@W@@@@@@@W@@M*n,     ixx.                +MMMMMx;     ;x+` *nnzMMx+z#; .#x:    :xMMMx.                zM#     `nz:W@@@@@@@@@@@@W*          
           zW@@@@@@@@@@@+z#.    ,xM#               iMn++zMMMi     ;xx*`   .:,   .+xn:    `xz#*#xz`              ;MM*    `+x:MW@@@@@@@@@@@WM.          
           .W@@@@@@@@@@@Winz.    zMM*             .x+     ixx.     .*xn#i;,,,;*zxni`     *; ,**#M+             ,xMx.   `+MixW@@@@@@@@@@@@@i           
            *W@@@@@@@@@@@W;xx;   :xMM#.           #i      `nM+       `i#xMxxxxn+;`      :n;zW@@Wix,          `ixMM+   ,nMzMW@@@@@@@@@@@@@n            
            `MW@@@@@@@@@@@W*zM#,  ;xMMn:         ,+        :xx,          .,,..          #x,W@@@@xi#         .#MMMn` .*xxMW@@@@@@@@@@@@@@@:            
             ;@@@@@@@@@@@@W@#:nMnz*+xMMM+.      `#;         iM+          `..,,,`       .xz*@@@@@@ix:      `ixMMMMn#nMnxW@@@@@@@@@@@@@@@@#             
              zW@@@@@@@@@@@@x  ,;zznxxMMMxzi:.  *x`  `      `xn`          `.,.`        iM;x@@@@@@n#n  `:;+xMMMMMMMz+zM@W@@@@@@@@@@@@@@@M`             
              `M@@@@@@@@@@@@x        `.znMMMMMxzx+   ,       ;Mi           `,          #x:@@@@@@@@iMnnxMMMMMx*i*x#xW@@@@@@@@@@@@@@@@@@W:              
               ;WW@@@@@@@@@@x           `.;i+zxnM+        ,`  nn`                     .x##W@@@@@@WMMMxMMMz+*+x@@WW@W@@@@@@@@@@@@@@@@@W#               
                z@@@@@@@@@@@x                .i:.`        `:  zx*                    `+M*W@@@@@@@@@WMMzznx@W@@@@@@@@@@@@@@@@@@@@@@@@WM`               
      .,`       `xW@@@@@@@@@x                              .` *xx;                  `#Mz#@W@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W.                
        .        .W@@@@@@@@@x                              `  iMMM#;.              ,zMx;W@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@i                 
                  ;W@@@@@@@@x                          `      *xnMMMxn#*ii;:;**i*#nxMx;x@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W@@#                  
                   *@@@@@@@@x                                 *@xz+xMMMMMMMMMMMMMMMMxinW@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Wz`                  
                    #W@@@@@@x                                 *@@@W#++#xMMMMMMMMMxzzMW@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WM`                   
                    `nW@@@@@x                                 *@@@@@@@Mn#zxMxMxMWWW@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@x.                    
                     `nW@@@@x                                 *@@@@@@@W@W@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W,                     
                      `x@@@@x                                 *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WW:                      
                       `nWW@x                                 *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W:                       
                        `nW@x                                 *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W:                        
                         `n@x                                 *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W@WM,                         
                           #x                                 *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WM.                          
                            ,                                 *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Wn`                           
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#`                            
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WW*                              
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WM,                               
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#`                                
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WM:                                  
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#`                                   
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@n:                                     
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M;                                       
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W*`                                        
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WMi`                                          
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W@ni                                             
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W@@W#:                                               
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Wz;                                                  
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WWMz;`                                                    
                                                              *@@@@@@@@@@@@@@@@@@@@@@@@@WWM#i,                                                        
                                                              ,#nW@@@W@@@@@@@@@@@@@@@M#*:.                                                            
                                                                   .:;**********i;,