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