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