`:+n@@##@@@@@@@@@@@@@@@@@@@@##@######@x#:.`                                                     
                                                  `.izW@@@@@@@@W@@@@@@@@@@@@@@@@@@@@@@#######@@Wn*,` `                                                
                                                `izW@@WWWWWWWWWWWWWWWWWW@@@@@@@@####@#@@@#########@x*.`                                               
                                            ``:#W@@@WMMMMMMMMMMMMMMMMMWW@W@@@@@@@#####################ni` `                                           
                                          `.ixMWWWWMxxxxxxxxxxxxxxxMMMMMMMMWWW@@@@@@@@#@#@@@@#########@@W+,``                                         
                                         `+xMMWWWWMMxxxxxnnnnxxxxxxxMxxMMMMMMMMWW@@@@@@@@@@@@@@@@###@@@@@#W#.                                         
                                     ` .*MMMxMMMMMxxxxxxnnnnnxxxxnnxxxnxnxxxMMxxMWW@@@@@@@@@@@@@@@@@@#@@####@z,                                       
                                     `*MMMxxxMMxxxxxxxnnnnnzzzzzzzzznzzzzzznnxxxxMMMW@WWW@@@@@@@@@@@@@@@@@@#@#@#.                                     
                                    ;xWxxxxxxMxxnnnnnnnnzzzzzzzzzzzzzzzzzzzzznnnnxxxMWWWWWWWW@@@@@@@@@@@@@@@@##@W+`                                   
                               `  ,zWMxnnnxxxxMxxxnnnxxnnnnzzzzzzzz########zzzzznnnxxxxMMMWWWW@@@@@@W@@@@@@@@@@###M;`                                 
                              ```*MWMxnzzznnnnxxxMxxxxxxxnnnnnzzzz##############zzznnnnxxxxMWWW@W@@@@@@@@@@@@@@@@#@@z.`                               
                               ,n@WMxnnzzzzzzzzzznnnnnxxxxnnnzzz#####+++++++#######zznznnnnnnxMW@@@@@@@@@@@@@@@@@@@##M;`                              
                           ` `*WWWWMxnnz###########zzzzznnnzz###+++++++++++++++++#####zzznnzzznxMW@@@@@@@@@@@@@@@@@@#@@#.``                           
                           `.z@WWMxnnzz######+###+####++###++++++++++++*****+++++++######zzzzzzznxMWW@@@@@@@@@@@@@@@@@@@x,`                           
                           ,xWWMMxnnzz###+++++++++++++++++++*+++++++*+***********++++++++##zzzz#zznxMMW@@@@@@@@@@@@@@@@@@W;                           
                        ``;WWMxxxnnzz##++++++**++++++++++++++*+*********+************++++++##zzzzzzznxMMW@@@@@@@@@@@@@@@@##+``                        
                        `*WWMxnnnzz##+++++++*+*********+***********************************++#####zzznxMMWW@@@@@@@@@@@@@@@@@z.                        
                       `#@Mxxnzzzz#+++++++***************************iiiiiiiiiiii***ii*******+++####zzznxMMWW@@@@@@@@@@@@@@@@x.`                      
                    ```z@Mxnzzz###+++++**************iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii******+#######zznxMW@@@@@@@@@@@@@@@@M,   `                  
                     .nWMxnzz####+++++***********iiiiiiiiiiiiiiiii;;;;;;i;;;;iiiiiiiiiiiiiiii****+++###z#zzzxMW@@@@@@@@@@@@@@@@M,                     
                    `xWMnzzz####+++++******iiiiiiiiiiii;;;;;;;;;;;;;;;;;;;;ii;;;;iiiii;;;iiiii*****+++####zzznxMW@@@#@@@@@@@@@@@W,                    
                  `.nWMnnzz####+++********iiiiiiii;iiiii;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iiiiii****++++####zzznxMW@@@@@@@@@@@@@@W,                   
                  `zWxnzz###+++++********iiiiiiiii;;iii;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iiiiiii****+++######znnxMW@@@@@@@@@@@@@M,                  
                 `zWxnzz####+++++****i***iiiiiiii;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;iiiiii*****++++#####zzznxMWW@@@@@@@@@@@x.                 
                `#Wxnnz####+++++****iiiiiiii;i;;;;;;;;;;;;;;;;;:::::;;;;;;;::::;;;;;;;;;;;;;;iiiiiii*****+++++####zzznnxMW@@@@@@@@@@x`                
               `*Wxnzz####++++*****iiiiiiii;;;;;;;;;:::;;;:::::::::;;;;;;:::::::;;;:;;;;;;;;;iiiiiiii*****+++++++###zzznxxMWWW@@@@@@@z`               
               :Mxnnzz###+++******iiiiiiii;;;;;;;;;:::::::::::::::;;;;;;;:::::::::::::::;;;;;;;iiiiii*******++++++####zznnnxxMMW@@@@@@*               
             `.xxnnzz###+++*******iiiiiii;;;;;;;;;:::::::::::::::::::::::::::::::::::::::;;;;;;iiiiiii*******++++++++###zznnnxxMWW@@@@@;`             
             `zxnnzz##++++*******iiiii;;;;;;;;;;;;::::::::::::::::::::::::::::::::::::::::;;;;;iiiiiiiii***********+++####zznnxxxMW@@@@W,`            
            `+xnnzz###+++*****iiiiiiii;;;;;;;;;;;;:::::::::::::::::::::::::::::::::::::::;;;;;;iiiiiiiiii***********++++###zzznnxxMMW@@@x`            
            ;xxnzz###++++*****iiiiiiii;;;;;;;;;;:::::::::::::::::::::::::::,,,:::::::::::;;;;;;iiiiiiiiiiii***********++++##zzzznnxxMWW@@+            
          `.nxnnzz##++++****iiiiiiii;;;;;;;;;::::::::::::::::::::::::::::::,,,,:::::::::::;;;;;;;iiiiiiiiiiiii********+++++###zzzznxxMMW@@:           
          `+xnnzz##++++*****iiiiiii;;;;;;;;;;;::::::::::::::::::::::::::::,,,,,:::::::::::;;;;;;;iiiiiiiiiiiiiiii******++++####zzzznnxxMWWx`          
          ;xnnzz###+++****iiiiiiiiiii;;;;;;;::::::::::::::::::::::::;::::,,,,,:::::::::::::;;;;;;;;;iiiiiiiiiiii*i*******+++####zzzznnxMMWW+`         
         `nnnnz###++++*****iiiiiiiiiiii;;;;;;::::::::::::::::,::::::;::::,,,,,,::::;::::::;;;;;;;;;;iiiiiiiiiii***********+++##zzzzznnnxxMWW:         
         *xnnzz###++++*****************iiiiii;;;;;;;;:;:::::,,:::::::::::,,,,,,,::;;;::::;;;;;;iiiiiiiiiiii*****+++++++*++++###zzzzzznnxxMMWn         
      ``,xnnzzz####++++++++++#######+++++++*****iii;;;;;;;:::::::::::;::,,,,,,,,::;;;;;;;;;;i********+**++++++######z########zzzznnnznnnxxMMW;        
       `#xnnzzzz#########zzzzzzzznnzzz#####++++++******ii;;:::,::::::::,,,,,,,,:::;;iiiiiiii***+++##########zzzzzzznnnnzzzzz##zzznnnnnnnxxxMWx``      
       ,xnnnzzzzzz###zzznnnnnnnnnnnnnzzzz########+++++*ii;;:::,,,::::::,,,,,,,,::;;ii****i**++++++##zzzzzznnnnnnnnnnxxxnnnnzzzzzznnnnnxxxxxxMW*`      
      `#xnnnzzzzzzzzzzzznnnxxnnnnnnnnnzz##########++++**ii;;:::,,,:::::,,,,,,,:::;ii*+###+++++#####zznnnnnxxnnnxxxxMMxxnxxnnnnzzznnnnnxxxxxxMMM.      
      :xnnnzzzzzzzzzzzzznnnnnnnnnnnnnnnzz########+++****iii;:::,,,,:::,,,,,,,,::;;i**+##z######zzzzzznnnnnnnxxxxMMMMMxxxxxxnnnnnnnnnnnnxxxMMMMW*      
      #xnnnzzzzzzzzzzzzznnnxxxxxxxxxxxxxxnnnzz###++++***ii;;::,,,,,,,,,,,,,,,,::;;i**+##zzzzzzzzzzzznnnnnnnnxxxxMMxxxxxnnnnnnnnnnnnnnnnnxxxMMMMM`     
   ``,xnnnnzzzzzzzzzzznnxMMMMMMMMMxxxxnnnnxxnz##+++****iii;;::,,,,,,::,,,,,,,:::;ii*+##zzzzzzzzzzzzzzzzzzznnxxMMMMMMMxxxxnnnnnnnnnznnnnnxxxxMMMW*     
   ``+xnnnzzz##zzzznnxMMMWMMMMMxxxxxxnzzzzzzzz##++***iii;;;:::,,,,,,,,,,,,,,,::;;i**+#zzzzzzzzzzzzzzzzzzznnnxxxxxxnnnnnnnnzzzzzzzzzzzznnnnxxMMMWx`    
    .nnnnzzzz#zznznxMWWMxnnxxMxxnnxxnz####++++++****iii;;;::::,,,..,,,,,,,,,,::;ii**+##zzzzzzzzzzzzzzzzzzznnnzzzzzzzzzznxxxnnnnnznnznnzzznnxxMMMW;    
    *xnnzz#zzzzzznxMWMxz+*#xWWxnzzznn#++####+*iiii;;i;;;:::,,,,,....,,,,,,,,,::;;i*++##zzzzzzzzzzzzz####zzz#######znxxnnxMWMMMMMxxxxnnnnnnnnxxMMMn`   
   `nnnzzzzznzznnnzxxnz##zM@@Wxz##zzz+**+#zz#*i;::;;;;;:::,,,,,.....,,,,.,,,:::;;i**+##zzzzzzzzzzzz###+++##+++##zznnz+++#xxxnz#nMMWWMMxnnxxnnxMMMM,   
   :xnnzzznnnnxn#+#nxnnzzxWWMnz###zz#*i**++##+*;:::::;::::,,,.......,,,..,,,,::;ii*++##zzzzzzzzzzz##++***++++##zz##*i;;i#nxz#++zMWWWWWWMxxxxxxxMMW+   
  `#xnzzznnnxxz+**+nxnzz#zzzz#++#zz#+**********i;:,:::::::,,,,............,,,,::;i**+##zzzzzzzzzzz#+*ii*+##zz##++*i;;::;*znnz#zM@@@MMMMWWMxxxxxxMMx`  
  .xnnzznnnnn#+***+nxnzz#zzz######+************i;:,,::::::,,,,............,,,,::;i*++##zzz#########*ii*#z#+++#+*i;;:::::i#nnz#znMWMMxxxMWMMMxMxxMMM:  
  ;xnzzznnnz##+**i*#nnzzzzzzz#+++*iiiiiiii;;:::::,,,::::,,,,,.............,,,,::;i*++##zzz#######+*ii*#zz+i;i+++*i;;;::::i#nzz##znnxxxxxMxxMMxMxxMM#  
 `#nnzzznzz###++****+##+++++**ii***iiiii;;:::,,::::::::,,,,,,..............,,,::;i**+###########+*i;i*+++***i***iiii;;;;;;i#nnz#znnnnnnxxxxMWMxMxMMx` 
 .nnzzzzzz##++****iiii*******iiiiiiiiiii;;:::::::;;::::,,,,,,.............,,,:::;i**++###########+iiiiii;;;;;;;;;;;;;;;iiii*+zzznnnnnnnxnnnnxMMMMxMM: 
 :xnzzzzz###+*****iiiiiiiiiiiiiiiii**ii;;:;::::;;;;::::,,,,,,............,,,,:::;ii*+++##########+****i;;;:;;;;;;;;;::;;;ii***+#zznnnnnnzzzznxMMMxMM* 
 +nnzzzz#++++*****iiiiiiiiiiiiiiiiiiii;;;;;;;;;;:::::::,,,,,,,..........,,,,::::;;i**++#####+++###+****ii;;;;;;;;;i;;;;;;;iii*++++++######zznxMMMxMMn`
`nnzzz##+++++*****iiiii;i;;iiiiiiii;;;;;;;;;;;::::::::,,,,,,,...........,,,:::::;;i**++#####++++##++++**i;;;;;;iiiiiiii;i;;;ii******++####zznxxMxxxMx.
.nnzz###++++*******iiiiiiiiiiiii;i;;;;;;;;;;::::::::::,,,,,,,........,,,,,,:::::;;i**++#####+++++#++++**ii;;;;;iiiiii;;;;;;;;iii*****++###zznxxxxxxMM;
;nzzz##++++*******iiiiiiiiii;;;;;;;;;::::;:::::::::,::,,,,,,,,......,,,,,,,:::::;;i**+++####++++++++++++*ii;;iiiiiiiiiiii;;;iiiii****++###zznnxxnnnxM#
+nzz###+++******iiiiii;;;;;;;;;;;;;:::::::::::::::,,,,,,,,,,,,,,..,,,,,,,,::::::;;i**++++##+++++++++++++**ii;;;;;;iiiiiiii;iiiiii***++####zznnnnnnnnxn
znzz##+++******iiiiii;;;;;;:::::::::::::::::::::,:,,,,,,,,,,,,,,,.,,,,,,,,:::::;;ii**++++++++++++++++++***ii;;;;;;iiiiiiiiiiiii****+++###zznnnnnnnnnxM
xnzz#++++*****iiiii;;;:::::::::::::::::,,,,,,::,,,,,::,,,,,,,,,,...,,,,,,:::::;;ii**++++++++++++++++******ii;;;;;;;;;;;;;iiiiii****++++##zzzzznzzznnxM
xnz##++++****iiiii;;;::::::::::::::::,,,,,,,,,,,,,,,:,,,,,,,,......,,,,,:::::;;;ii**++++++++++++++++******ii;;;;;;;;;ii;;;;;iiiii***++++#####zzzzznnxx
nzz###+++****iiii;;;;;:::::::,::::::,,,,,,,,,,,,,,,,,,,,,,,,......,,,,,,,::::;;;ii**+++++++++++++++++*****iii;;;;;;iiii;;;;;iiiiii****++++####zzzznnnx
nzz###+++***iiii;;;;;;::::::,,::,,,,,,,,,,,,,,,,,,:,,,,,,,,......,..,,,,,:::;;;;i***+++++++++++++++++******iiii;;;;;;i;;;;;;iii;iiii****++++####zznnnx
nzz##+++****iiiiii;;;;:::::::,::,,,,,,,,,,,,,,,:,,,,,,,,,,,.,.......,,,,:::::;;ii**++++++++++++++++++******iiiii;;;;;;;;;;;;ii;;iiiii***++++###zzznnnx
nzz##+++****iiiii;;;;;::::::::,,,,,,,,,,,,,,,:,,,,,,,,,,,,,........,,,,,,,:::;;ii**+++++++++++++++++*******iiiiii;;;;;;;;;;;;;;;;iiiii***++++##zzzznnx
nz###+++****iiiii;;;;;;;:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,..........,,,,,,:::;;ii***++++++++++++++++**+++**iiii;;;;;;;;;;;;iii;iiiiiii***++++###zzznnn
nz###+++****iiiii;;;;;;:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,...............,,,,,:::;;ii***+++++++++++++++*+++++**iii;;;;;;;;;;;;;iii;iiiiiii**+++++###zzznnn
nz###++*****iiii;;;;;;::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,..............,,,,,:::;;;ii***+++++++++++++++++++++**ii;;;;;;;;;;;;;;;;;;iiiiii****++++###zzzznn
nz###++*****iiii;;;;;::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,..............,,,,,,:::;;iii***++++++++++++++++++*+***ii;;;;;;;;;;;;;;;;;;;iiiii****++++####zzznn
nz##++++***iiiii;;;;;::::,,,,,,,,,,,,,:::,,,,,,,,,,,............,,,,,,,,,:::;;iiii**++++++++++++++++++*****ii;;;;;::::;;::;;;;iiiiiii*****++++####zznn
nz##+++****iiiii;;;;::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,...,,,......,,,,,,,,,:::;;;iii***+++++++++++++++*******i;;;;;:;::::;:::;;;;iiiiii*****++++###zzznn
zz##+++****iiiiii;;;:::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...........,,,,:::;;;iii***+++++++++++++++++****ii;;;;;:::::::::::;;;;iiiii****++++++###zznn
nz###++****iiiiii;;:::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.............,,,:::;;;iiii****++++++++*++++++****iii;;;::::::;;;:::;;;;;i;ii****+*++++###zznn
nz###++****iiiii;;;::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,,,,......,,,,:::;;;;iii*****+++++++++++++****iii;;;::::::;;;::::;;;;;iii****++++++##zzznn
nz###++***iiiii;;:::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,,,,.......,,,:::::;;;;;ii****++++++++++++++****i;;;:::::::::::::;;;;;;;ii*****++++###zzznn
nz###+++***iii;;;:::::::::::,,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,...,...,,,,,,:::::::;;;ii***+++++###++++++++**ii;;;::::::::::::::;;;;;iiii****++++##zzzznn
nz###+++**iiii;;;;:;:::::::,,,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,......,,,,,,,,::::::;;;;i***+++++####+++++++**ii;;;::::::::::::::::;;;;;iii***++++##zzzznx
nz##+++***iiii;;;;:::::::::,,,,,,,,,,,,,,,,,,,,,,,,.........,.......,,,,,,:::::;;;;;i**++++########++++***ii;;;;:::::::::::::::;;;;iiii***+++####zznnx
nz###++***iii;;;;;::::::::::,,:,,,,,:::,,,,,,,,,,,.........,........,,,,,,,::::;;;;;i**+++###########++***ii;;;;;:::::::::::::::;;;iiii***++++###zzznx
nz###++***iii;;;;;;::::::::::,:,,,,,,,,,,,,,,,,,,,,.................,,,,,,:::::;;;ii***+++########z###++**ii;;;;;:::::::::::::::;;;iiiii***+++###zznnx
nzz##++***iii;;;;;;;::::::::,::,,,,,,,,,,,,,,,,,,,,................,,,,,,:::::;;;;;ii**++###############+**i;;;;;:::::::::::::::;;;;iiii***+++###zznnx
nz####+***iiii;;;;;;::::::::,,,,,,,,,,,,,,,,,,,,,,,,...............,,,,::::::;;;;;;ii**+++#++++++++######+**i;;;;:::::,:::::::::;;;;iii****+++###zznnx
nzz##++***iiii;;;;;;:;::::::::,,,,,,,,,,,,,,,,,,,,,,...............,,,::::::;;;;;;;i***+++++++*****++#####+*i;;;;;:::::::::::::;;;;iiiii***++####zznnx
nnz##++****iiii;;;;;;;::::::::,,,,,,,,,,,,,,,,,,,,......````.......,,,::::::;;;;;;ii***+++++****ii***++####+*i;;;::::::::::::::;;;;;iii****+++##zznnxx
xnz##++*****iii;;;;;;;:::::::,:,,,,,,:,,,,,,,,,,.......``````````...,,::::;;;;;;;;;ii****+++***iiii***++#z##*i;;;::::::::::::::;;;;;iii****+++###znnxx
xnz###++****iii;;;;;;;;:::::::,,,,,,,,,,,,,,,,,,,.....```````````..,,,,::;;;;;;;;;;iiii********iiiii***++#z#+*ii;;;:::::::::::;;;;;iiii****++++#zznnxM
xnzz##++****iii;;i;;;;;::::::,,,,,,,,,,,,,,,,,,,,,.......`````.....,,,::::;;;;;;;;iiiiii**iiiiiiiiii***+++###+*i;;;;::::::::::;;;;;iiii****++++#zznnxM
xnzz##++****iiii;i;;;;;;:::::::,,,,,,,,,,,,,,,,,,,,...............,,,,::::;;;;iiiiiiiiiiiiiiiiiiiiii**++++#z#+*ii;;;::::::::::;;;;;;iii***++++##zznxxM
znnz##+++***iiiiii;;;;;;::::::::,,,,,,,,,,:::::,,,,,..............,,,::::;;;;iiiiiiiiiiiiiiiiiiiiiii**+++##zz#+*i;;;;::::::::;;;;;;iii****+++###zznxxM
+xnz##+++***iiii;;;;;;;;:::::::,,,,,,,,,,:::;;;:::,,,,,,.........,,,,:::;;iii*****iiiiiiiiiiiiiiiii***+++#zzz#+*i;;;;;;:::::;;;;;;;ii*****+++##zzznxMx
ixnzz##+++***iiii;;;;;;;;;::::,,,,,,,,,,,,::;;i;;::,,,,,,,,,,,,,,,,:::;;iii********+++++++++***iii****++#zzzz#+*ii;;;;;;;;;;;;;;;;iii****++++##zznnxMz
,xnzz##+++**iiiiii;;;;;;;;:::::,,,,,,,,,,,,::;;;;;::,,,,:,,,,,,,,,::;;;ii*****+++##zzzznzzzz###++*****+#znzz##+*iii;;;;;;;;;;;;;;iiii****++###zzznxxM*
`nnzz##+++***iiiiii;;;;;;;:::::,,,,,,,,,,,,,:::;;;::::::::,,,,,:::;;;iii***++++++#############+++++++#znnzz##++**ii;;;;;;;;;;;;;iiiii***+++###zznnxMM,
 #xnz###++****iiii;;;;;;;::::::::,,,,,,,,,,,,,::::::::,::::::::::;;;;ii***++++++++++++++##++++++###zzzzzz##+++***ii;;;;;;;;;;;iiiii*****+++###zznnxMx`
 ;xnzz##+++***iiii;;;;;;;;;:;::::::,,,,,,,,,,,,,,,:::,,,,,:::::::;;;iiii*********++++**+++++####zzz####++++*****iiii;;;;;;;;;;iiiii*****++####zznxxM# 
`.xnnz###++****iii;;;;;;;;;;;::::::::,,,,,,,,,,,,:::,,,,,,,::::::;;;;;iii*********++++++++++########++*****iiiiiiiiii;;;;;;;;iiiiii****+++###zzznxMMi 
 `#xnz###+++***iiiiii;;;;;;;;::::::,:,,,,,,,,,,,,::::,,,,,,,,,::;;;;;;;;iiiiiii******++++++#++++++++***iiiiiiiiiiiiiiiii;;i;;iiiiii***++++###zznnxMM. 
 `*xnzz##+++****iiiii;;;;;;;;;::::::::::,,,,,,,,:::::,,,,,,,,,:::::::;;;;;;;;iii*******+++++++++++****iii;;;;;iiiiiiiiiiiiiiiiiiii****+++###zznnxxMz` 
  .xnnz####++****iiiii;;;;;;;;;:::::::::,,,,,,:,::,::,,,,,,,,,,,:::::::::::;;;;;iiii**********+++*****i;;;;;;;;;;;iiiiiiiiiiiiiii****+++###zzznxxxMi  
   #nnz###++++***i*iiii;;;;;;;;;;;;::::::::::::,,,,,::,,,,,,,,,,,,:::::::,,:::;;;;;;iiiii************ii;;;;;;;;;iiiii****iiiiiii*****+++###zznnxxxM.  
   ixnnz##++++*****iiiiiii;;;;;;;;;;;:::::::::,,,,,,::,,,,,,,,,,,,::::,,,,,,,:::::::;;;iii**********iiiii;;;;;;;iii****+****iiii*****+++##zznnnxxM#`` 
   .nnnzz##+++*****iiiiiiii;;;;;;;;;;::::;::::::,:,,,,,,,,,,,,,,,:::::,,,,,,,,,::::::;;;iiii*********iiiiiiiiiiii*******+*****ii***++++###zznnxxxM;   
   `+xnzzz#++++****iiiiiiiiii;i;;;;;;:;;;;;;;;:::::::,,,,,,,,,,,,:::::,,,,,,,,,:::::::;;;;ii*************iiiiiii********+++********++####zzznxxxxx`   
   `:xnnzz##+++****iiiiii*iiii;i;;;;;;;;;;;;;:::::::::,,,,,,,,,,:::::,,,,,,,,,,,:::::;;;;;iii****************iii********++++++*****+#####znnnxxxM*`   
    `#nnzz###++*+***ii****iiiii;i;;;;;;;;;;;:::::::::,,,,,,,,,,,,:::,,,,,,,,,,,,,::::;;;;;iiii************************+++#+++++***++####zznnxxxxx.    
    `;xnnzz##++++***ii****iiiii;;;;;;;;:;;;;::::::::,,,,,,,.,,,,,,:,,,,,,,,,,,,,,,::::;;;;;iiii**+++++*++**********+++++++++++++*+++####znnnxxxM+`    
    ``zxnzz###++++*********iiiiii;;;;;;:;;;::::::::,,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,::::;;;;iiii***++++*++++***++*+*+++++++++++++**++####znnxxxxM, `   
      ;xnnzz##+++++********iiiiiiii;;;;;::::::,:,,,,,,,,,,....,,,,,,,,...,,,,,,,,,:::::::;;iiiiii****+++++++++++++++++++++++++++**++###zzznxxxM#      
      `#nnzzz##++++*********iiiiiiii;;;;::::::,,,,,,,,,,,,,,,,,,,,,,.......,,,,,,,:::::::;;;iiiiii**+++++++#+++++++++++++++++++*++++###zznxxMxM,      
      `:nnnzz##+++++******i******iii;;;;;;::::::::::::::::::::::::,,,,,,,,,,,,,,:::::::::;;;ii;iii****++++++++#+++++++++++++**+++++##zzznxxMMM#`      
       `+nnnzz###+++*****ii*****++++**iiii***iii*iiiiiiiiiiiiiiii;;;;:::::;;;;;;;;;;;;;;;;;iiiiii****+++++++#########+++****+++++++#zzznnxMMxM.       
       `,znnzzz###+++***************++##zzzzz####+++++++++++++++++++******+**++++++*******++***+*+++++++###zzznnxxxnz#++***++++++##zzzznxMMxM*        
       ``*nnnzz###+++********iiiiii;ii*+++##++++++++++####+####################zz#######zzzzznnnnnnnnnnnxxxxxxxnnzz#+*******++++###zznnxxMxxx`        
         .znnzzz###++*********iiii;;;;;iii***************************++++******++*+++####zzzzzzzznnnnnnnnnzz###+++**********++++##zznnnxMxxM;         
          ;znnzz####++*******iiiiii;;;;;;;iiiiiiiiiiiiiiii;;;;;;;;;;;;iii;;;;iiiiiiii*****++++###########+++++++++*********++++##zznxxxxxxMz`         
          `+znnz#####++*******iiiiii;;;;;;;;;;;iii;;;;;;;;;;;:::::::::::::::;;iii;;iiii****+++##++++++++++++++++***********+++###znxxxxxxxM,          
           .zznnz#####+++*********iii;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::;;;;;;;iiii****+*********+++++##++++**********+++###znxxxxMxxMi`          
          ``;zznzz#####++**********iiiiii;;;;;::::::;:;;;;;::::::::::::::::::;;;;iiiiiiiiiii********++####+++++**********+++###znnxxxxxxMz`           
         ` ``+#nnzz#####++*********iiiiiiii;;;;;::::::::::::;;::::::::::::::::;;;;;iiiiiiii*******+++###+++++++++**++++++++###znnxxMxxxMx.`           
            `.##znzz#####++*********iiiiiii;;;;;;;;:;:::::::::::::::::::::::::::::;;;;;iii****++++++##+++++++++++++++++######znnxxMxxxMM:`            
              ,##zzzzz####+++*******iiiiiiii;;;;;;;;;;;;;:::::::::::::::::::;;;;;;;iiiii***+++++++++++++++++++++++++++######znnxxxxxxMM*``            
               iz#zzzz#####+++++********iiiii;;;;;;;;iiii;;;;;;;;;;;;;;;;iiiiiiiiiii*****++++++++++++++++++++++++++++######znnxxxxxxxMz``             
               `*z#zzzz####++++++********iiii;;;ii;;;;iiiiiiiiiiiiiiiiii**************+*++++++******++++++++++#++++#######znnxxxxxxxMn.               
               ``+z#zzzz###+++++++****iiii*iiiiiiii;;;iiiiiiiiiiiiii********************************++++++++####+#######zznnxxxxxxxMx,                
               ` .zzzzzz#####++++++****iiii*iiiiiii;;i;iii;;iiiiiii*iii****iii********************++++++++###########zzznnxxxxxxxxMM:                 
                  .znnnnzz####++++++**********iiiiii;i;;iii;iiiiiiiiiiii*iiiiii***iiii***iiii*****++++++############zzznnxxxxxxxxMM;                  
                  `,nxxxnzz#####+++++***********i*iiiii;;iiiiiiiiiiiiiiiiiiiiii*iii***iiiiii******+++###############znnnxxxxnxxMMWi`                  
                   `,xMMMMnz####++++++*************iiiiiiiiiiiiiiiiiiiiiiiii**iiiii***iiiii******+++#####z##zzzz##zznnnxxxxnxxMMWi``                  
                     ,MWWWWMnz###+++++++***********iiiiiiiiiiiiiiiiiiiiiiiiiii*iiii****iii******++++######zzzz###zznnxxnnnnxxMWWi                     
                     `,MWWWWMxz####+++++***********iiiiiiiiiiiiiiiii;iiiiiiiiiiiiiiiii*ii******++++######zzzz##zzznnxxnnxxxMMWWi`                     
                      `,MWWWWMMnz###+++++++*********iiiiiiiiiiiiiiiiiiiiiiiiiiiiii****ii*****++++++++####zzzzzzzznxxxnnxxxMMWW;`                      
                        .nWWWWWMxzz###+++++***********iiiiiiiiiiiiiiiiiiiiiiiii**********++++++++++######zzzzznnxxxxxnxxMMMWM:                        
                        ``#WWWWWMxzzz###++++*********iiiiiiiiiiiiiiiiiiiiiiiiii*iii*****+++++++++#######zzzzznnxxxxxxxMMMWWn,`                        
                          `*WWWWWWxzzz####++++*********ii*iiiiiiiiiiiiiiiiiiii*********+++++++++#####zzzzzznnnxxxxxxMMMWW@z``                         
                           `:MWWWWWMz#######+++********ii*iiiiiiiiiiiiiiiiiiii******++++++++++#######zzzznnnxxxxxxMMMWWWW*`                           
                           ``.zWWWWWMn#######+++*********iiiii*iiiiiiiiiiiiiii*******++++++#######zzzzzznxxxxxxMxMMWWWWx:`                            
                              `*W@WWWWnz###z###+++*******i****iiiiii****************++#+++#######zzzzznnxxxxMMMMMWWWWW#.`                             
                                ,n@@@WWxz#####z##+++***********iii******************++#########zzznnnnxxxxxMMMMWWWWWx:                                
                                 `*M@@WWMnz########++++**************++*++********+++++####zzzzzznxxxMMMMMMMMWWWWWM+.                                 
                                   .#W@@WWxz######z###++++++*+++****+++++++++*++++++######zzzzznnxxMMMMMMMMWWWWWWn: `                                 
                                     :n@@W@Mnz###########++++++++++++++++++++++++++#####zzzznnxxxMMMMMMMMMWWWWWx;`                                    
                                     ``;xW@@WMnz############+++###++#++##++++########zzzznnxxxxMMMMMMMMMMWMWWxi``                                     
                                    `  ``;x@@@Wxzz#######z#zzzzz###zzzzzzz###zzzzzzznnnnxxxxxMMMMMMMMMMMMMMxi``                                       
                                          `:zW@WWxzzz#########zznnnnnnnnnnnnnnnxnnxxxxxxxxxxMMMMMMMMMMMMWz;`                                          
                                           ``,+M@WWxnzz###########zzznnnnnnnnnxxxxxxxxxxMMMMMMMMMMMMMMx#:```                                          
                                           ``  `izW@WMnzzzzzz########zzzznnnnnnnxnxxxxxxMMMMMMMMMMMMzi.    `                                          
                                                  `;zM@Wxnzzzzzzzzzz##z#zzzznnnnxxxxxxxxxxxxMMMMxzi.                                                  
                                                   ```:+xWMxnnzzzzzzzzzzzzzznnnxxxxxxxxxxxMMxx+;.``                                                   
                                                       ``.:*znMxnnnnnnzzzzznnnnnxxxxxxxMx#+;,`  `