#####
                           ################### ##############
                         ################################# #####
                       ################################### ###  #
                    ####################################### ###  '
                   ######################################### ####
                 ############################################  ######
                ###############################################   #  #
              ###################################################   #  #
             #####################################################   #   #
            #######################################################   #    #
           #########################################################   #     #
          ###########################################################    #    #
         ########################  ######### # # # #  ################     #   #
        ########################  # #######  # # # #   ################     #   #
       ########################  # ## ####   # # # #   # ##############      #  #
      ########################  # ## ## ##  #  # # #   # ## #### # #####      # '
     #########################  # # # ## #  ' # #  #  #  ## #### # ######      #
    # ########################   # ## ## #   # #  #  #  ## ####  # #######      #
   #   ######################    # #  # # .  ' #  #  '  # # # # . # #######     '
  ##   ######################   # #  # #  A   #  #     # # # #  A # ########
 #    #######################   ##  #  # .$. #  #     # # # #   $ #  ########
#     #######################   #  #  # .$$$.# #      ##  ' '  .$.#  #########
'     ## ####################   '  ' .s$$$$$$$$$$S.   ''     .s$$$.  #########
    ## #####################     .sS$$$$$$$$$$$$$$$'     .sS$$$$$$s. ###### ### 
   ##  ####################     $$$$$$$$.-'""'-$$$.      ;$$$.-.$$$$$s##### ####
   '  #####################      `$$'$$$/ () \ `.$$       ;$/() \`$$$####### ###
      #####################         $$$$Ss...sS$$$$        ;Ss...sS$ ########  ##
     ######################         `$$$$$$$$$$$$$'        .$$$$$$$$ ########   # 
    #######################           `$$$$$$$$$'          `$$$$$$$' ### ####    `
   ######################## `.           `$$$$'             `$$$$$'  #### ###
  #########################   .            $'                `.`$'   ##### ##
 ###########################  :            $                  ; $    ###### ##
###########################                V      :           ; V    ####### #
#### ######################    `           '      `._'"`.   .'  '   #########'
##   ######################                              `-'  .     ##########
#   #######################                  .                `.   ######### ##
#  ########################                 '                  .   ######### ###
'  ########################                ;       _.----._    `   ########## ##
  ##########################               '  _.-'T~T~T~T~T`.     ############ ##
 ############################`.             .$$`""""------""' $  ######### ### ##
 ## #########################  `.         .$'   `-._     _.-' $ ########## #### #
 ## ##########################   `.       $'        """"""'   $ ########## #### #
 # ###########################     `.    $                    $########### #### `
 '############################       `.  $'                   ############ ###   
 # ############################        `._                  .'###  #### ## ###
 '  ############### ############         `.                .'  #   #### ## ##
  ################# # ############         `-._       __..-'   #    ### ##  #
   # ## # # ### ##  # ## #########             `"""""'.'       #    ### ##  '
   # #  # # ##  #   # ##  ###### ##                 .' `-.._   #     ## #
   # #  ##   #  #   #  #   #####  #                 ;        `-.     #  #
   .-'  ''   #  '   #  '    ####  #                :             `-. #  '
 .'          '      '        # #  .                :                `-.  dp