######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
##############################################@######################################################@Wx##############################################
###############################################@#####################################################@zi@#############################################
###############################################x#####################################################@;;##############################################
##############################################@i#####################################################W`:##############################################
##############################################@.W####################################################+ ,##############################################
##############################################@`+@################################################@#W. ,@#############################################
##############################################W`,@@################################################@*  .@#############################################
##############################################W``n#################################################x`  ,@#############################################
##############################################W` ;@###############################################@,   .@#############################################
##############################################W` `M###############################################*    .@#############################################
##############################################W`  i#############################################@z     .@#############################################
##############################################W`   M############################################x`     ,@#############################################
##############################################W`   ;@##########################################W.      ,@#############################################
##############################################W`   `z#@#######################################W,       .@#############################################
##############################################@`    .W#######################################W,        ,##############################################
##############################################@`     ;@#####################################W,         :##############################################
###############################################.      *@###################################W,          ;##############################################
###############################################,       +@#################################@:           i#@############################################
###############################################:        i@###############################@:`           *##############################################
###############################################;         ,M#############################@*             +@@############################################
###############################################i          `iM@##########################x`             ##@############################################
###############################################+             ,#W######################@@:              n##############################################
###############################################z               .+@@####################M               M##############################################
###############################################n                 i@####################+              `W##############################################
###############################################M                  M####################,              .@##############################################
###############################################@`                 *###################W               :###############################################
################################################,                 .@@#################z               i###############################################
################################################;                 `M#################@i               +#@#############################################
################################################+                  z#################@.              `n###############################################
################################################n                  ;@################n                W###############################################
################################################W`                 .@@##############@:               .##@#############################################
################################################@,                  z#@#@@#######@##z                ;################################################
#################################################*                  ,@##@+W######@@n`                #################################################
#################################################n                   ;xx;`M###@@@M*`                 x################################################
#################################################@`                   ```#@###z..`                  .@################################################
#################################################@i                    #@@@###@Mn#`                 i#@###############################################
##################################################n                    M#########@i                 z#################################################
##################################################@.                   M##########M`               `W#################################################
###################################################+                   M##########@i               ;##################################################
###################################################W.                 `W###########x               z##################################################
###################################################@*                 #@############:             `@##################################################
####################################################W.               *@#############n`            *@@#################################################
#####################################################z              i@#@############@:           `M###################################################
#####################################################@:            i@#@##############x`          i@###################################################
######################################################M.         `*@@#################i         `M####################################################
########################################################         +@##################@W.        *#@###################################################
#######################################################@:      `z@#####################x`      .W@####################################################
#######################################################@W.    .x###@##################@@n.`   `x@#####################################################
#########################################################M:`.*W#########################@W*,.:x@######################################################
#########################################################@@MW@###########################@@@@@@@#######@##############################################
#############################################@z@@#########@@@#################################@#######@x@#############################################
##############################################iz#####################################################@nx##############################################
##############################################z.M###################################################@@:@#@############################################
##############################################W`,@@###############################################@@@i+###############################################
#############################################@@i i@###############################################@@z`W###############################################
###############################################M` #@##############################################@x`*################################################
##############################################@#; `x############################################@#W.`W@###############################################
#############################################@#@M` .M############################################W: +@################################################
################################################@*  .M@#########################################@: .W#################################################
################################################@@.  .M@######################################@@;  #@#################################################
##################################################n` `+x@#@@@@######@@@@@@@@#############@@@@#z;  .@@#################################################
###################################################*````M##@#@######@#@@#@@##############@Mi+``   +@##################################################
##################################################@@,   +xx@@@@###############@#@@@WWMxx#z` ,    `W###################################################
##################################################@@M.  ..,*izMxxMMMMMxxnzz#+*;:,,.`   `M.       ;@###################################################
##################################################@@@#    .. :*   ``                    :        z@###################################################
#####################################################@;     `i:                                 `M####################################################
#####################################################@W.    `                                   .@####################################################
#####################################################@#z                                        ;#####################################################
#######################################################@:                                       *@####################################################
#####################################################@##x`                                     :x#@###################################################
#########################################################; `                                 `#@######################################################
#########################################################M.                                `iW@#######################################################
#########################################################@M, `                            ,n@#########################################################
##########################################################@@+`                         `*#@#@#########################################################
############################################################@W+:,:                   .`z@#@###########################################################
################################################################@@#`                ,WW###############################################################
#################################################################@#Mi              .M@@@##############################################################
###################################################################@@M*,`        `iW##################################################################
#####################################################################@#@Mz+i::;*zW####################################################################
##################################@@@##Wn###########################@#######@#########################################################################
####################################@x;`##############################################################################################################
###################################Mi` `W#############################################################################################################
###############################@@@+`   ;@###############################################@@@###########################################################
###############################@z.     n#################################################Mi@##########################################################
#############################@#,      .@##########################################@@@#@@x.`W##########################################################
#############################M`       *###########################################@#@#W*` :###########################################################
##############################.      `M#############################################M*`  `x###########################################################
#############################@i      ;###########################################@W*`    i@###########################################################
##############################+      x#########################################@@x.`    ,@############################################################
##############################z     ,@##########################################x`     `M#############################################################
##############################n     z@#########################################@W,     ###############################################################
#############@####@##########@n    .@@###########################################M`    n##############################################################
####@@x#*;,.`   `.z###########z    ###############################################*`   x##############################################################
#####@:           M##########@+   .W################@#############################M`   M##############@@##@#############@#############################
#####@W,`        ,############i   *@##@Mz+*i;;ii*+#znxMMWWWWMM@##@x*:,....,,i@####@.   W######@@#M#i,....W#@##@@@#######@M@##############@####@@######
#####@@M`        *###########@.  `M#@W,           ````      `n@##@i       `:M#####@;   #######@x;      ` *####@W:`   ``  .@#########n.`.:i*++#@#######
#######@z        #@##########M   i@@##M`       `;nW@@Wn*.   i#@###i      `z#######@*  .####@#Wi`         `x@@#@#+        ;##########W`       *########
#######@@i       ############+   x######      `z@#@@###@@#``x#####*      ,@########+  :@###@W,            `#@###W.       *##########@,       n########
########@W.      +##########@,  :@#####W`     z##@##@@@###M:@#####*  .   .@#########  i@##@M,`    `..       ,z@##i       +###########;       @########
##########z`     i#########@x   n@####@@:    .@@###########@######* `x`   x#########  *##@W,`   `iM@@Mi``     +@#n       +#@@########*      ,##@######
##########@:     :##########i  ,@#####@@*    i#@##########@#######+ :@i   *#########  ####i`    +@@###@n.     +##W       *##@########i      ;#@#######
#########@@x     `@########W`  ########@#    +###################@+ +#x`  .#@#####@+  z@#n     i#######@M.    i###.      ;###########:      +#########
##########@@:     x#######@*  `W########z    +@@##################+ z#@:   x######@*  n#W.    .W#######@@#    ,@##,    ` .@@@#######@.      z##@######
############n     +#######W`  i#########z    i##@#####@############ M@@#   i#####@@i  z@+     *@#########+     W##:    i  x#########x       x#########
############@,    :@######*   x#########z    ,@@@@@#@#@@@@@@######z W#@@`  `W######;  zM`    `M@#########*     +##,   `M. *#########*   `   W#########
##############    `W#####M`  ,#########@#     zz#+*;:,,..,,+######z`W###i   *#@####,  #i     ,@@#########*     ,@@`   .@+ .@#######@.  `*  `W#########
#############W`    z####@i   #######@@n,`                 `n######z`W###n   `W####@.  ;`     *@#########@i     `Mn`   .@M` z######@z   ;n  .@#########
##############i    ;####M`  `W#######n`                   :@######z`W###@.   *####W`   `     z#@#######@#;      #,    .@@: :@#####@,  `Wz  .@#########
##############x    .@#@@;   ;@######@:                   `x#######z`W###@*   `W###M`         n#@########@:      ``    .@@+ `x#@###n   +@z  .@#########
##############@.    x##x    z#######@i```          `::   #@#######z`W###@x    *###x          M###########,            .@@x  i#@##@:  .W@z  .@#########
###############i    +#@:   `W#######@@W,       .i+x@#@n`i@########z W####@,   `M@#n          M###########.      .i    .@@@. `W###n   +#@n  .@#########
##############@n    ;#x`   ;###########M.      +@####@@*@#########z M######    i@@#   .;     M##########@      `nn    .@@#;  +##@,  `W@#n  .@#########
###############W`   .@;    ############@i      #@@#####@@@########z x#####W`   `M#+   +#     x##########M      ;@x    `W@@+  .##n   *@@#x  .@#########
###############@:   `M``   W############n      z##################+ n#####@i    ;@*   Mx     z##########z      z@W    `W##x   x@:   M#@#x  .@#########
###############@*    i    ,#############x      n#################@+ z#@@###x    `Mi  .@@.    +#######@##*      W@#`    W@#@`  *x`  :#@##M  `@#########
###############@n         *###########@#M      x#################@* ##@@##@@,    i;  ,#@i    :@########@.     `###.    M#@#;  ,*   z#@##M` `W#########
################W`        n#############n      M##################i *#######z    `,  :##n `  `W#######@n      :@##,    x####  ``  `W####W`  M#########
###############@@.        W#@##########@+     `W############@@####; ;#######@.       :#@@,    +@##@##@@:      *@##:    z@##M      i#####W`  x#########
###############@#;       .@#############;     .@#@Mxz#+i;:,..z@###, :#########       :####    .W###@#@+       x##@:    ####@,     n#####@`  z#@#######
#################+       ;############@W`     `,`           .@####. .########@.      ,###@,    i@#@#@+`     `,@###,    *##@##    .@#####@`  ##########
###############@#n       +#@@##########+                    *####@   @#######@z      .@##@x`    +@Mz,       `z####.    ;####W`   ;@#####@`  *##@######
###############@#M       z############@.                    x####M   M########@;     `@##@@#`   `.`        :x@@##@     ,#####+   z######@`  :#@#######
#################@       x@##########@i                    ,#####n   n#########M.    .@##@##z`          `;M@#####n      @###@@, `@####@#W`  .#########
##################.     `W##########@*                     +#####+   ##########@z``,+M@######x:       `;M#######@*#zi.  x####@x.:@######M`   @########
##################:     `@##########M#+i;,,.`   ``.,:i+z` `M#####:  .x#########@@*.@@######@@@@n;`   .n@########@@@#@@MxW@###@@nz#######x    x########
##################i     .@#############################@: ;@####@. :M############@+@#############@xz#@##################################z    #########
##################+     ,##############################@n`n###@#x`*@@@############@@############@##@@###################################i    i@#######
#################@#     ,###############################@M@#####MM@###############@@###################################################@.    ,########
################@W,     :##############################################################################################################z     `W#######
################W:      :#############################################################################################################W.      x#######
###############@:;+#+i:.,#############################################################################################################n.      +#######
##############@@n#######@@############################################################################################################@@*`    :#######
################@#####################################################################################################################@#@x,   `@######
##########################################################################################################################################@*`  x######
##########################################################################################################################################@@n. *######
#############################################################################################################################################W:,######
##############################################################################################################################################@*W#####
################################################################################################################################################@@####
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################