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