import sys input = lambda : sys.stdin.readline().rstrip() sys.setrecursionlimit(max(1000, 10**9)) write = lambda x: sys.stdout.write(x+"\n") n = int(input()) ns = [[] for _ in range(n)] d = {} for ind in range(n): i,j = map(lambda x: int(x)-1, input().split()) ns[i].append(j) ns[j].append(i) d[min(i,j), max(i,j)] = ind + 1 def dfs(i, k, par): used[i] = True ord[i] = k k += 1 low[i] = ord[i] is_aps = False count = 0 for v in ns[i]: if not used[v]: count += 1 k = dfs(v, k, i) low[i] = min(low[i], low[v]) if par != -1 and ord[i] <= low[v]: is_aps = True if ord[i] < low[v]: bs.append((min(i, v), max(i, v))) elif v!=par: low[i] = min(low[i], ord[v]) if par==-1 and count>=2: is_aps = True if is_aps: aps.append(i) return k used = [False] * n ord = [False] * n low = [False] * n k = 0 aps = [] bs = [] for i in range(n): if not used[i]: k = dfs(i, k, -1) ans = set(d.values()) for i,j in bs: ans.discard(d[(i,j)]) print(len(ans)) write(" ".join(map(str, ans)))