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