######################################################################################################################################################
######################################################################################################################################################
########    ###################################    ###################################################################################################
##### ###   ## ############################# ###  ### ################################################################################################
######`,,,,,,.`##############################`.,,,,,`#################################################################################################
## #`,:i*****i,.  #########################`,:i*****;,. ##############################################################################################
###.:**********;,` ###################### .:**********;.`#############################################################################################
##.;*************,`##################### .;************i,`############################################################################################
 `;***************,  ###################`;**************i.`###########################################################################################
`:****************i` ################# `:****************i.###########################################################################################
.i*****************:  #########  ` ####.i*****************,`##########################################################################################
:********:,i*******i`########## .;.`  #:*******;,,.:******i. #########################################################################################
i********,`;*******i,# #########.*i;.``;******;`.,.`:******. #########################################################################################
*********,`i********:``````````.,***i;,;******..;*i.`;*****. ######                   ############   `````   ###########             #################
*********,`;*********iiiiiiiiiii*************i.,***: :*****,`#####`.,,,,,,,,,,,,,,,,,. ########## `,,;*+*;,,` ######### `,,,,,,,,,,.`  ###############
*********,`;*********iiiiiiiiiiii*****i******i.,***:`:*****:`#####.zWWWWWWWWWWWWWWWWWi` ####### `,ixW@@@@@Wxi,`########`;WWWWWWWWWMz*:,`  ############
*********,`i********:```````````,***i:.;******..;*i.`;*****. #####.n################@i  ###### `:x@#########@x:`#######`;@##########@@xi,  ###########
i********,`;*******i.           ,*i:.` ;******;`.,.`:******. #####.z#@##############@i` ######`;M####@WWW@####M:`######`;@#############@n:` ##########
,********:,i*******;`###########.:.`  #:*******;,.,:******i. #####`i######W###x#####+, #####  ,x###@x*:,:*x@###x, #####`;@##@z###nxM@####M;` #########
`i*****************,  ########## ` ####`i*****************,`###### ``````.x##@*```````#######.####@#.` # `.#@##@#`#####`;@##M,```...*x@###M: #########
`,****************;`##################  ,****************i. #######      .x##@+`      ###### :W###z.  ###  .z###W:  ###`;@##M,      `.#@###n.#########
 `;**************i. ####################`:**************i. ############# .x##@+` ########## `+###W;  #####  :W##@+` ###`;@##M,######  .+@##Wi  #######
# .;************i,` #################### `:************i. ############## .x##@+` ########## ,x###z. ####### .z###n,# ##`;@##M,#######  ,x###n. #######
#  `:i*********ii,`# ################### .:*i*********:. ############### .x##@+` ########## :W##@*  ####### `*@##W:# ##`;@##M,######## `i@##M:# ######
##  `.:ii***i:,:**;.`################# `,i*i,,;i***i:,`################# .x##@+` ##########`i@##W;  #######  ;W##@i  ##`;@##M,######### ,M##@*  ######
#### #`..,,,.` ,***i:.`############# `,;***;` .,,,,.`################### .x##@+` ##########`+###M,# #######  :M###+` ##`;@##M,######### .n####` ######
#####  ####### .*****i, ############.;*****:` ####### ################## .x##@+` ##########.####x.#########  ,x####`###`;@##M,##########.####z. ######
#########  ####.*****i. ############`:*****:`###  ###################### .x##@+` ######### .z###n.###########.n####.###`;@##M,##########`*###n.#######
############## .i***;` ############# `,****, ########################### .x##@+` ######### .z###z.###########.z###z.###`;@##M,##########`*@##x,#######
###############`i*i*i. ############# `:*ii*. ########################### .x##@+` ######### .n###z`###########.z###z.###`;@##M,##########`i@##x,#######
###############`;:.:*;`#############`,*i.,i.############################ .x##@+` ######### .n###z.###########.z###z.###`;@##M,##########`i@##x,#######
###############```#.;*,`############.i*, ```############################ .x##@+` ######### .z###n.###########.n###z.###`;@##M,##########`*###n.#######
################### .*i.# ##   ##  `:*:`################################ .x##@+` ######### .####n.######### #.n####.###`;@##M,##########`+###n.#######
####################`:*;`#`..,,.` `,*i.################################# .x##@+` ##########.+###x,# #######  ,x###+` ##`;@##M,######### .z###z` ######
#####################`;*,,:i***i;,,i*, ################################# .x##@+` ##########`i@##M:# #######  :W##@i  ##`;@##M,######### ,x##@+` ######
######################.ii*********i*:` ################################# .x##@+` ########## :@##@i  #######  i@##W;  ##`;@##M,######### :W##Wi  ######
#####################`.i************:`################################## .x##@+` ########## ,M####` ########`+###x,# ##`;@##M,######## `*@##x,# ######
#################### .i**************:`################################# .x##@+` ########## .####x,# #####  ,x####` ###`;@##M,######## ,M##@#` #######
####################.i****************,################################# .x##@+` ###########`i@##@*`  ###  `i@##W;  ###`;@##M,######  .#@##W;  #######
################### ,*****************;`###########################      .x##@+`      ###### ,n###M;`     `:M###z.# ###`;@##M,       .#@##@#`#########
###################.i*****:,,.:i*******,########################## ``````.x##@*```````#######`iW###Mi.```.;M###W;  ####`;@##M,````..in@###x, #########
#################  ,******,`,.`.i******:`#########################`i######W###x#####+, ###### .+@###@xz#zxW###@*`######`;@##@z###znxW####M:  #########
#################  ,******,`i*:`,******;.#########################.z#@##############@i` #####  .#@###########@+. ######`;@#############@x:` ##########
################## ,******,.i*i`,******i.#########################.n################@i  ######  .iM@#######@x;.  ######`;@###########@M*,  ###########
##################`:******,.i*i.,******i.#########################.zWWWWWWWWWWWWWWWWWi` ######## `,;zMWWWM#;,` ########`;WWWWWWWWWWx#;,` #############
#################  ,******,.i*:`,******i.#########################`.,,,,,,,,,,,,,,,,,. ##########  `.,,,,,.` ########## `,,,,,,,,,,..`  ##############
#################  ,******,`,,`.i******:`##########################                   ##############       #############             #################
################# #.i*****,...,i*******, #############################################################################################################
###################`:*****************i.##############################################################################################################
################## #.i****************, ##############################################################################################################
####################`,***************;.###############################################################################################################
#####################`,*************;.################################################################################################################
######################`,i**********:.# ###############################################################################################################
####################### .:i*****i:,`# ################################################################################################################
######################### .,,,,,.`####################################################################################################################
######################### ######## ###################################################################################################################
###########################     ######################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################