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