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