bool dfs( int v ) {
    if (marked[v]) return 0;
    marked[v] = 1;
    for (int x : c[v])
      if (x == end || dfs(x)) {
        cout << x << endl;
        return 1;
      }
    return 0;
  };