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)))