######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
###########################:****+++++#####zzzzznnnnnxxxxxxxxxxxxxxxxxxxxxxxxxxxM#####`;****+++++#####zzzzznnnnnxxxxxxxxxxxxxxxxxxxxxxxxxxxx###########
#########################``:****+++++#####zzzzznnnnnxxxxxxxxxxxxxxxxxxxxxxxxxxxM####``;****+++++#####zzzzznnnnnxxxxxxxxxxxxxxxxxxxxxxxxxxxxx##########
########################```:***+++++####zzzzznnnnnxxxxxxxxxxxxxxxxxxxxxxxxxxxxMM#`,` `;***+++++####zzzzznnnnnxxxxxxxxxxxxxxxxxxxxxxxxxxxxMxnn#########
#######################```:+:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;nz,, `;*:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ixWWW########
######################`.`:+`                                                 `*+#, `;i`                                                 .+#@W#########
#####################```:+`                                                 `**:z.`;i`                                                 .#ii@W#########
####################`.`:+`                                                 `**,:z.;i`                                                 .#i,i@W#########
###################`.`:+`                                                 `**,,:z*i                                                  .#i,,i@W#########
##################```:+`                                                 `**,,,:xi                                                  .+i,,,i@W#########
#################`.`:+`                                                 `**,,,,+*`                                                 .#i,,,,i@W#########
################`.`:+`                                                 `**,,,,+i                                                  .#i,,,,,i@W#########
###############```:+`                                                 `**,,,,+i`                                                 .#i,,,,,,i@W#########
##############`.`:+`                                                 `**,,,,+i`                                                 .#i,,,,,,,i@W#########
#############`.`:+`                                                 `**,,,,+i                                                  .#i,,,,,,,,i@W#########
############```:+`                                                 `**,,,,+i`                                                 .#i,,,,,,,,,i@W#########
###########`.`:+`                                                 `**,,,,+i`                                                 .#i,,,,,,,,,,i@W#########
##########`.`:+`                                                 `**,,,,+i                                                  .+i,,,,,,,,,,,i@W#########
#########```:+`                                                 `**,,,,+i`                                                 .#i,,,,,,,,,,,,i@W#########
#########``:+`                                                 `**,,,,+i`                                                 .#i,,,,,,,,,,,,,i@W#########
########``:+.`````````````````````````````````````````````````.**,,,:+*``````````````````````````````````````````````````.+i,,,,,,,,,,,,,,i@W#########
########*;zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzn+,,,,+Mzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzni,,,,,,,,,,,,,,,i@W#########
########+#;...................................................*#,,,,#i..................................................:x.,,,,,,,,,,,,,,,i@W#########
########+#;                                                   i#,,,,#;                                                  ,x.,,,,,,,,,,,,,,,i@W#########
########+z;                                                   i#,,,,#;                                                  ,x.,,,,,,,,,,,,,,,i@W#########
#########z;                                                   i#,,,,#;                                                  ,x.,,,,,,,,,,,,,,,i@W#########
#########z;                                                   i#,,,,#;                                                  ,x.,,,,,,,,,,,,,,,i@W#########
#########z;                                                   i#,,,,#;                                                  ,x.,,,,,,,,,,,,,,,i@W#########
#########n;                         `.,,,.`                   i#,,,,#;                                                  ,x.,,,,,,,,,,,,,,,i@W#########
########zni                      .*#nM###Mn,                  i#,,,,#;                                                  ,x.,,,,,,,,,,,,,,,i@W#########
########zni                    .#M#########;                  i#,,,,#;                          `#nnni                  ,x.,,,,,,,,,,,,,,,i@W#########
########zni                   ;M###########;                  i#,,,,#;                         `x@###+                  ,x.,,,,,,,,,,,,,,,iWW#########
########zxi                 `+@####xz##+#zx:                  i#,,,,#;                        `*@####+                  ,x.,,,,,,,,,,,,,,,iWM#########
########nxi                 #####x;`      .`                  i#,,,,#;                        i@#####+                  ,x.,,,,,,,,,,,,,,,iWM#########
########nxi                ;@##@+`                            i#,,,,#;                       ;@######+                  ,x.,,,,,,,,,,,,,,,iWM#########
########nMi               .M##@n                              i#,,,,#;                      :W##@####+                  ,x.,,,,,,,,,,,,,,,iMM#########
########nMi               *###n`                              i#,,,,#;                     .M###*@###+                  ,x.,,,,,,,,,,,,,,,iMM#########
########xMi              `W##@:                               i#,,,,#;                    `z##@+.@###+                  ,x.,,,,,,,,,,,,,,,iMx#########
########xM*              *@##z                                i#,,,,#;                   `z####``@###+                  ,x.,,,,,,,,,,,,,,,iMx#########
########xW*              n###:                                i#,,,,#;                  `+@##z` `@###+                  ,x.,,,,,,,,,,,,,,,ixx#########
########xW*             .M##@:                                i#,,,,#;                  *###M.  `@###+                  ,x.,,,,,,,,,,,,,,,ixx#########
########xW*             *@##z`                                i#,,,,#;                 ;@##x:   `@###+                  ,x.,,,,,,,,,,,,,,,ixn#########
########MW*             +###+  .:inxx#i,`                     i#,,,,#;                :W##@:    `@###+                  ,x.,,,,,,,,,,,,,,,ixn#########
########M@*             ####*.iW@@####@@n;                    i#,,,,#;               ,M##@;     `@###+                  ,x.,,,,,,,,,,,,,,,inn#########
########M@*            `z###xx###########@+`                  i#,,,,#;              .x##@*      `@###+                  ,x.,,,,,,,,,,,,,,,inn#########
########M@*            `n######@@WWWW@######`                 i#,,,,#;             `n###+`      `@###+                  ,x.,,,,,,,,,,,,,,,inz#########
########W@*            .@####Wz;.````,+W###@*                 i#,,,,#;            `####z`       `@###+                  ,x.,,,,,,,,,,,,,,,inz#########
########W#+            .@###n,         :W###W.                i#,,,,#;            *@##x.        `@###+                  ,x.,,,,,,,,,,,,,,,izz#########
########W#+            ,@###i           ;@###x                i#,,,,#;           `W##W:.........,@####...               ,x.,,,,,,,,,,,,,,,izz#########
########W#+            .@###i            ####n`               i#,,,,#;           `W###@@@@@@@@@@@#####@@@:              ,x.,,,,,,,,,,,,,,,iz##########
########W#+            ,@###i            ;###x`               i#,,,,#;           `W######################:              ,x.,,,,,,,,,,,,,,,iz##########
########W#+            `x###i            *###@:               i#,,,,#;           `W######################:              ,x.,,,,,,,,,,,,,,,;###########
########W#+            `z###z            :####:               i#,,,,#;           `znnnnnnnnnnnnnn####Mnnn,              ,x.,,,,,,,,,,,,,,,;###########
########W#+             ####*            :####:               i#,,,,#;                          `@###+                  ,x.,,,,,,,,,,,,,,,;###########
########W#+             *####            :###W,               i#,,,,#;                          `@###+                  ,x.,,,,,,,,,,,,,,,;#+#########
########W#+             ;@##x.           ;###x`               i#,,,,#;                          `@###+                  ,x.,,,,,,,,,,,,,,,;++#########
########W#+             .M###i           *###z                i#,,,,#;                          `@###+                  ,x.,,,,,,,,,,,,,,,i+*#########
########W#+              M###z`         .W##@i                i#,,,,#;                          `@###+                  ,x.,,,,,,,,,,,,,,;*..#########
########W#+              ,@##@i         *@##x`                i#,,,,#;                          `@###+                  ,x.,,,,,,,,,,,,,;*. `#########
########W#+              `z###Wi      `*@##@;                 i#,,,,#;                          `@###+                  ,x.,,,,,,,,,,,,;*. `##########
########W#+               .M###@#:,.,;n@####`                 i#,,,,#;                          `@###+                  ,x.,,,,,,,,,,,;*. `###########
########W#+                ,M#####@@@#####z`                  i#,,,,#;                          `@###+                  ,x.,,,,,,,,,,;*. `############
########W#+                 ,n##########@+`                   i#,,,,#;                          `@###+                  ,x.,,,,,,,,,;*. `#############
########W#+                  `iMW@###@@x:`                    i#,,,,#;                          `@###+                  ,x.,,,,,,,,;*. `##############
########W#+                    `,;#z+:.                       i#,,,,#;                          `#zzz;                  ,x.,,,,,,,;*. `###############
########W#+                                                   i#,,,,#;                                                  ,x.,,,,,,;*. `################
########W#+                                                   i#,,,,#;                                                  ,x.,,,,,;*. `#################
########W#+                                                   i#,,,,#;                                                  ,x.,,,,;*. `##################
########W#+                                                   i#,,,:x;                                                  ,x.,,,;*. `###################
########W#+                                                   i#,,:#z;                                                  ,x.,,;*. `####################
########W#+                                                   i#,:#:*;                                                  ,x.,;*. `#####################
########W#+                                                   i#,#,`*;                                                  ,x.;*. `######################
########W#*                                                   iz+,``*;                                                  ,x:*. `#######################
########@##,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::+M,`` *+:::::::::::::::::::,,,,,,,,,,,,,::::::::::::::::::iWi. `########################
########+*++++++++++++++++++++++++++++++++++++***********iiiiii, `` ,*iiiii**********++++++++++++++++++++***********iiiiii. `#########################
#########.;++++++++++++++++++++++++++*******iiiiii;;;;;;;:::::. `## `,::::::;;;;;;iiiii******++++******iiiiii;;;;;;::::::` `##########################
##########*++++++++++++++++++++++++++++++*******iiiiiiii;;;;;;:`####.;;;;;;;iiiiiii*******++++++++++*******iiiiiiii;;;;;;,`###########################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################