import sys def main(): sys.setrecursionlimit(1 << 25) N = int(sys.stdin.readline()) adj = [[] for _ in range(N + 1)] for i in range(1, N + 1): a, b = map(int, sys.stdin.readline().split()) adj[a].append((b, i)) adj[b].append((a, i)) disc = [0] * (N + 1) low = [0] * (N + 1) visited = [False] * (N + 1) bridges = set() time = 1 stack = [(1, -1, -1, False, 0)] # (u, parent, parent_e, is_processed, edge_idx) while stack: u, parent_u, parent_e, is_processed, edge_idx = stack.pop() if not is_processed: if visited[u]: continue visited[u] = True disc[u] = low[u] = time time += 1 stack.append((u, parent_u, parent_e, True, 0)) continue updated = False for i in range(edge_idx, len(adj[u])): v, e = adj[u][i] if v == parent_u: continue if not visited[v]: stack.append((u, parent_u, parent_e, True, i + 1)) stack.append((v, u, e, False, 0)) updated = True break else: if disc[v] < disc[u]: low[u] = min(low[u], disc[v]) if not updated: if parent_u != -1: if low[u] > disc[parent_u]: bridges.add(parent_e) low[parent_u] = min(low[parent_u], low[u]) ans = [] for i in range(1, N + 1): if i not in bridges: ans.append(i) ans.sort() print(len(ans)) if ans: print(' '.join(map(str, ans))) else: print() if __name__ == "__main__": main()