#include using namespace std; #define int long long #define ii pair #define app push_back #define all(a) a.begin(), a.end() #define bp __builtin_popcountll #define ll long long #define mp make_pair #define f first #define s second #define Time (double)clock()/CLOCKS_PER_SEC #define debug(x) std::cout << #x << ": " << x << '\n'; const int N = 1e5+7; int par[N]; int par_ed[N]; vector g[N]; int h[N]; bool used[N]; void dfs(int u) { used[u] = 1; for (auto e : g[u]) { int v = e.f; /* debug(u); debug(v); */ if (!used[v]) { h[v] = h[u] + 1; par[v] = u; par_ed[v] = e.s; dfs(v); } else if (h[v] < h[u] - 1) { vector ans = {e.s}; int cur = u; while (u != v) { ans.app(par_ed[u]); u = par[u]; } cout << ans.size() << endl; sort(all(ans)); for (auto e : ans) cout << e + 1 << ' '; cout << endl; exit(0); } } } signed main() { #ifdef HOME freopen("input.txt", "r", stdin); #else #define endl '\n' ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cout.setf(ios::fixed); cout.precision(20); #endif int n; cin >> n; for (int i = 0; i < n; ++i) { int u, v; cin >> u >> v; g[u].app(mp(v, i)); g[v].app(mp(u, i)); } dfs(1); assert(0); }