#####################################################################################zzz##zzzz#######zzzzzzzzz#########zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
################################zzzzz###nxxxz###znxxnz##zzzzzzzz###zzzzz#zzzzz#zzzzzzzzznxMxnzzzzzzzzzzzznMMxzz#znxMxnz#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
###############################n*+++zzzx*,,,#x#nn;,,;nnn*++x+++#z#zz++++M++++#x#+++*xznM*,,:#Mn#++++#xnnM+,,:zxzM+,,,+xzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
#############################zn#    ;nx,     ;xz     `zn   n.  ;n#zi   .@.   iW.    nzM.     iW:     .xM:     +M:     ,x#z##zzzzzzzzzzzzzzzzzzzzzzzzzz
############################zxM+    ,Mn  `*  `W,  ;:  :n   n.  ;n#zi   `x`   iW`    zn#  `*   M:  .`  *n   i  `M   +   xzz#zzz####zzzzzzzzzzzzzzzzzzzz
#####zzzz##################zxxM;  . `Wn  `x  `M.  *+  .n   n.  ;n#zi    z    ix  .  +x*  .M   n:  ;*  i#  `z   n   M`  nz#zzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzznxxMMxW:  :  Mx   +xxxM`  **  `n   n.  ;nzn*    i    in  :  iMi  .M   n:  ;*  i+  `n   n   *xxxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
nnnnnnnnnnnnnnnnnnnnnnnxxMMMMMW` `*  nW.   :xxM`  *#::;n   n.  ;xnx*  ` . `  i#  *  :Wi  .M:::n:  ..  #+  `n   x:   ,xnz###zz#####zzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzznxxMxMMx+zM` .+  #@x.   `nM`  *MMMMn   n.  ;xnx*  .   ,  i*  #` `Wi  .MMMMM:     iW+  `n   xx,   `#n##zzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzxMMxxxM+;iz  :z  i@WMi   `W`  *n###n   n.  ;nzn*  :   ,  i:  x, `Mi  .M###M:  :,  #+  `n   xnM*`  `xz#z#######zzzzzzzzzzzzzzzzzzzz
######zzzzzzzz#####xMMxxnxn;;i#  ,i  :M+++#   n`  **  `n   n.  ;nzni  ;   ;  i,  *.  ni  .M   z:  ;*  i+  `n   x+++z`  #z#zzzzz#zzzzzzzzzzzzzzzzzzzzzz
##################zMxMxxnM+;;*+      .x  `M.  z.  **  .n   n.  ;nzni  *` `*  ;.      z*  .M   n:  ;*  i+  `n   n   x,  +zzz###zzzzzzzzzzzzzzzzzzzzzzzz
##################xMxMxxxMi;;+i  .;  `x   x`  n,  *i  :n   n.  ;nzni  *. `+  :   ;.  *#  `n   M:  ;*  iz  `#  `M`  n,  +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
##################xMMMMxxxi;;#:  *W`  x,  `  `M*      +n   n.  ;nzni  +: ,#  ,  `M*  ;x`  `  ,W:  ;*  iM`     :W:  `   nzzz##zzzzzzzzzzzzzzzzzzzzzzzzz
#################zMMMMMxMniii#,.,*W,..zn:`  ,znxi`  `+xz...n:..inzn*..#i.iz..,..,x*..:Wz.  `;xx;..i+..ixn,  `;xzx;`  .#xz#zzz#zzzzzzzzzzzzzzzzzzzzzzzz
#################zMMMMMxMziii#MxxnnMMxxnMMMMMMz#nxxxxn#nxMxnxMMxzzzxxxnxMxnxMMMMxnnMMMnnMxxxxzzxMMxxMMxznMxxxxzzzxxxxMnzz####zzzzzzzzzzzzzzzzzzzzzzzzz
#################zMMMMMxM#iii*i;;i#z#+znz#zxnMz################zzzz##################zzzz#zzzzzz#####zzzzzzzzzzzzzzzzzzz#####zzzzzzzzzzzzzzzzzzzzzzzzz
#################zMMMMMxM*iiii::;zMx+*#zi*#+zMz################zzzz#################zzzzz#zzzzzz#####zzzzzzzzzzzzzzzzzzz####zzzzzzzzzzzzzzzzzzzzzzzzzz
#################zMMMMMxxiiii;::;xWW#*#+;nMn+x#################zzzz##################zzzz#zzzzzz####zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
#################zMMWWMxzii;ii:;izWW#i#+ixWM+z#################zzzz##################zzzz#zzzzzz####zzzzzzzzzzzzzzzzzz#zzz#zzzzzzzzzzzzzzznzzzzzzzzzzz
#################zxz+znxzii;;i;;i+nx+i++izWM+##################zzzz##################zzzz#zzzzzz####zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+zxxzzzzzzzzzzz
#################z+*ii*xzii;;iii*+z#ii*#**zz+##################zzzz##################zzzz#zzzzzz####zzzzzzzzzzzz########z#zzzzzzzzzzzz+i+znzz#zzzzzzzz
##################+iiiixnii;;;ii****iii+#+##++#################zzzz#################zzzzz#zzzzzz####zzzzzzzzzzz##zzzzzzz#zzzzzzzzzzzz#i*+#zz+izznnzzzz
##################*;;iixnii;;;i*****iiii++***+#################zzzz##################zzzz#zzzzzz#####zzzzzzzzzzz##z######zzzzzzzzzzz#i*+#zz#iinxxnzzzz
##################*i**ixniii;;i*++++iiii*+**++#################zzzz#################zzzzz#zzzzzz#####zzzzzzzzzzzzzzzzz#z##zzzzzzzzzz*i+#zz#**#zxxzzzzz
##################ii*i*xniiiiii*++++iiiii*++++#################zzzz#################zzzzz#zzzzzz#####zzzzzzzzzzzzzzzzz##zzzzzzzzzzz+;*+#z#*++#zzzzzzzz
#################z*;iii#+iiiii*+++++iiii*+z####################zzzz#################zzzzz#zzzzzz####zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzii+#z+**+#zzzzzzzzz
###################iiii**iiii**++++***#znnn#zz#################zzzzzzz##############zzzzz#zzzzzz####zzzzzzzzzzzzz#zzzzz#zzzzzzzzzzzi*+#+i*+#zzzzzzzzzz
###################*;ii*iiiii**+++***#nnnnz#zzz###############znn*+nnnnnz###########zzzzz#zzzzzz####zzzzzzzzzzzzzzzzzzz#zzzzzzzzzz#*+#+i**+#+#zzzzzzzz
####################i;i*iiiiii*****i**+#zz##zzz##############znz+i*#z##nn###########zzzzz#zzzzzz####zzzzzzzzzzzzzzzzzzzzzzzzzzz##zz+++i**+*;:i+zzzzzzz
############z########*i*iiiiiii***ii**++####################zn#*ii*#+ii+nz##########zzzzz#zzzzzz####zzzzzzzzzzzzzzzzzzzzzzxzzzz*:#xxz***++i;;i*zzzzzzz
############z########zz+iiiiiii***i***++###################znz+*ii*#;ix+*#z#########zzzzz#zzzzzz####zzzzzzzzzzzzzzzzzzzzzzxxzz+::i#nxn#++i+i;i*+zzzzzz
############z########zWniiiiiii***i*+###zznz###############zn+i;*#i+:in#**n#########zzzzz#zzzzzz####zzzzzzzzzzzzzzzzzzzznMMnz#;:i*++znxn#+#+++*i+zzzzz
############z#########nx*iiiiii***#z###zzxMxz#############z#n*::#M*i**+#+*#z########zzzzzzzzzzzz####zzzzzzzzzzzzzzzzzzzzzxnnz#;;*+++++zxxnzznn+*+zzzzz
###########zz##########n*iiiiii+#zz#++##znMMn#############z#z;:;*#*;*******#########zzzzzzzzzzzz####zzzzzzzzzzzzzzzzzzzzzzznnz+ii++#++*+zxxzxx#+#zzzzz
##########zzz##########z*iiiiii*+*iii*++###zz#############zzi;ii++;;;*ii***+########zzzzzzzzzzzz####zzzzzzzzzzzzzzzzzzzzzzznnnzi;+##+****#nxxnz#zzzzzz
##########zzzz##########+*iiiiiiiiiii**+++++##############zni;iii;;;+z+i*+++########zzzzzzzzzzzz####zzzzzzzzzzzzzzzzzzzzzzznnnz*;+##+*i**+#n#zzzzzzzzz
#########################*iiiiiiiiiii***+++++#############nni;;;;;;+nz+*+#+*+#######zzzzzzzzz#######zzzzzzzzzzzzzzzzzzzzzzzznnz*i#z#+*ii**#xxzzzzzzzzz
#############z###########+*iiiiiiiiii***+++++#############nn*;iiii;iii*+##+++#######zzzzzzzz+***++##zzzzzzzzzzzzzzzzzzzzzzzzznz+#zz#+*ii*+#xxzzzzzzzzz
############zzz###########+***iiiii****+++++##############zx*iiiii;;i*++n+***#######zzzzzzzz**++++*+++zzzzzzzzzzzzzzzzzzzzzzzzzz#zz#+***+#zzzzzzzzzzzz
##########################z#+***iii***+++##################z*iii**i;*nMx+**i*+######zzzzzzz++++**#++*;#zzzzzzzzzzzzzzzzzzzzz#zzzzzz#+**+zzzzzzzzzzzzzz
##########zz#zz###########zzz#+******++#####################+iiiii*+nz+++**i**######zznzzzzi+++iizzz#i+zzzzzzzzzzzzzzzzzzz#i*#zzzzz##+#zzzzzzzzzzzzzzz
##########zz#z#############zzzz#++**++#zzzzz#################ii;;;;;;i++*iii**######zzzz##+*+**+#z#z##+zzzzzzzzzzzzzzzzzz#i,;+#zzzzzzzzzzzzzzzzzzzzzzz
#####zzzzzzzz##############+#zzzz####zzznnnz#################ii;;;;;;;iiiii***#######+**++++***#z+*z#z#zzzzzzzzzzzzzzzzzz*;::*#zzzznnnnzzzzzzzzzzzzzzz
#####zz#zzzzzz#############++#zznnnnnnnnxnz#################z*i;;;;;;;;;;ii***++#+***++++++++++++++nnn#zzzzzzzzzzzzzzzzz#;;;;*#zzzznnnzzzzzzzzzzzzzzzz
######zzzzzzzz#############***+#znnnnnnnzz###################+ii;;;;;;;;;i****+*+#++*****++###++++#nxn+#zzzzzzzzzzzzzzz#i;::;*#zz##nnnzzzzzzzzzzzzzzzz
#######zzzzzzzz###########+***++znnnnnnz######################*i;;;;;;;ii*++++znz#++****++##z++++#znx#i*#zzzzzzzzzzzzzz+;;:::*#zz#+nnnzzzzzzzzzzzzzzzz
#######zzzzzzzz##########z#****+#znnnnnz#####################z#*i;;;;;i*+#####znnnz#+**+++#z#++++zz#+#nzzzzzzzzzzzzzzz#;;;;;;i*###+zzzzzzzzzzzzzzzzzzz
zz####zzzzzzzzz#########+##****+#znnnnz#######################z+iiiiii*+#zzzzzxxnnnn#*++##zz++++#zz#MWMnz###zzzzzzzzzz*;;;;;ii*+z##zzzzzzzzzzzzzzzzzzz
##zzzzzzzzzzzzz########*;#z*i**+#znnnnz######################+#n**i**+#znnnnzxMMxnnn#++##zz+++++zz#xWMx++++++#zzzzzzz#;;;;;iii*#zz#zzzzzzzzzzzzzzzzzzz
###zzzzzzzzzzzz######+**+zxz*i*+#znnnzzz############+#++++++##zxz+++##znnnnnxMMMMxx#++#zz#+++++#zzzMMM#+++++**+#zzzzz*;;;;;ii*+#zz##zzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzz####+;;*#nxnz#+++#znnzxnz########z#+#+**++++##znnnzzznnnnnxMMMMMxz++####+++++++zn#xMMM+++*;::;;i*+#z#;;;;;ii**#znz##zzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzz*i*;i##+#zzz##zznnnxnzzzzzzzzzzz+#***+++##zznnnnnxxxxMMMMMxx#+++##++++##+#+#nzzMMMM++*;:::;::;::i*;;;;;ii*+#znz##zzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzz##;;*++nx+###znxxxxxxMxzzzzzzzzzzz+z++++++#znnnnnnnnxxMxxxn#+++++#++++#######znznMMMx**;:::::;;;:i+*;;;;;i**+#znz##zzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzz#ii+;i#nxM##**#xMMMWMMMxzxn#zzzzzzz+#+z##+#znnnznnnnzzzzzzz#+++++***++########nnznMMMx;i:::::::;;i++*;;;;ii**+#znz##zzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzz**;++*nnMWx#*+nxxxMMMMMn#MMzzzzzzznz++nnz#znnnznnnzzz#####+++*****+++########nxzzxMMMxii::::::;;;++++;;;;ii*+#zzzz##zzzzzzzzzzzzzzzzzz
##zzzzzzzz#z###z+#i+znxMWWM#+zxxnnxxxMxn#MMzz####znn#+nxnznz+znnnzz+***+***iii***++##########xnzzxMMMM+;:::::::;*++#+i;;iii*+#zzzz##zzzzzzzzzzzzzzzzzz
###############zzz#znnxzMMM#znzxnnxxxxMz#MMnnz###znn#+#nnnz+*+zn#+**+*i;;;;ii**++#+#########nxzzzxMMMM#;:::::::;+++##i;iii**+#zzz##zzzzzzzzzzzzzzzzzzz
###############zzzxMn#+;nMMMMM#nznxxxxx##MMnnn##+nzz#+++#z+++++++*i;::::;;ii*+++*++#########xnzzzxMMMMni;;;;:::;+++##*iii**++#zzzz#zzzzzzzzzzzzzzzzzzz
################znxnz#+;i+nMMW#nzznnnnn+zMMnnxz#+n#z++++++*+**i;::,,::::;i*++***++#########zxnzzzxWMMMxi;;;;;;;:+++##+iii**+#zzzzz#zzzzzzzzzzzzzzzzzzz
##zzzzzz#zzzz##zznxzz#+:::;nMWn##zznzzz+nMxnnxxz+z+++*****;::,:::;;iii;:;*+***++++#########nxzzzznWMMWW+iiii;;;;*++###+i***+#zzzzz#zzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzz###xnx##+*::::;*+z#zzznznn#zxxnxxxz+z++****i*+::;i*i**i:,,;*i****++##########zxnzzzzzWWWWWzii+#ii;;i#+#+##***++#zzzzzznnnnnnnnnnnnnnnnnnn
zzzzzzzzzzz#z###nxM#++z#zi;*;;i+nnnxnnxxxxnnnnxn+z++******#i++*i;;:,..:;iii**#zzz##+######zxzzzzzzMWWW@M+***iiii;+++####+*++#zzzzzznnnnnnnnnnnnnnnnnnn
zzzzzzzzzzzzz###zzxn#+xMMMMM*ii+zz#zznnxxxnnnnxn##+++****i#i*ii;::::::;;ii*#nnnnz++*######nnzzzzzzn@W@@@n++****ii*#+########zzzzznnnnnnnnnnnnnnnnnnnnn
zzzzzzzzzzzzzz##zznn+#MMMMMW#ii+zz+##znxxxxxnnnn###++****i#iiiii;;;;;;;ii+zzzzznx#**#####zxnzzzzzzzW@@@@Wz##+++**iz#+###zzzzznnnnnnnnnnnnnnnnnnnnnnnnn
zzzzzzzzzzzz####zznx#xMMMMMWM*i+zz####xnMxxxnnxn###n+##*+*#i****;ii;;iii*z#zzzznxni+#####nxzzzzzzzzn@@@@@Mxnz###+*#z####zznnnnxxnnnzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzz#zz#z#zxMMMMMMWWW#i+zzz##znxMMxxxxxz##znznx+nz+**i**i**ii*i*+#zzznnnxx;#####zxzzzzzzzzzzx@@@@@WWnzzz###zzz#zzznnxxxxnnzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzz###nznMWWMMMMMWWni+nnnxnxxMMMxxxnn#++#znzx#zx*#*****i*i*ii*++znnnnnMn*#####nnzzzzzzzzzzznMMMWMnzzzzzzzzzzzzznnnnxxnnzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzz#++zznxMMMMMWWWWni+nnnxxxxMWMnnnnnz++##nzxzzn+#i****iii;ii**+znnnnxx+#####znzzzzzzzzzzzzzz#+zzzzzzznnnzzznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
zzzzzzzzzzzzz#+#zznx*ii;+xMMn+i+zzzxnxnM@Mznnnxz++##nznn#nz+*iiii;;ii*****+nnnxx#+###znzzzzzzzzzzzzzzz##+znnznnnnnnnnnnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
zzzzzzzzzzzzz###zznx;::::i*iiii+nnnxxxnM@M#xxxxn+++#nnzx#zn***ii++ii*****+++###++###zzzzzzzzzzzzzzzz####+znnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
zzzzzzzzzzzz##znnnxx;::::::;;ii+zzznnxnzz#+xxnnn####nnzxzzx+***i##i*****+++++++++#nnzzzz####zzzzzzz###+++znnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
zzzzzzzzzzzz##+zznxn:::::::;ii*#zz##znn#++nxxnnn####zzzM#zx+****+zi*****+++++++#zxMxnzz#####zzzzz####++++znnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
zzzzzzzzzzzz###z#nxz::::::;iii*zn####zn#+#Wxxnxnzzz####z+zx+****+z******++++++zxxxxxxxxnz####zz#######++#znnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
zzzzzzzzzzzzz##zznM#::::;+nMnz*zzz##+zx#+#Wxxxxxzzzz####++#+****+z*****+++++zxxxxxxxxxxxxxnzz#########++zzznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
zzzzzzzzzzzz#zzzzxM*::::ixWWWM#xnnnzzxxz++Mxxnnnzzznz#++++++*****n+****+++##znxxxxxxxxxMMMxxnzzz########nnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
zzzzzzzzzzzz++#zzxMi::::+MMWWz#nnznnnnxn#zWxxnxn#znzzz##++++++*+##*+++++##+++++zxxxxxxxMMMMMMxxnnzzzzzznnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
zzzzzzzzzzz#++#zznx;:::iMMMMz+#nzznnnnxxnzMxxnxxnnz##zzxnz#++++z#*ii*++++*******+zxxMxMMMMMMMMMMMxxxxxxxnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
zzzzzzzzzzzz##zzzxn;:::;xMx##zznznnxnnxxxnznxnxxzzz###zxxxMz###+*i;;;iii*******++++znxMMMMMMMMMMMMMMxnxxnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnzzzn
zzzzzzzzzzzz#znzzxzi;;;;#++###znzzznnnxnnnznnnnnzzzzzzzxxxx+++**i;;;;;iiiii***+++++##zznxMMMMMMMMMMMnnxxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnzzzzn
nnnnnnnnnnnn+#zznMz+++++++####znzznxnnxxxxnnnnnnnnnnnnnxxxn*iiii;;;;;iiiii***+++++###zzzzznxMMMMMMMMxxxnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnzzzzn
nnnnnnnnnnnn#zzzxxzz##zz##zzzzznzzz##znxxxxxxxnnnznnnnnxxxz*iiiiiiiiiiiii***+++++####zzzzzzzzznnnxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnxxnnnzzzzzzzzzzzz
nnnnnnnnnnnnznnnMxzz#####nnnnnxxz######zMMxxxxnnz#nnnnnnxMz**iiiiiiiiiiii***++##znxMMMMMMxnnnzzzzzzzzznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnzzzzznnnnnn
nnnnnnnnnnnnxxxMMMxn#++++nxnxxMn########nMxxxnn###znnnnnnMn+**iiiiiiiii*++znxMW@@@@@@@@@@@@@Wnznnzzznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnnnnxxxxMxxn####nMxxxxx#zzz#zz##zMxMxnz#zznnnnnnnxx#++****+#znxMWW@@@@@@@@@@@@@@@@@@@@Mxxnnnxxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnnnxxxxxMxxxzzzzMMxxxxx######+##zMxMxn#+z#nnnnnnnnMn#zxxWW@@@@@@@@@@@@@@@@@@WWWW@@@@@@Mnxxxxxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnnnxxxxxMxxxnzznMMxxxxMz####z###xMxMxnz#zznnnnnnnnnxnxWW@@@@@@@@@@@@@@@WW@WW@@@@@@@@@Wxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnnnxxzznxxxxnzznMMxxxxMxzzz#z##zMMMMxxzznnnnnnnnnnnnnnxMW@@@@@WW@W@@@@@@@@@@@@@@@@@@WWxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnnnznzznxxxxnz+znMxxMxMMxnzzzznMMMMxxxnznnnnnnnnnnnnnnnnM@@@@@@@@@@@@@@@@@@@@@@@@WWWWMMnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnnnzzzznxMxxzz*zzxMMMMxxxxMMMWMMMxxxnxnzxnnnnnnnnnnnnnnnx@@@@@@@@@@@@@@WWWWWWWWWWWWMMMMnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnnzznnnnMxnnzzzzznxxxxxxxMMMWWMMMMxxxxnnxnnnnnnnnnnnnnnnMWWWWWWWWWWWWWWWWWWMMWWWWWWWWWWMnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnnz#zzznxxnnzzzznnnxxxxxMMMMMMMMMMxMxMxnxnnnnnnnnnnnnnn#nWWMMMMMMMMMMMMMMMWWWWWWWWWWWWMnznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnn##zzznxxnnzznxMMMMxxMMMMMWWMMMMxnxxxxnnznnnnnnnnnnnnn#+nWWWWWWWWWWWWWWWWWWWWWWWWWMxz##znnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnnz#zzznMxnzzxxMMMMMMMMMMWWWWMMMMnnxxxxnnnnnnnnnnnnnnnnz++#zxMWWWWWWWWWWWWWWWWMMMxz##zzzznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnn##zzznMxxxxxxMMMMMMMMMMWWWMMMMMxnxxxnznnnnnnnnnnnnnnnn+++++#znxxxxxxMMxxxxnnz#+#znnnz##nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnz++###nxMxxxxxMMMMMMMMMMWMMMMMMMMnMxxxnnxnnnznnnnnnnnnnz+++*******+++####++#####zzzzznzzznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnn#+##zxMxxxxxxMMMMMMMMMWWWMMMMMMMnxnzzzznnnnzzzzzzzzznz**#+**********+++#+#####zzzzz#znzzzznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnn#+z#nMMxxxxxxxMMMMWWMxWWWWMMMMMMnxnzzzznzznnnzzznnnnz+;i++++*****+++++#####zzzzzzz#***zznnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnxnnnxnzxxnxWMMMMnnWMMxxxMxxxMWMxxxWMxxnWxnnnxxnMxnnMnxnnnnx#;+nnnxz+zxnnxz++nnnnnnnnxxnnxzznnxnnnnnMMnnxMnxxnxMnnxxnnxnnnxnnMnnnnxxnnnnMxxnnnnxnnn
nnnn+   :xx:   .xW*`  .zx  :+  *xW*   n:   W,   +xM;   .n#    `#z#`  `#xi`  `+n#x`   `  *i  +    +:    ,M` +n    ;n  ++  #` `i  z.   :+    `nz    nnnn
zzzn*   `M#  :` :n  ,` `n  :+  +nM*   #.   W.   iM+  ,  :z  ,` .M` .` `x  .. `n+x`  .,  ;:  z   .#:  ,  +; ;+ `` :+  i*  n` `i  z.  `;+  ,  :z  `.nnnn
zzzx: . `M+  #:,;#  #,  n  :+  +nx*   i`   M` . :Wi  n` .z  *: `n  ;:  z  i*,,n+x` `Wx  ;,  x  ,MM:  n  iz .; i, ,i  :;  x` .i  z. `MW+  +. .z  *Wxnnn
zzzM. ;  nz  `+@W#  #, `n  :+  +nn*   . `  n  ; .Wi  n` .z  ;, .n  ;:  n`  ;Wx#+x` `nx` ,. `M  .nx:  +  *M``. z; ,:  ,: `W` `,  z. `nx+  *` :z  ;xxnnn
zzzM` *  #xi   ;W#  #MMxn  :+  +nn*  `  .  #  +  Wi  nMMMz    `nn  ;:  x+`  ,n#+x`   *, .` ,M    #:    :MM:  `Wi .. `.. .W`     z.   ;+    .xz    nnnn
nnnx  z. inW#`  ;#  #zz#n  :+  +nx*  ,  .  * `n  ni  nzzzz  ;. :n  ;:  xMx.  .x#x` `i#; `` :M  `iz:  i  #x+  ;M+ ```,`` :W` `,  z.  ;++  ;` iz  ,ixnnn
nnnz  ,` ;n::+` `+  #, `n  :+  +nn*  i `: `; `:  #i  n` .z  *: `n  ;:  n::*,  n#M` `x+* `  *x  ,xn:  n  ixz  +xz ` .;`` *W` .i  z. `MM+  +. .z  iMnnnn
nnn+     .z  z, `+  +, `n  :+  +nn*  * `i `,     *i  z` ,z  *; `n  ;:  n  i*  zzM` `xz#    +n  .xx:  n  ixz  +xx   :*   +M` `i  z. `nx+  +. .z  ixxnnn
nnxi  n; `x  `  .x` `  :x  :+  +nn*  + .i `` .M` ;z  `  *z  *: `M. `  .M. ``  xzM`   .x    zn    ::  n  ixz  +nM   *#   zM` `i  z.   `+  +. .z    +nnn
znx:``x;``n#,``:nM#,``iMn``:+``+nn*``z`:i````.M.`,W+.``*M#``*;``nz:``:nzn;``,#xzx.```,x````zz````;:``n``ixz``+nx.``+n```nx``.*``z,```.+``#,`.z````+nnn
znxWWWM#zxxxMWWWMxMMWWMxMWWWWMMxnnWWWMWWWWWMMn#xMMxxMMMxzxMMMMMn*i#xxz+*#xMMMnzznMWMxz+zxnn++nxxxnxMMMMWMnxMMxznMMMxxMWMxxMWMMMMMMWWWMMMMMMWMMMWWMxnnn
z#*+++*+#*+##z*++*+nnxxxxxxMxzzzzzMMxnnnxMnz##+zzzxnzzzzzzzzzzz*;;;iii**+#zznzzzzzzzi;;:;;;iiii****zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnz
zzznn**nz#+nn#zznnnnnxxxxxxMMzzzzzMMxnnxMMnzzzznnxxnzzzzzzzzzzz*;;;iii**+#zzzzzzzzzz*;;;:;;;iii****zzzzzzzzzzzzzzzzzzzzzzzzzzzzznnzznzznnnzzzzzzzzzzzz
zzzzzxnzz##zznnnnnxnMxMMxxxMMzzzzzMMxnnxMMzzz##zznnzzzzzzzzzzzz+;;;iii**+#zz#zzzzzzz+;;;;;;;iii****#zzzzzzzzzzzzzzzzzzzzzzzzzzzzznzzzzzzzzzzzzzzzzzzzz