#########                   [===============================
    # @@@@@__ __  __              \@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   #@@@,,=(__)' `(__)=             \OOOOOOOOOOOOOOOOO{***}OOOOOOO
  #@@:;//  _  ;;;  _`/              |oOOOOo|=========|***:======
 #@@(;//  ' `     ' `               |oOOOOo|XXXX|    |NNN:
 #@@;;;   : : ;(  ; ;               |oOOOOo|####| :::|NNN; :::::
#@@@;;;    ~~_(;`)_~  ;             |oOOOOo|####| ::/NNN/ ::::::
#@@@;;;   (_/ ____ \ );;            |oOOOOo|####| :(NNN/ :::::::
#@@@;;;;;;<_ /;;;;\_>;;;;           |oOOOOo|####| ::~~~ ::::::::
#@@@@;;;;;;;;;;;;;;;; ;;;           |oOOOOo|####| ::::::::::::::
#@@@@@;;;;; ;;;;;;;;;;;;_           |oOOOOo|####| ::::::::::::::
#@@@@@@;;;;;;;; ;;;;;;;  `-,_       |oOOOOo|####| ::::::::::::::
 #@@@/     ;;;;;;;;;;;_      `-,__  |oOOOOo|####| ::::::::::::::
 #@@/       \  ;;;;;   `-,__      `--,__ _ |_____ ::::::_  :::::
 #@|         \              `-,_        | :'     ) ::::(_)
 #@|          \_                `-,_ ___|_:-,__ )/ :::::H   ; :
 \\@\_          \____________       ;--,xxxxx(_)/ ::::::H  } ( : '`
  \\@@\_                  |  :---,_;     '-xxx):| ::::::H /  (  ; {
  /=====\_                |  :     \       \~~:::____  (H/ ;';/\  ;
 [======= (_______________|__:--)   )      `~~~~~~~~~\  )(        (
  \===========================:::\__)      ;          \  " | "/\  /
    ) (@@\    ( )      ) (   (:::)  `-  ____   __      |H\\   )((
    ( )@@@\_  ) (      ( )    ~~~           `-,_\      |~~~~~~~~~~
    ) (@@@@@\ ( )      ) (                      `-,    |    ___
    ( )@@@@@@() (______( )______________          `,   :   (  :#
    ) (@@@@@@@) (@@@@@@) (@@@@@@@@@@@@@/`-,__       `-,   ;'  :#
   /( )@@@@@@@( )@@@@@@( )@@@@@@@@@@@@//l    `-,_      |--    |#
  ===================================//ll    __  `-,_  |   ;  |#
  llllllllllllllllllllllllllllllllllllll___,/ /  :`-,`_|--`.___]]
  lllllllllllllllllllllllllllllllllllll_____,'   :  |~~~~~~~~~~~~~|
 __    / /                  \ \       __         :  |             |
 \ \  / /                    \ \     / /         :  |=============|
  \ `/ /______________________\_\__,' /          `, |             |
   `-,______________________________,'            ()|_____________|
                                                     ~(_)~~~~~~(_)~
                                              4W :z~
                                            zRer4LF .    N$Pu.
                                          .*  #9dE$d2mu $" -.L
                                         $  ux  "  9$$$kJe.u$$
                                         PcFr$r.     bC$d$$**$
                                      m$ E$  P$24     $$$e$"
        c                         .*"*~*c.`  "*b b    Jb$$$ *4 3u
       ' 4                     .J$*   .  r *^#$  @r   d$$$$$ dNL
        L "r                  @N~    . "*k. `~.c4J$: "$$$$"F*$ *$
  e#   "$L $zu.              #$=    e  x  "*k.k%4F$=>d$F"  e $       @""W
        $   '=$?"%L           #   ` .zf        e$"J$dc   e<$)$k   4ee  J
4"      "    @     b        .e)  @@ %l             .$$       $'*: $'"$uL .
 b   c      $F     $$$u  u@$$*F @         .     W./7   uF   4$N) J~ d2F^ F .
  #  .u    $F     $CC$$2$bed$$Le%        )" -"d$$       %:  $dFF **$ FbL$u  9
    '"*#\$*"     $P$$*$$$$??$$$6C.      @%".JJ$Fz"  ..   ^$@$*d F .$P*$*  +*#
        4$b    P@$-ue$N@$@6$$$$$$e    "zd$$$$$$F * z$N$r    "$$**e$$d@$ /:@*
         "*(*3$$$L$$$$$$$" ... "*$$$$$$$$$$$$$^d:z$$$$$k%      \"dF"#*Nb$"  $
           ^""""6$$$$$Fe 4$$  F $$$$$$B$$$P $P.z$F  "  $k      c   '4$   '$$
                 %$$$*d .$$ zP $F   ^*6$$F$  N$*  Pc     *F     "?  $F   #$
                   JFJ  $$  F $F        $      '%'$$"     $       *h/    J$
                  .*CP  #*=*.P*         $         $*     ^$**       "    $
                  $$"^Bbe..d$$$$$bc.    4$m       F3     .$              ^F
               eF3F" :$"^"^$$2IUT6BB3$$e.^$Ru.P$*@$P b..$$$h**            %
             :$."    d$  '"""$2$N3u$$$*$$$$ 'R^$$*.  *"ze$**F             "
             $$"    x$       ^$*N$3$$$$$$$$   Nk$NuBe$$$$$''#              %
             $.     $F            ***$@$$$$$ e$$$$$$$$$$h '^                F
             $F   .J$&              ' ^^IM"**$$P$$$$$$$$                    "
             *W rz="$$N  .                    ^ ^*)C 3*$$L                 @
              E"L$$$$$$$. N .        u .  c:b      " *"$F                 z"
              ^*E$$$$#"6$$$&JebcL. ~3cu"'    =L       e9F                 F
                 $@$$ +f5$b$$$$$NC$$""7.-r  c        t?7"                J
                 4$$Ck>444CC6CC6$$$$$$$$$$e3$C=J .4I.L:$$$L      u      :
                  "$b$@k@6r*fr@$P$$$$$$$$$$$$$$Fb$/$$$$$*F'"    sF     :"
                    #$$$$$b$$F63$E$$BB$$$$$$$$$$$$$$B6     ""z ."     FF
                      #$E$$$$e@d@$6$*$$$$$*$$@$$$$$$"=$2$$N-z "     J:$
                        '$E$$bTb$$$d$$$$$$$$$$B$$$$$=h$$$*e"'    . PP$
                         '$$$$$$$$$$$$$$$$$$$$$$$$$$  "*"f+      '$$#"
                          *$$$$$$$$$$$$$$$$$$$$$$$$$.   E"   .e6****"
                           $$*$$$$$$$$$$$$$$$$$$$$$$"K>u.+.P^
                          $$$(*^$$"""$$$$$$$$$$$$$$$* """
                          4$          #$$$$$$$$$$$* *r
                           $F    u  r> $$$$$$*$"    4P
                           ^$L$e:$N**$*4'm         .#
                                 L     ** ^x    ..$*N
                                 4      T$  ^3$$*"  h.
                                z '     /J    $     *$
                              .z".   uP$ $     $r  d#*h
                                                       88888888,
                               8888888888888888       ,8:::::;8
                               8 " / " / " / "8       8::::::8'
                          _,a  8" / " / " / " 8      ,8:::::;8
                  __.aaddPPP8a 8 / " / " / " /8gggggg8::::::8'
              .adP""'::;;;;;::b8/ " / " / " / 8 \ \ \8:::::;8aa,
               8:::::::::::::::8 " / " / " / "8\ \ \8::::::8\ \"Pb,
               `8::::::::::::::8" / " / " / " 8 \ \,8:::::;8 \ \ \"Pb
                `8:::aP""""b,::8 /," / " / " /8\ \ 8::::::8'\ \ \ \ "8,
                 '8::8'    ,P::8gggggmddd8888b8bbmm8;::::;8\ \ \ \ \ \8
           ,aadd888888888888""""""'''             `""8ba;8\ \ \ \ \ \8'
       ,adP"""""""888888888P  .,aggmdddd88888bbma,.    ""8a\ \ \ \ \,8
     ,dP'             "88888g8PP"'''          ``""8ba,    "8a,\ \ \ 8'
    aP'                  "*8"          8            ""8a,   "8a\ \ \8
   aP' ,add8888bbm,        8,    8     8,              "8a,   "8b \8'
  a8'.8"'        `8b       "8    8,    "8                "8b,   "ba8
  8'.8'a88a  a88a `8b,      8    "8,   ,d8b,     ,d8       "8b   "88
  8,8" __   ____    `Pb,  .d8      "8mmP"  "8mmmmP"          "8.  "8
  "8" 8P8a, dP8P     (888888'   a,                            `8.  8
   (b,   8) 8,       a8"  ,8     8,                            `8. 8
  ,8P"' dP  "b      aP'   8a      "8gggP'    ,agddd8888bbma,    `8,8
  8'  ,(8baaa8bmm, ,P'  ,8"8b,           ,ad8PP""''     ``"P8,   `88
  8, aP',a8,aga,"P88b   (8, "8b,     ,ad8PP"'    ,ggd8888a, `"8   )P
  ,88888"""""""8888 "8b, "8,  "8,  ad8P"   .,md888888888888b     aP
 a88,  `"PPPPP"    ,8""8b, "   "8md8"  ,md888888888888888888b  a8'
88 "8        _   adP'  ,8)    ,8PPP8am8"    `"888888888888888b8"
88,  ,amma,  b        a88'   ,8)\   "8(       `88888888888888"
 "88 `8  8'  `" ,8) ,88"     88\     8)        `8888888888"   ____
,88a        d   8) ,8'Pb    (8a\    .8'         8888888"  .d8I""""8b,
88"88bmmmaa8"   `888' `8'   a888bmmaP'          888888bd888888b.   "8,
"8ba,`""""'  ,8         ,ad888'    8ba,.       a88""88888888888b    "8,
   "8bma,.  ,8'   ,ad88888888(    (88888dmmmmmd888  888888888888;    `8
    888888888mm88888"' "888888,mma,88888888888888P  888888888888)     8
    888888888888888.     888888888888888888888888   888888888888I     8
   ,8888888888888888b.   8""88888888888888888888"   888888888888P     8
   I8888888888"     "8888"  ]888888888888888888"    P88888888888)     8
   8888888888"     ,8"      ""   "888888888888"    d888888888888'     8
   8888888888      ]8             d8888888888"    a8888888888888      8
   I888888888      `8,           a888888888"     a88888888888888     ,P
    "88888888,      "8,        .d88888888"     .a88888888888888)     I'
      "888888b       "8b,.   ,a8888888""      .m88888888888888P     ,P
         `"""8b       I88888888P""" I.      .m888888888888888P'     ]'
             888mmmmmd8    "8b,aaa   8m,. .m8888888888888888P'     ,P
             ,a88""888m,     "88P   .mmmm888888888888888888P'     ,P'
             8"  ,8888888maam88888"""""""88888888888888888"      ,8'
            ((   I88888888888P'    _      "888888888888P"       ,8"
            (I   `888888888P'    ,888,       "88888""         .d8)
            "I    `8888888"     i88888,                     ,d888
             "I     `"888"    ,i8888888a.                .ad8888)
              "I.           .i888888888888a,.      .,,amd8888888
                "Ima,.   .,i88888888888888888888888888888888888'
                   `""""I8888888888888888888888888888888888888"
                          `""8   `""""""'   "888888888888888P8
                             8               8""""8888888"'  I
                             8               8               I
                             8               8               I
                             8,             .8              .(
                              "\,.       .,aI8.            ,I'
                                "I888888888" "8a.       .,dP'
                                 8 (888( ('   "P888888888P"
                                 8 (888( I       (88888) I
                                 8 (888( I       (88888) I
                                 8 (888( I       (88888) I
                               ,d8 (888( I       (88888) I
                             ,8"  .d8888b)       (88888) I
                           a8" .ad88888888       (P====) I
                         .8"  (888888P ""'       8=8888' ],
                         88b.  "88888'          (88888"  ]b
                         "888888888P"           I8""   ,i8P
                           `""""""              `I888888P"
                                                   `"""
                              ..,,,,,,,,,,,,,,,,..
                        ..,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,.
                    .,::::;;;;aaaaaaaaaaaaaaaaaaaaaaaaaaa;;,,.
                .,;;,:::a@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a,
              ,;;;;.,a@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a
           ,;;;;%;.,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a,
        ,;%;;;;%%;,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
     ,;;%%;;;;;%%;;@@@@@@@@@@@@@@'%v%v%v%v%v%v%v%v%v%v%v%v`@@@@@@@@@
   ,;;%%;;;;:;;;%;;@@@@@@@@@'%vvvvvvvvvnnnnnnnnnnnnnnnnvvvvvv%`@@@@'
  ,;%%;;;;;:;;;;;;;;@@@@@'%vvva@@@@@@@@avvnnnnnnnnnnvva@@@@@@@OOov,
 ,;%;;;;;;:::;;;;;;;@@'OO%vva@@@@@@@@@@@@vvnnnnnnnnvv@@@@@@@@@@@Oov
 ;%;;;;;;;:::;;;;;;;;'oO%vvn@@%nvvvvvvvv%nnnnnnnnnnnnn%vvvvvvnn%@Ov
 ;;;;;;;;;:::;;;;;;::;oO%vvnnnn>>nn.   `nnnnnnnnnnnn>>nn.   `nnnvv'
 ;;;;;;;;;:::;;;;;;::;oO%vvnnvvmmmmmmmmmmvvvnnnnnn;%mmmmmmmmmmmmvv,
 ;;;;;;;;;:::;;;;;;::;oO%vvmmmmmmmmmmmmmmmmmvvnnnv;%mmmmmmmmmmmmmmmv,
 ;;;;;;;;;;:;;;;;;::;;oO%vmmmmnnnnnnnnnnnnmmvvnnnvmm;%vvnnnnnnnnnmmmv
  `;%;;;;;;;:;;;;::;;o@@%vvmmnnnnnnnnnnnvnnnnnnnnnnmmm;%vvvnnnnnnmmmv
   `;;%%;;;;;:;;;::;.oO@@%vmmnnnnnnnnnvv%;nnnnnnnnnmmm;%vvvnnnnnnmmv'
     `;;;%%;;;:;;;::;.o@@%vvnnnnnnnnnnnvv%;nnnnnnnmm;%vvvnnnnnnnv%'@a.
      a`;;;%%;;:;;;::;.o@@%vvvvvvvvvvvvvaa@@@@@@@@@@@@aa%%vvvvv%%@@@@o.
     .@@o`;;;%;;;;;;::;,o@@@%vvvvvvva@@@@@@@@@@@@@@@@@@@@@avvvva@@@@@%O,
    .@@@@@Oo`;;;;;;;;::;o@@@@@@@@@@@@@@@@@@@@"""""""@@@@@@@@@@@@@@@@@OO@a
  .@@@@@@@@@OOo`;;;;;;:;o@@@@@@@@@@@@@@@@"           "@@@@@@@@@@@@@@oOO@@@,
 .@@@@o@@@@@@@OOo`;;;;:;o,@@@@@@@@@@%vvvvvvvvvvvvvvvvvv%%@@@@@@@@@oOOO@@@@@,
 @@@@o@@@@@@@@@OOo ;::;'oOOooooooooOOOo%vvvvvvvvvvvvvv%oOOooooooooOOO@@@O@@@,
 @@@oO@@@@@@@@@OO a@@@@@a,oOOOOOOOOOOOOOOoooooooooooooOOOOOOOOOOOOOO@@@@Oo@@@
 @@@oO@@@@@@@OO a@@@@@@@@Oo,oO@@@@@@@@@@OOOOOOOOOOOOOO@@@@@@@@@@@@@@@@@@Oo@@@
 @@@oO@@@@@@OO @@@@@@@@@@@OO,oO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Oo@@@
 @@@@o@@@@@@OO @@@@@@@@@@OOO,oO@@@@@@@@@O@@@@@@@@@@@@@@@@@@@@@o@@@@@@@@@O@@@@
 @@@@@o@@@@@OOo @@@@@@@OOOO'oOO@@@@@@@@Oo@@@@@@@@@@@@O@@@@@@@@Oo@@@@@@@@@@@@a
 `@@@@@@@O@@@OOOo`OOOOOOO'oOO@@@@@@@@@O@@@@@@@@@@@@@@@O@@@@@@@@Oo@@@@@@@@@@@@
  `@@@@@OO@@@@@OOOooooooooOO@@@@@@@@@@@@@@@@@@@@@@@@@@Oo@@@@@@@Oo@@@@@@oO@@@@
    `@@@OO@@@@@@@@@@@@@@@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@Oo@@@@@@@O@@@@@@@oO@@@'
      `@@`O@@@@@@@@@@@@@@@@@@@Oo@@@@@@@@@@@@@@@@@@@@@@Oo@@@@@@@@@@@@@@@O@@@'
        `@ @@@@@@@@@@@@@@@@@@@OOo@@@@@@@@@@@@@@@@@@@@@O@@@@@@@@@@@@@@@'@@'
           `@@@@@@@@@@@@@@@@@@OOo@@@@@@@@@@@@@@@@@@@@O@@@@@@@@@@@@@@@ a'
               `@@@@@@@@@@@@@@OOo@@@@@@@@@@@@@@@@@@@@@@@@Oo@@@@@@@@'
                  `@@@@@@@@@@@Oo@@@@@@@@@@@@@@@@@@@@@@@@@Oo@@@@'
                      `@@@@@@Oo@@@@O@@@@@@@@@@@@@@@@@@@'o@@'
                          `@@@@@@@@oO@@@@@@@@@@@@@@@@@ a'
                              `@@@@@oO@@@@@@@@@@@@@@' '
                                '@@@o'`@@@@@@@@'
                                 @'   .@@@@'
                                     @@'
                                   @'