complete DFS