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