#    # #   #   ##   #####    ##   #####  ##### #    # ###### #    # #####     #    # ###### #####
##  ##  # #   #  #  #    #  #  #  #    #   #   ##  ## #      ##   #   #       ##   # #        #  
# ## #   #   #    # #    # #    # #    #   #   # ## # #####  # #  #   #       # #  # #####    #  
#    #   #   ###### #####  ###### #####    #   #    # #      #  # #   #   ### #  # # #        #  
#    #   #   #    # #      #    # #   #    #   #    # #      #   ##   #   ### #   ## #        #  
#    #   #   #    # #      #    # #    #   #   #    # ###### #    #   #   ### #    # ######   #