#include using namespace std; using LL = long long; using ULL = unsigned long long; #define rep(i,n) for(int i=0; i<(n); i++) const int xN = 100000; int N, M; vector E[xN], rE[xN]; int I[xN], rI[xN]; int P[xN], H[xN]; LL ans = 0; int DFS1(int p, int i = 0) { for (int e : E[p]) { if (P[p] == e) continue; rE[e].push_back(p); if (P[e] != -1) continue; P[e] = p; i = DFS1(e, i); } I[p] = i; rI[i] = p; ++i; return i; } void DFS2(int p, int s) { if (rI[I[p]] != p) return; H[p] = s; for (int e : rE[p]) { if (I[e] > I[s]) continue; if (H[e] != -1) continue; DFS2(e, s); } } void strongDc() { rep(i, N) P[i] = I[i] = H[i] = -1; rep(i, N) { if (P[i] != -1) continue; P[i] = i; int Z = DFS1(i); for (int i = Z - 1; i != -1; i--) if (H[rI[i]] == -1) DFS2(rI[i], rI[i]); } } vector> J; int main() { cin >> N; rep(i, N) { int u, v; cin >> u >> v; u--; v--; J.push_back({ u,v }); E[u].push_back(v); E[v].push_back(u); } strongDc(); vector ans; rep(i, N) { if (H[J[i].first] == H[J[i].second]) ans.push_back(i); } cout << ans.size() << endl; rep(i, ans.size()) { if (i) cout << " "; cout << (ans[i] + 1); } cout << endl; return 0; }