void dfs(Map<Integer, List<Integer>> graph, int cur, Set<Integer> visited) {
      if (visited.contains(cur)) return;
      visited.add(cur);
      System.out.print(cur + " ");
      for (int next : graph.get(cur)) {
          dfs(graph, next, visited);
      }
  }