::::::::::::::::::::::::::##:::::;Mz:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::zWM:::;;iMnn;M#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::+;xx+inM@@W@#Mnxx:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::+@#nxnx##nn#zMWxzn:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::nx##WW+W@@@@#*W@xn:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::zn#n#nxnxnn+zxMW@i:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::*@@#x*#n*i#M+#ninn#::::::::::::::::;x;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::*M@n**#*##*+M+@*+M@:::::::::::::::;M#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::iWxWW#*xxM+**n*WWMzW:::::::::::::::nW;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::#nWzxM*ixM+*x+#@xMM*::::::::::::::z#+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::;Mnnzn*zM+z+zzxW@xi::::::::::::::+nx::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::i*:::::::::###WM*xW##zx+W@*:::::::::::::::in#;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::;n::::::::::+@#x*+zx@M**WWx+::::::::#*::::n;#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::x;::::::::::@@W+M@W#**#W#zz::::::::##:::ni:;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::;#;::::::z+::::::::::nn#WWM@**#@xxn;::::::::+#::#+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::;n*:::::in::::::::::;znnnzWW@@#@W@n*:::::::i#:*n:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::;zz:::::n::::::::::::*nM@@W@#nx*+nWM*:::::;x#n::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::#W#:::z::::::::::#Wx##Wx+n#WMz***+Wxi::::++:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::*Wz;:*i:::::::*MWznx+@x**xz*******x@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::;zx:::::::::z@n+@#@+#*************n@n:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::;::::;M@#*n##x#***************n#z::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:;:::z*:::::::::::;W@+*x##M+++zzzxMMxxM@@@@@@#@n#*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:*z#i:+z;:::::::::n@#*W##@W@MMMnzzz#++++++++++++zxM+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::*nxz+Wi::::::iz#@xnz##*************************+W+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::;#xWn::::#W#WMMznzxxnz*iiii*++*************i*iz@;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::;W@n+*W@@@zzznnxMxxxMzzzzzzzzzzzznMMMx+z@;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::z@***+@WMxn##+****i*+++++*************x#M::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::n@*#MMz***+nz#x@WnxWMnxzn+***********i*@*:::::::::::::::::::;;;++*;;;::::::::::::::::::::::::::::::::::::::::::::
::::::::::::##W@z**#xx@Wx@Wn#+###nnnnnnnnnnnnnnz#++@;::::::::::::::*#nWM@xnnnnnnWMxz*;:::::::::::::::::::::::::::::::::::::::
::::::++::::;#Wz***@@##@@@Wxnnz###+************#@W@n::::::::::::+xWMz*:``       `.:+x@x*:::::::::::::::::::::::::::::::::::::
::::;n@+::::::zzizM@Wxz+**i*********************xW#;zWM+;::::;#WW#,`                 .*xM+:::::::::::::::::::::::::::::::::::
::;zWxi:::::::*@M@@*****************************xi;xz+zWW:::*@@*`                       :xMi:::::::::::::::::::::::::::::::::
:i#z;::::::::::*x@Wi*************+#++***********z#x+**#*@i:#@M.                           :Wn;:::::::::::::::::::::::::::::::
+*::::::::::;zxziiWi**********#xnx##xxM#********z@+**WM*Mi*@W.                             `#W*::::::::::::::::::::::::::::::
:::::::::::+#*i+xW@**********nn*iiiiii*nM*i*****#n**z+M*WiW#+                                ;W#:::::::::::::::::::::::::::::
::::::::::##*+n#*z@z********x+ii*xnMniii+M*******#**n;WM**##:                                 ,Wn::::::::::::::::::::::::::::
::::::::::x**#@Wx*#x**z+***x+iiinz#zxiiii*x******x**n+;::+##,                                  ,Wn:::::::::::::::::::::::::::
:::::::::i@***x:W+***iMn**z#ii*nn###xiiiiizz*****@#**Mi::+##,                                   ,Wn::::::::::::::::::::::::::
::::::::::WWMMn#n**#z*nz**MiiiMx#z##Wiiiiiix*****MMz**xi:i###                                    ,Wz:::::::::::::::::::::::::
::::::::::;;;;iM***@Win@**niii#xn@z#M*iiiiiM*****M;M#*+x::W#@.                                    ,@*::::::::::::::::::::::::
::::::::::::::M+**n#M*@x*#niii*@zxz#xziiiiiM*****x:;W+*n#:*##M,                                    *W;:::::::::::::::::::::::
:::::::::::::n#**#@@z+@#*#niiiiii#n#zW+*iiix****in::+M**W;:+@#@+`                                   Mn:::::::::::::::::::::::
::::::::::::+n**+W#Mi*xzz*Miiii+#xM##MMxii*n****iM:::M+*n#::ix@#W#,`            ;n`                 ;@i::::::::::::::::::::::
:::::::::::ix***M+iMi*W@+*M+iiinMz####zMiix+****iW:;:*x*+x::::;#MW@Wn#;::.```.:z@#+                 `xx::::::::::::::::::::::
:::::::::::x+**x+:;W*iWW**+Miii#Mzznnzxxi+x******@zWMiM**W;:::::::;**+@##MxxxxM@Mn.                  i#i:::::::::::::::::::::
::::::::::#z*inn:::W+ixxz**zxii*xz#**iii*x*******@z*MWn**M*::::::::::i##z`     `                     `@z:::::::::::::::::::::
:::::::::;x**+M::::W+*#nW***zM#iiiiiiiizx********@**#Wn**W*:::::::i*#M##z++++++i::``                  zW:::::::::::::::::::::
:::::::::#z**Mi:::;@#i#Wx****+MMn+**+nMn*********W*#M##**W;:::*zMMx##;;;;;;;;*#nM@@@xz`               *#i::::::::::::::::::::
:::::::::W**iW:::*WM@+##z*******#zzzz+**********+@zM+x**+M::iMM*.      .;;       `,izn`               ,##::::::::::::::::::::
:::::::::@***W;:;W#*MW+#n+**********************zWx@M***M*:iWn`      ;zW@#:                           `Wn::::::::::::::::::::
:::::::::Wz**nz::*M**W+x#z**********************nM*n***xz::W#:      #M+;*x*i,;znn+.           `innz, `*@@x+::::::::::::::::::
:::::::::zW***W+::x+*i*M#z**********************MW*i*+M#::*#@` izM#;*;;;;;;+nx#i*MW,         :WM##zM.xM##z@x:::::::::::::::::
:::::::::;Wx**+WWMM***zW##xi********************@@n#nxi::;##@:.#W#i;;;;;;;;;;;;;;*##        `Mn;;;;z@@i;;;iWx::::::::::::::::
::::::::::*@z***+****xWz@#W#*******************z#*nx+::ix@@WWWxn;;;*z+zn;;;;;;;;;*#n        :#M@@znMnnn+;;;iW*:::::::::::::::
:::::::::::+@x****i*x@n*+W##n*+*************i**WM:::::iW@zi;;;ixi*n*`  ++#x##x*;;+Wz       `zM*i*zWi;;;#z;;;#x:::::::::::::::
::::::::::::iM@x#zxW+zW**x###M@z#**+**********x#*::::;W@*;;;;;;*M#`    in:   ,x;;#@i       xM;;;;;ix+;;;nz;;;Wi::::::::::::::
::::::::::::::*nnn#;:;@x*+#M#Wnnx@M@Wn+z#****z#n:::::z#+;;;;;;;;M,    +i      x;;;+;.     iWi;;;;;;+Wn;;iM;;;n#::::::::::::::
::::::::::::::::::::::+@M*+n*;;;;*@##x******n#M;:::::@M;;;;;;;;;+# ,;+;      `n;;;;;n`    x+;;;;;;;;*;;;;;;;;+x::::::::::::::
:::::::::::::::::::::::*n@n;;;;;;;x@n*****+W@#Wi:::::@z;;;;;;;;;;M*@#*    .:`:#;;;;;#:   `W;;*;;;;;;;;;;;;;;;i@::::::::::::::
::::::::::::::::::::::::*M;;;;;;;;nx****+x@ni;nz:::::@#;;;;;;;;;;n##x    *@#zn;;;;;;*z   `W*iWn;;;;;;;;;;;;;;i@;:::::::::::::
::::::::::::#xi::::::::;Mi;;;;;i#x@z*##znW#;;;x+:::::Wn;;;;;;;;;;i##+   ;####+;;;;;;iW`   nn;z@n;;;;;;;;;;;;;;W+:::::::::::::
:::::::::;#x#x+::::::::M+;;;;inx#++i*****Wi;+nn::::::n@;;;;;;;;;;;xM*   ####z;;;;;;;;@,   ,M@xin;;;;;;;;;;;;;;@*:::::::::::::
::::::::;W#::x;:::::::nz;;;;*@@**#z+***#W+#Wz*:::::::i@n;;;;;;;;;;+#ni` ,W@#;;;;;;;;;@i    #n;;;;;;;;;;;;;;;;i@;:::::::::::::
:::::::::;::*n:::::::+n;;;;i@##Mnxxx@z*nMi@;::::::::::z@#;;;;;;;;;;;;#nxnzi;;;;;;;;;;@+   ix;;;;;;;;;;;;;;;;;*M::::::::::::::
::::::::::::xi:::::::W#;;;*MMzi;;;;;i@nxMi@i::::::::::;##xi;;;;;;;;;;;;;;;;;;;;;;;;;;@n  `Mi;;;;;;;;;;;;;;;;;x+::::::::::::::
:::::::::::*n::*:::::@z;;+xi;;;;;;;;;n#x*;Mx::::::::::;#nM@n+i;;;;;;;;;;;;;+#*;;;;;;i@Mii.M;;;;;;;;;;;;;;;;;+M:::::::::::::::
:::::::::::M;:;@;::::nWi;i;;;;;;;;;;;M#i;;xW::::::::::;#+;*nW@WW@i;;;;;;;;;#@##;;;;#W#@MMWW;;;;;;;;;;;;;;;;+M;:::::::::::::::
::::::::::+#::*M:::::;xM;;;;;;;;*zz*z@##;;xx:::::::::::W+#x;;i+xn;;;;;;;;;;*W#@;;;##W+;;;i@z;;;;;;;;;;;;;;zM;::::::::::::::::
::::::::::x;::z+::::::;W*;;ii#xnnnnx@Mxz;+@*:::::::::::nxz@x;;;;;;;;;;;;;;*W++*;;;xx;;;;;;x#x*;;;;;;;;;;*MM;:::::::::::::::::
:::::::::z*:::M::::::::zz;;i@xi;;;;;+@#@#W#::::::::::::*@;ixM*;;;;;;;;;;;n@+;;;;;;i;;;;;;;;x##Wi;;;;;i#x@n;::::::::::::::::::
::::::::in:::in::::::::zW;;;+;;;;;;;i#Mx@@*:::::::::::::M#;;#Wx*;;;;;;izWxi;;;;;;;;;;;;;;;;zWzz;;;;;M##W*::::::::::::::::::::
::::::::ni:::#+::::::::zW;;;;;;;;;;;+@++##n:::::::::::::+@i;;;n#@MxxxW###;;;;;;;;;;;;;;;;;;M#;;;;;;;;+@#:::::::::::::::::::::
:::::::*#::::x:::::::::*@;;;;innnnnnMMzznWWi:::::::::::::nW;;;;@########x;;;;;;;;;;;+znn++#@;;;;;;;;;i@i:::::::::::::::::::::
:::::::+;:::ix:::::::::;@+;;;*@####@+*****z@+::::::::::::;Wx;;;####@n+xnx*;;;;;;;;i@Wnz+W##x;;;;;;;;;#M::::::::::::::::::::::
::::::::::::#i::::::::::nM;;;*M++z#*****i*in#x#i::iWxx#i::;Wx;;;x##*:in:;n;;;;;;;;;+;;;;x#@i;;;;;;;;;W+::::::::::::::::::::::
::::::::::::i:::::::::::i@x;;xn###znnnMWWxWW@@#WMnM####@i::;Wxi;;x@i:+*::x;;;;;;;;;;#Wzzn@n;;;;;;;;;*@;::::::::::::::::::::::
:::::::::::::::::::::::::##xzMnnn####*********nn;+x@####@Mnz##W+;;xx+;::i@i;;;;**;*M###@M@i;;;;;;;;;xn:::::::::::::::::::::::
::::::::::::::::::::::::::Mz*+#zzxxxxxnnxxxxxMW@x##M####MMWWWW@@x*;+M@xM@z;;;;i@@W########;;;;;;;;;i@i:::::::::::::::::::::::
::::::::::::::::::::::;;;z@WMxM@nxWz#+ii#+++++++znx@###@nnnnnnW###x#i***i;;;;;*@@######Wz;;;;;;;;;;nM::::::::::::::::::::::::
:::::::::::::::::::::zWxxn##Mx@W#xn##+**#*******ii*z###@nnnnnx#####xWWMnzzzzzzxWx@##M#*;;;;;;;;;;;*@*::::::::::::::::::::::::
:::::::::::::::::::::xzz@MWM+**********************z###@nnnnnM####xi;*n######Wxnx###z;;;;;;;;;;;;;xx:::::::::::::::::::::::::
:::::::::::::::::::::xz+n#nxMnnnMxzzzzzzzzzzzzzzzznn###Mnnnnn@####*;;n@##WWWxnnnM###z;;;;;;;;;;;;+@i:::::::::::::::::::::::::
:::::::::::::::::::::xnxx#+*******iiiiiiiiiiiiii*i*z###xnnnnW##@WWWM@####Mnnnnnnx###x;;;;;;;;;;;iWz::::::::::::::::::::::::::
:::::::::::::::::::::#M+******i**************i**znM###@nnMnM#WMnnnnM@###WMnnnnnnn###@;;;;;;;;;;+Wn:::::::::::::::::::::::::::
:::::::::::::::::::::ixWMnn#####**+######nnnMW@#Wn####WnWxnnMnnnnnnnM##MMxnnnnnnn@###*;;;;;;;ix#n::::::::::::::::::::::::::::
::::::::::::::::::::::::;;**#zzzzzzzzzzzzz#***#@WW####MWxnnnnnnnnnnnn#WnWnnnnnnnnW###x;;;;;*n@W+:::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::M######@MnnnnnnnnnnnnnxnnWxnnnnnnnx#####i*zM#Wz;::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::@######@nnnnnnnnnnnnnnnnnMMnnnnnnnnW#########:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::M######xnnnnnnnnnnnnnnnnnn@xnnnnnnnn@#######*:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::;;;*#Mnnnnnnnnnnnnnnnnnnnx@xnnnnnnnM#######;:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::x@nnnnnnnnnnnnnnnnnnnnnx@WMxxxxMW#######;:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::+@xnnnnnnnnnnnnnnnnnnnnnnnnW##WWnzz+*****::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::;WWnnnnnnnnnnnnnnnnnnnnnnnnnxWW;::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::n@nnnnnnnnnnnnnnnnnnnnnnW@W@Wx#i::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::+#MnnnnnnnnnnnnnnnnnnnnnnnMWxnn@#::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::;@@nnnnnnnnnnnnnnnnnnnnnnnnnnnnn@M::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::z#xnnnnnnnnnnnnnnnnnnnnnnnnnnnnnW#*:::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::i@WnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnW#*:::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::x#xnxMWWMxnnnnnnnnnnnnnnnnnnnnxW@@#::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::*##@#######@WMxnnnnnnnnnnnnnxW@##@#*;:::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::;z;W###########@WMxxnnnnxxW@########@@@n::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::##################@@@@####@Mnzx######@*:::::::::;++nn#+;::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::;@#######################@#n;iW#####xzW#x;:::::in@#######M+::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::n#@n#####################@@zn######@i;;#@x::::+@###########W*::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::i@##iW#####################xx########;;;;z#*::###############@*:::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::n###MM#############################x;;;;;i#n:i@###############@i::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::;@#################################@i;;;;;;WM;W#######@WWW@#####x::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::z##################################z;;;;;;;MWz####@Mz#znxn##n@###i:::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::i@########x#@########Wx############W;;;;;;;iW#####M+zMxnnznMMx#W##z:::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::z##########nin@#####W::#W##########Wi;;;;*xx*;###x#n*i;;;;;;;+M#@#W::;;;;:::::::::
:::::::::::::::::::::::::::::::::::::::::::iW###########x#n@#######x###########W;;;nx;` ###xn#i+zzi+ii+#zxWW#@;;*+*+:::::::::
::::::::::::::::::::::::::::::::::::::::::::iW############x#M#######@@#########W;ix*`  `@#Wzz;n@++z##@@MxxW@##M#;::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::################@i+i++*;;z@######M#xn,    *#@#xii@MW#@x+:.`  `;x;*x@z;::::::::::
:::::::::::::::::::::::::::::::::::::::::::::xx+x@###########@;::::::::;n#####:Wn`     x#xn*;###M+.        `M.  :n@#:::::::::
:::::::::::::::::::::::::::::::::::::::::::::@+;;;#M@#########i::::::::::n#@#:zx`     .@##n;+WWi`           #*    ;Wx;:::::::
::::::::::::::::::::::::::::::::::::::::::::i@;;;;;;i#x@######+:::::::::::+*:;@:     ,n#Wxi+@#W`            :M`    `nMi::::::
::::::::::::::::::::::::::::::::::::::::::::#W;;;;;;;;;;*M#@#@;::::::::::::::+W`   .n###zn+@###,            `x+`     *@;:::::
::::::::::::::::::::::::::::::::::::::::::::#x;;;;;;;;;;;WM;#+*::::::::::::::+x   .W###Mi+@####n++i:,    :izM##x:     +M;::::
::::::::::::::::::::::::::::::::::::::::::::#@;;;;;;;;;;n#WM#x@Wz;:::::::::::nM` `n###@*iW#####MiizzWMWW@#######@n,    *M;:::
::::::::::::::::::::::::::::::::::::::::::::*@i;;;;;;;;;Wxz@@+.*WWi::::::::::+@. i####z;z#####W.      `;@#########@*`   +M:::
::::::::::::::::::::::::::::::::::::::::::::;WM;;;;;;;;;;;;*@i  `M@;:::::::::;WM;n###Wi*@####@;         ############z````x+::
:::::::::::::::::::::::::::::::::::::::::::::+@Mi;;;;;;;;;;*z`   i#W#;::::::::;M####Wx+n#####+          .W###########MWWnWW::
::::::::::::::::::::::::::::::::::::::::::::::+@W#;;;;;;;;+n`    i###@#:::::::::x##Wnxi@####x            ;###########:.,,,x+:
:::::::::::::::::::::::::::::::::::::::::::::::+W#Wn*;;;inz`    `x#####x;::::::;@#@#xi######:             z##########;    :W:
::::::::::::::::::::::::::::::::::::::::::::::::i@@#@#*nWi`     i#######x::::::####xi;x#@Mzn*             ,@#########*    `Mi
:::::::::::::::::::::::::::::::::::::::::::::::*n+*###@n,      ;@########+:::::x#Wz+n+@i.  `n,            `x*znW@#####     +#
:::::::::::::::::::::::::::::::::::::::::::;+nW##W:+++,       +@########@x:::::W#xxzM#M`    ,n`           +i   ``:::##     :x
::::::::::::::::::::::::::::::::::::::::::#@@#*z@#z          i@n@#######+W:::::@#@+W+zn      #i          ,x`         +*    .M
::::::::::::::::::::::::::::::::::::::::;M##Mi` ,i+x*`     ,n#z*########*#;::::@#W*@ixn      `n,         zi          `n*    M
:::::::::::::::::::::::::::::::::::::::;W#####z`*@###W#i,;z@#M;@#######@#@;::::@#MiM#M*       .x:,.```  .x`           .W:   M
:::::::::::::::::::::::::::::::::::::::xW@###M:n############M:@########xxW:::::M#n;iM@*        z##@WWMzzMi             iM`  M
::::::::::::::::::::::::::::::::::::::*@+####:#############x.,@########iWz:::::##Wi;iW+        M#########;              ##``W
::::::::::::::::::::::::::::::::::::::nxx###M n##########@+,*`;@######M:@;:::::;W#M*;zn        M#########n              `MW@#
::::::::::::::::::::::::::::::::::::::W#@###@..M#######W#.i@#x`;######;n#;::::::iW#@nxn        M#########@.             .@###
:::::::::::::::::::::::::::::::::::::;@*@####x,`,****;, ` ,W##+`######*@@::::::::iW###W`       M##########*             n###M
:::::::::::::::::::::::::::::::::::::;@iM#####@n*:,,,i*zM+ ,W##;`x##x:WnW:::::::::;n@###`      x##########M            .@###z
::::::::::::::::::::::::::::::::::::::Miz#################+ :##W.,@x:Wn+x:::::::::::;*W##`     ############;           +####*
:::::::::::::::::::::::::::::::::::::*#x;@#################: n### ,:WM+W*:::::::::::::####``:;#xW##########z`         `W###W:
:::::::::::::::::::::::::::::::::::::+@@i##################n ;##z ;W@x@z::::::::::::::;W##@x#i,`.z#########@@xnxn*****+####z:
:::::::::::::::::::::::::::::::::::::+@zW,iW###############W .n;,z@xxx+*+*::::;;:::::::####       *@######M:..;iiiiiiiz###@;:
:::::::::::::::::::::::::::::::::::::;MnzWi.+W############xi `;n@#@xW@##@z*zMW@z:*+xWM;:x#x        ,W###n;`           ;###z::
::::::::::::::::::::::::::::::::::::::;MWW#M*,:+zMM@MMx#i.`:+M###Wn#M#@W@@@Wn#zx@#WM++*zn#x         `nW;              .@#W;::
:::::::::::::::::::::::::::::::::::::::;#x@n+MWz*ii*iiiiznW#@Mxx+iz@WzxWMn#nW#@xz*#xW@##nzW.         ;#               `M@*:::
:::::::::::::::::::::::::::::::::::::::::::::*@znxMW#Wnn@#xz+z@@W@n+zW##W##WnnzM@##@Mzz#*z@x`        .x               .M#::::
::::::::::::::::::::::::::::::::::::::::::::::n@WMMMx:::*M@##xnn##n@#xM##W@WWMn@#@xnMx@@Wn##W;       `M              ;W#:::::
:::::::::::::::::::::::::::::::::::::::::::::::;+++*;:::::;;;::#@@M##M###Mz*#x@#WnzW#Wn**Mx+n@z.     `x`           ,x@*::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;i;:x##W#i::+Mxz*ixWW+;#M####nzxW*`  `*@z`       `:z@M;:::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::**i::::::::::;n+::#Wx##x+:ni+MW#n@###W*`   .ix#Wnxx*::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::*x@######@nzx@#####@@xW#::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;i#zMMMMMn#*@@M#*xMxnx::::