`..        `..                                    ,i:           
        ,Mi`  .#*`                                                                    i#n        ,#@                          .`        +#n           
        *#@`  .##,  ;;                     ,;:::::::;.WMxxxxxxxx.                     ;#n  `:,,..:#W....,,                   ##z        +#z           
        x##   `##, ;#@,                    +#########,@WWMMMMM##`                     :#z  .#############x                   i##,  ...``+#n```..`     
       `##,    ##,  x#M`                   :ii;##i;i*`       `#W                      :#z  `++***+#@****+i                    M#x  W############i     
       *#x     W#:  .@#*                      .#W      *ni   ,#n                    ` :#z:* ,;;::i#W:::;;`                    :##, nxxnnM#Wnnxxx:     
       M#i     M#;   **                       ;#z      ##+   ;##                    M@i#zx#,#############`                     #,       *#z           
      ;##.     x#i      `                     ##i      n#;   *#*                    @@:#z+#*:i;;;i#@;;;ii`                              *#z           
      M##.     n#*  .;#x#.                    W#.      x#.   ##;                   .#x:#z;#x:,,,,:#W,,,,,:,               `i;;;;` `     *#z      `    
     i###.     z#xnW####@;                   :#@++++:  W#    n#,                   ;##:#z`.###############n               ,#####,`@@@@WW@#@WWW@@@@.   
    `@###..i+nW####Wn+;.                     z#######  #W    M#`                   +#i:#z  :**************;               .zz###.`@@WWWWWWWW@##WW@.   
    n#xW#.+###@M#W.                         `@#M,,*#+ .#x````@#```                 M#,:#z    iiiiiiiiiii,                     ##.           i#x       
   ##@.W#..zi, ,#@                          +##x  ;#+ :##@@@@##@@@`                i# :#z    ###########*                     ##.           i#x       
   :@i W#.      @#:                        .@##x  ;#+ :nnnnnnnnn#@                    :#z    @#,,,,,,,z#i                     ##. `z######++n#W+##i   
    .  W#.      n#+                        x###x  ;#+          .#W                    :#z    @@.......##i                     ##. `###############n   
       W#.      i#M                        #W.#x  ;#+          ,#x                    :#z    @##########i                     ##. `*iiiiiiii##Miii;   
       W#.      `##,                        ,.#x  ;#+*zzzzzzznn*#n                    :#z    @#+++++++x#i                     ##.     `.    i#x       
       W#.       n#n                         .#W;;##+z#########z#z                    :#z    @@       +#i                     ##. ,  :WW    i#x       
       W#.       :##:   `                    .######+`.``````..+#+                    :#z    @#xxxxxxxW#i                     ##.*#, `W#*   i#x       
       W#.        n#W`  nn:                  .#Wii##+          ##i                    :#z    @#WWWWWWW@#i                     ##n##*  *#W   i#x       
       W#.        .@#M. W#*                  ,#x  ;##          x#,                    :#z    @@       *#i                    .###@;   `Mi   i#x       
       W#.         :@#@z##.                  ,#x  `.`      ```;#@`                    :#n    @@       +#i                    ###M.       `;;n#x       
       @#.          :@###x                   `:,           +#####                     ;#n    #@     `x@#i                    `Wn`         x###n       
       @#,           .#WW:                                 .##W#`                     i#n    #@      n#x`                     .           i#@n.       
       ..                                                   ,`                        `..    :,      .`                                   `,`         
                                                                                                                                                      
                                                                                                                                                      
                                                                                                                                                      
                                      .;*+.       :+*:`                                               .;+###+i,`                                      
                                    .+znnni      `#nnnzi`                                          `;#xxxxxxxxxzi`             `                      
                                   :znnnnn#`     ,nnnnnn#.                                        :zxxxxxxxxxxxxx#`           .z`                     
                                  :znnnnnnn,    `innnnnnnz.                                 `,  `*xxxxxxxxxxxxxxxx#`          ix#`                    
                                 .znnnnnnnni     #nnnnnnnn+`                               :z, `#xxxxxxxxxxxxxxxxxx*          #xx+                    
                                 *nnnnnnnnn#    .nnnnnnnnnn:                             .#x; `#xxxxxxxxxxxxxxxxxxxn.        .nxxx*                   
                                `znnnnnnnnnz.   ;nnnnnnnnnn*                            :nx+  +xxxxxxxxxxxz+**#nxxxxi        ixxxxx;                  
                                ,nnnnnnnnnnn:   +nnnnnnnnnnz                           ;nxn` ;xxxxxxxxxn+,     `:#xx+       `nxxxxxx,                 
                        `,      :nnnnnnnnnnn*  `znnnnnnnnnnz      `.                  ixxx; .nxxxxxxxxn,          ,z#       :xxxxxxn`                 
                       `ini     :nnnnnnnnnnn#  .znnnnnnnnnnz     `+z:`               :xxxz` +xxxxxxxxn.            `:       #xxxxxx*                  
                       ;nnn:    ,nnnnnnnnnnnz` ,nnnnnnnnnnnz     *nnz.              .nxxx; ,xxxxxxxxn,                     ,xxxxxxn.                  
                      ,znnnz.   .nnnnnnnnnnnn. ;nnnnnnnnnnn#   `;nnnn#`             +xxxn` +xxxxxxxx;                      #xxxxxx+    `              
                     `#nnnnn+`` `znnnnnnnnnnn, ;nnnnnnnnnnn*   ,znnnnni            :xxxx* `nxxxxxxxz`                     :xxxxxxx,    **             
                     :nnnnnnni   *nnnnnnnnnnn, innnnnnnnnnn:  `#nnnnnnz`           zxxxx, :xxxxxxxxi                     `zxxxxxx+    `nxi            
                     +nnnnnnnz,  :nnnnnnnnnnn, innnnnnnnnnz`  innnnnnnn;          ,xxxxz` *xxxxxxxx,                     ixxxxxxn.    ;xxx:           
                    `znnnnnnnn#` `znnnnnnnnnn, *nnnnnnnnnn+  ,nnnnnnnnn+          +xxxx+  zxxxxxxxn`                    .nxxxxxx+    `zxxxn,          
                    ,nnnnnnnnnn*  *nnnnnnnnnn, *nnnnnnnnnn:``#nnnnnnnnnz`        `nxxxx; `nxxxxxxx+                    `#xxxxxxn.    ;xxxxxn`         
                    :nnnnnnnnnnn, ,nnnnnnnnnn, *nnnnnnnnn#` *nnnnnnnnnnz`        .xxxxx, ,xxxxxxxxi                    *xxxxxxxi    `zxxxxx+          
                    ,nnnnnnnnnnn#` *nnnnnnnnn, *nnnnnnnnn: ,nnnnnnnnnnnz`        ;xxxxn. :xxxxxxxx;                   ixxxxxxxz`    ;xxxxxx:          
                    .nnnnnnnnnnnni ,nnnnnnnnn, *nnnnnnnn#``#nnnnnnnnnnn#         *xxxxn` ;xxxxxxxx:                  ;nxxxxxxx:    `nxxxxxz`          
                    `#nnnnnnnnnnnn, *nnnnnnnn, innnnnnnn:`innnnnnnnnnnn*         +xxxxn` ixxxxxxxx:                 inxxxxxxx+     *xxxxxxi           
                     ;nnnnnnnnnnnn+`.znnnnnnn, innnnnnn+`.znnnnnnnnnnnz.         #xxxxn` ixxxxxxxx;               `+xxxxxxxxn`    ,nxxxxxn`           
                     `#nnnnnnnnnnnn; innnnnnn, innnnnnz, +nnnnnnnnnnnni          #xxxxn` ixxxxxxxxi    .        `;nxxxxxxxxx:     #xxxxxx*            
                ``    .znnnnnnnnnnnz``#nnnnnn, innnnnn* :nnnnnnnnnnnn*`   ``     #xxxxn. ;xxxxxxxx*    *#i,...:*nxxxxxxxxxxi     ixxxxxxn.            
                :z;`   .#nnnnnnnnnnni :nnnnnn, ;nnnnnz.`#nnnnnnnnnnn*`   .*z`    +xxxxx, ,xxxxxxxxz    `nxxxnnxxxxxxxxxxxx*     ,nxxxxxx*             
                ;nn#:`  `+nnnnnnnnnnn,`+nnnnn. ;nnnnn; ;nnnnnnnnnnzi` ``iznz.    *xxxxx; `nxxxxxxxn.    :xxxxxxxxxxxxxxxxi     `zxxxxxxn.             
                innnz#,  `;znnnnnnnnn+ ,znnnn. ;nnnn#``znnnnnnnnn#,` `;znnnn,    ixxxxx*  zxxxxxxxx;     *xxxxxxxxxxxxxn:     `#xxxxxxxi              
                innnnnz*.` ,#nnnnnnnnn, *nnnn. ;nnnn: innnnnnnnz*```:#nnnnnn,    ,xxxxxz  *xxxxxxxx#      ixxxxxxxxxxx#.      +xxxxxxxz`              
                ;nnnnnnnz*.``iznnnnnnn#`.znnz` ;nnn+ .nnnnnnnn#:  ,+nnnnnnnn.    .nxxxxx. ,xxxxxxxxx:      :zxxxxxxxz;       *xxxxxxxx:               
                :nnnnnnnnnzi` .+nnnnnnn; ;nnz` :nnz.`+nnnnnnzi` ,+nnnnnnnnnz`     zxxxxxi `zxxxxxxxxz`      `:+#z#i,`       *xxxxxxxx*                
                `znnnnnnnnnnz;``;znnnnn#``#nz` :nni ,nnnnnn+,`.iznnnnnnnnnn+      *xxxxxz` ;xxxxxxxxx*                    `*xxxxxxxxz`                
                 +nnnnnnnnnnnn#, `iznnnn; ,zz  ,n#``+nnnnz:``;znnnnnnnnnnnn;      ,xxxxxx: `zxxxxxxxxx;                  .#xxxxxxxxn,                 
                 ,nnnnnnnnnnnnnz*. .+nnnz` iz  ,z: :nnnzi` ,#nnnnnnnnnnnnnz`       zxxxxxz` :xxxxxxxxxxi                ;nxxxxxxxxx;                  
                 `*nnnnnnnnnnnnnnz;``:#nn; `+  .i``#nz*.``*znnnnnnnnnnnnnn:        ixxxxxx;  +xxxxxxxxxx#,            :#xxxxxxxxxxi                   
                  `+nnnnnnnnnnnnnnn#, `:#z` `   ` ,z+,``:znnnnnnnnnnnnnnn;         `nxxxxxn. `zxxxxxxxxxxx#;.`    `,izxxxxxxxxxxx*                    
                   `innnnnnnnnnnnnnnzi` `:.       ,,` .+nnnnnnnnnnnnnnnz:           *xxxxxx#` .zxxxxxxxxxxxxnnz##znxxxxxxxxxxxxx*                     
                    `,+nnnnnnnnnnnnnnn#,            `iznnnnnnnnnnnnnnz*.            .nxxxxxx*  .nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxn;                      
                       .;+#zzzzznzzzzzz#:          `i#zzzzzzzzzzzz#*;`               ixxxxxxxi  .zxxxxxxxxxxxxxxxxxxxxxxxxxxxn:                       
                           ``````````````           ```````````````                   #xxxxxxx*  `+xxxxxxxxxxxxxxxxxxxxxxxxx+.                        
                     `,,,::;;;;iii****+*.           :+****iiii;;;;::,,.               .nxxxxxxx+`  ,zxxxxxxxxxxxxxxxxxxxxxz:                          
                     `+nnnnnnnnnnnnnnn#,`           `;znnnnnnnnnnnnnnn;                ;xxxxxxxx#.  `;zxxxxxxxxxxxxxxxxx#;`                           
                      .znnnnnnnnnnnnn+`               ,#nnnnnnnnnnnnn+`                 *xxxxxxxxni`   .i#nxxxxxxxxxn#i,                              
                       :znnnnnnnnnnzi``                .+nnnnnnnnnnnz.                   ii;;;::,,,`      `.:;iiii:,`                                 
                        ;nnnnnnnnn+.                    `:znnnnnnnnz.                                                                                 
                         ,#nnnnz+,`                       `;#nnnnn+.                                                                                  
                          `:i;:.                            `.;i;,`                         `.     .......  ........  ........                        
                                                                                            ;x.  .#nxxxxx+ .nxxxxxxn`.xxxxxxxn                        
                                                                                            ;x.  #n*;;;;;: `n+;;;;;; .x+;;;;;;                        
                   *Mi   #M: +Mi   #M#   :MM,  *M*  iMM.  nM.  ;zxxxx` zM,                  ;x. `n*        `xi       .x;                              
                   +#*   n#; ##*   n#x   x##z  :#x  x##* ,#M  +#Wzzzz` x#,                  ;x. `zz,````   .xi `` `  .x;`` ``                         
                   +#*   n#; ##*   n#x  :#xM@, `@@`.#x#x *#+ .@W`      x#,                  ;x.  :nxnnnn+` .nnzzzzz* .xnzzzzni                        
                   +#Wxxx@#; ##*   n#x  n#:*#z  z#;*#ix@.n#: *#@xxxxx` x#,                  ;x.   .;iii*n# `nz**+**; .x#****+:                        
                   +#MzzzW#; ##*   n#x :#M.,@@, i##x@.*#*@W` *#Wzzzzz` x#,                  ;x.         *n``ni       .x;                              
                   +#*   n#; +#+   x#n n######z .@@@n .#W#z  ,#M`      x#,                  ;x.         *n``z#       `n+                              
                   +#*   n#; ;#Wi,*@#*,#W:::;@@, x##i  x##;   z#n****` x#,                  ;x.  :;;;;;*n#  *x#;;;;;  +x+;;;;:                        
                   +#*   n#;  +W###W; z@*    +@z *#@.  *#@`   `+W@@@@` x#,                  ;x.  #nnnxxn#.  `*nnnnxn` `+nnnxnn                        
                   `.`   ..`   `,:,`  ..`    `.. `..   `..      `````  ..`                  `.   `.....`      `.....    `.....