#      #####################################;iiiiiiiii;############################################################################################
      #    ###################################iiiiiiiiiiiii###########################################################################################
          ###################################iiiiiiiiiiiiiii##########################################################################################
  #        #################################iiiiiiiiiiiiiiii*#########################################################################################
@@@W       ################################;iiiiii;.`.;iiiiii*###@@@@W################################################################################
###@        ######## ######################iiiiiii` ``.+iiiii*###@###W##### ##########################################################################
###@         # ############################iiiiiii   ``#iiiii*#######W###########################################################################n@W@@
###@       ### ############################*iiiiii   ``#iiiii*#######W###########################################################################@@W@#
###@       #  #### ########################*iiiiii   ``#iiiii*#######W###########################################################################W@W##
###@        ## ############################*iiiiii   ``#iiiii*#######W##############zz;##############+zi####+zz*#########+zMn+#############*MM###@W;@#
###@#n@@#@W    ##x@@##@@+##@@@@@# ####W@@W#*iiiiii  ```#****i*   ####W   W###M  `@@#####@#   #@@@@MM###W# @######M####x@######@W####@###@i@####@*@@@@@
###@M######@   #@########n @####     .###W *iiii*i  ```#****i*   ####W  i####  n@#########W   ####W####W @########@###@#########@###@####@######@#*Mz 
############n  @########## x####W    W###` ******i  ``.#******   ####W  @#### `@####@######z  #########W#####@#####,##@##########: #@############:##  
######@@####@ #####@ ,@###W ##### #  @##@  ******i  ``.#******   ####M @###@  W####W  x####@ #######@@@W####W #@###W  @@`# #.####i  @#####@;@####z    
#####x# @###@#@####   M###@ @#####  M###, #******i  ``.#******   ####WW###@   @###@  ##@###########M## @###@## n###@# #  ####@###i##@####@## @###W# # 
####W#  W###@ ####@MMMn#### .####@  @##@#  ******i  `..#******   ####W####  #`####M    n####M ####W    ####@@@@W####    +@###@###i  @####    @###W    
###@####W###@ ############@  ##### n###*  #+******  `..#******   ####@###W   ,####+    #####@ ####W   #############@ #`@#########i  @####    @###W # #
###@####W###@ #############  @####x@##@   #+******```.,z***+**   ####@####x  ,####+  #  ####@#####W##  ############@  @##########x# @#### #  @###W    
###@### @###@ ####@MMMMMMMM   ####@###z    +*******::iz#++++**   ####M#####` .####x    `####M#####W#   ####@z####zz+ @####W; @###W  @#### #  @###W   #
###@####@###@ #######  #      #######@#    ++++++++++#+++++++*## ####WW##### #####@    W####; ####W    @####`        @###@   @###W  @####    @###W  ##
###@##  @###@ W####W #    ,   n######M     ++++++++***+++++++*   ####M @####@ @####i # #####  ####W #  +####@. # #,n @###@  n####W# @####    @###W   #
###@####@###@# #####@M+MW@@#########@######+++++++;` `;++++++*#######M#i#####W######Wx@####@######M##########@@@@@#@#@####@@#####@W#@############W####
###@####@###@  +###############@####W######+++++++   `.#++++++###@###M##M#####;W##############@###M######@###########x############@#@############W####
###@####@###@ # #@########@####,##############++++```.,z++##+####@###M###@####@#W@#######W####@###M#######@########@##W#####@#@###@#@###@####@###M####
WWWM####MWWWx#  # #W@@#@@n:####x###W#######:######*,.:#z#####*###+###*#############W@@Wn#######zzz+##########WWWW#,#####MWM+###MWM*##:;:,####::;:#####
############ #  # # ###############+################zzz###zz##########################################################################################
###########  #       #########@###@###########zz####zzzzzzz###########################################################################################
###########  #       #############n#############zzzzzzzzz#############################################################################################
###########  #      #############@#############i+#######+i############################################################################################