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