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