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