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