input: 
  def solve_maze(maze: Maze) -> List[int]:
      """ Given an instance of the Maze class, solve the maze and return a list of integers
      representing the path from the start to the end.
      >>> maze = Maze(3, 3)
      >>> maze._grid = [[1, 0, 0], [1, 1, 0], [0, 1, 1]]
      >>> solve_maze(maze)
      [3]
      """
  
output:     start = maze.start
      end = maze.end
      queue = [(start, [])]
      visited = set()
      
      while queue:
          (current, path) = queue.pop(0)
          if current == end:
              return path + [current]
          if current in visited:
              continue
          visited.add(current)
          for neighbor in maze.get_neighbors(current):
              queue.append((neighbor, path + [current]))