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