#include using namespace std; #define REP(i,n) for(int i=0; i<(int)(n); i++) int n; vector g[100000]; map, int> idx; int vis[100000]; stack stk; vector ret; void dfs(int v, int p = -1) { vis[v] = -1; stk.push(v); for (int w : g[v]) { if (w == p) continue; if (vis[w] == 1) continue; if (vis[w] == -1) { while (stk.top() != w) { ret.push_back(stk.top()); stk.pop(); } for (int i = ret.size() - 1; i >= 0; i--) stk.push(ret[i]); ret.push_back(w); } else { dfs(w, v); } } stk.pop(); vis[v] = 1; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; for (int i = 0; i < n; i++) { int a, b; cin >> a >> b; --a, --b; idx[make_pair(min(a, b), max(a, b))] = i + 1; g[a].push_back(b); g[b].push_back(a); } dfs(0); int m = ret.size(); cout << m << endl; for (int i = 0; i < m; i++) { int a = ret[i]; int b = ret[(i+1)%m]; cout << idx[make_pair(min(a, b), max(a,b))] << " "; } cout << endl; return 0; }