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