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