######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
########################################W#i;i#W##############################################################@#W######################################
######################################@+`   ,*+**M###################################################@zxWxn*.;*;n@####################################
#####################################z.   `.*W###`:iiz###############################################W;          .in##################################
###################################@i   :n@#######   z#############################################@z;             `;n################################
##################################M`   nM#########n;+#############################################W;`             ``` +W##############################
#################################M.   ,iz########################################################@;            ` `.;i` n##############################
################################@.   `i@#########################################################+       ``  `` `:,:M+;:x#############################
################################+`  ,n###x;:i#M####Mnx##########################################x`       `` .,i::xn*M#M+x@############################
###############################@*#.M@##@i      :++.   i########################################@;     `  .. ::#.z@######Wx############################
###############################@@@@####*               z#######################################z`   `` .  n:n*+MzW#######@############################
#######################################.               ,#######################################;     ` `,`+x+#W#@#####################################
#######################################.                @######################################.       .#+W##x########################################
#######################################.                x#####################################W   .` :*.xWz###########################################
######################################@`                ######################################n    ,,;Mx##############################################
######################################z                 ;####################################@; `. `:;@xW#############################################
######################################:    `.::    .;ii+;#####################################,` ``:`;Wx@#############################################
#####################################@`;MMMzM##+  .@@##@+#####################################,*+,*zz#@###############################################
#####################################x x###WWM@W` ,##x+,,@####################################.*+*:xz@################################################
#####################################n ,W##Mi`.x`  ;#:W* W####################################*:+zi###################################################
############################@@M;W####W  `;#ni ``    ,,.  W####################################x.iWM@############@x@###################################
##########################W,.` ,;#####:                  W####################################@;xW##############x**#@#################################
##########################;   .**n####x`                 W#####################################Mn##########W@###WzWzi#################################
#########################@`   ,,,+######                 M#####################################W*##W######@`,x##M:`  W################################
#########################@`    iin######+     . ,;``.    M######################################*WM +#####M   ;nM,   #################################
##########################.     ;#######@.    +M##@xi    x######################################M+x  :#nn++;```      #################################
#########################@.  . `*########z    ,:.,,      M######################################@iM    *,.`.*i#+     M################################
#########################+   +xW#########@,              W#######################################@#:  *M.:z.#i`nz   .#################################
#####################M#;.`   zM###########Wi```;+z:+;   `##########################################n .@x####@W,`W;  +#################################
###################@i`         x#xx#########@W#i.,:,i;  ;##########################################@.*#.i@##Wi  :x ,@#################################
###################+           +#*.@########@;i*+#+:    n###########################################ii@`.W####n. z`W##################################
###################*           i@` x############M@##zn#;############################################x`*i@######@iiz###################################
###################i .*i:.````.M#i W##########M*.`.+#xWM#############################################,`@##W#x######M@#################################
##################W`  .;*zx@@@###@+###########;xin:. i###############################################x.##x#nW#+:n;: *#################################
################@x,        i##################:Wn:+n ################################################@*#######:    i*@################################
###############n.;         z##################xn###n+@###############################################;;##W@#n+    ,,,z################################
##############n  ;,.````..+##########@W##############################################################  ##@##M,    ,i*+@###############################
#############@.  :*WW@@@#############+`*W###########################################################   `M####x     .:n.M##############################
##############   ;``ii,.:+n##########*  `+@#######@##############################################W*     :n@##W`     ;` :##############################
#############:   ,`        M##########    :W######i############################################xi`        `.,;   ;.:,   n##@*#M#######################
############W`   `;**   ``;##########W     .M####W,###################################@MnnxM@#,         `:i;;`   M#i    :####z..#W####################
#############     *M#MzzW@############;     `x##M,,################################Mi.`     `          :;`      `i#Wxz;  M####W:  .+x#################
############;     :`*z*#zW############n      `*i` .###############################+`  `:    `         `:           @#*M, *######z:`  .+M##############
############.     ,      `@############.      +@, `@##############################  :x@##   .+: ..`   ;`           x@`i: .@#######Wn+:  :z@###########
###########M      ;;,    .#############+      z#+  @############################W`:x###W: ;nMzx+.W@Mz:i` `.        M# ,.  x###########W+, .+@#########
###########n      i##W+:,n#############@`     M#n  M############################+i##Wnzn+  ,*zx@ii@n+.i  :#znz+***n#@.;.  ###############M+.*#########
###########+      +#####################+    `###. n############################,WxzM#@+,`.ix#@@@nxW#z`     `,*@#####MM.  i################W;#########
###########i      ######################@`   `###* n###########################W:zn#@#*+:+@#xizn@@W@W;        `W#####Wx`  ,#################z#########
###########,      n#MW###################+   ,###x +###########################x.x#M#MWzM@#,    `` ``i.       *######i     @##########################
##########W    .  x#W*###################@.  :###@`;###########################nx#Wx##xx+`           #@nnznnnM#######:     x##########################
##########W   `;;+@##;M###################+  ;####;.#############################@x##MMi .          ,;.+nz+#W########:     +##########################
##########Wzi i+Mz###W:@##################W  ;####n @############################W##W@MzM`          z:       .n######,     i##########################
#############z#M#M####xi###################; ;####@.W###############################W##xx`         `@i,:      n######:     :##########################
#######################W###################n i#####*x#################################Wxz          ,M+W#ni:*#z#######;     .##########################
############################################,i#####W##################################zx*          *x;.z@xW@#########*      @#########################
############################################z*######z################################@+#.`i  `     zx;     `;@#######z      W#########################
############################################@@######W################################n@@ n@` z,    MMzi:     M#######M      M#########################
#####################################################################################W#n;#@` W*   `@#x###,.:#########@`     x#########################
#######################################################################################+W#@.M##   .###:*##############,     ##########################
#######################################################################################x##@:##Wzx*i###W,;M############i     *#########################
##########################################################################################@*###########@+;ix##########+     ;#########################
##########################################################################################@M##########################n     :#########################
######################################################################################################################M     .#########################
######################################################################################################################@`    `#########################
#######################################################################################################################,     W########################
#######################################################################################################################;     x########################
#######################################################################################################################+     #########################
#######################################################################################################################n     ;########################
#######################################################################################################################W     .########################
########################################################################################################################`     W#######################
########################################################################################################################:     n#######################
########################################################################################################################+     ########################
########################################################################################################################x     i#######################
########################################################################################################################W     :#######################
#########################################################################################################################.    .#######################
#########################################################################################################################:    `#######################
#########################################################################################################################*     @######################
#########################################################################################################################n     W######################
#########################################################################################################################W     M######################
#########################################################################################################################@`    z######################
##########################################################################################################################:    +######################
##########################################################################################################################i    *######################
##########################################################################################################################z    ;######################
##########################################################################################################################x    ,######################
##WW#MWWWWWWW@M@@#########################################################################################################@`   `######################
##WW#WWWWWMWWWMWW##########################################################################################################,    W#####################
###########################################################################################################################+`   M#####################