Once upon a time there was only one router in the well-known company Bmail. Years went by and over time new routers were purchased. Every time they bought a new router, they connected it to one of the routers bought before it. You are given the values p_i — the index of the router to which the i-th router was connected after being purchased (p_i < i).

There are n routers in Boogle in total now. Print the sequence of routers on the path from the first to the n-th router.

Input

The first line contains integer number n (2 ≤ n ≤ 200000) — the number of the routers. The following line contains n-1 integers p_2, p_3, ..., p_n (1 ≤ p_i < i), where p_i is equal to index of the router to which the i-th was connected after purchase.

Output

Print the path from the 1-st to the n-th router. It starts with 1 and ends with n. All the elements in the path should be distinct.

Examples

Input

8
1 1 2 2 3 2 5


Output

1 2 5 8 

Input

6
1 2 3 4 5


Output

1 2 3 4 5 6 

Input

7
1 1 2 3 4 3


Output

1 3 7 
import queue

def bfs(graph,v_source,n_vertex):
    INF = 2**31-1
    v_dest = n_vertex-1
    q = queue.Queue()
    visited = [False for i in range(n_vertex)]
    shortest_dists = [INF for i in range(n_vertex)]
    parents = [None for i in range(n_vertex)]
    shortest_dists[v_source] = 0
    visited[v_source] = True
    q.put(v_source)
    while not q.empty():
        v_from = q.get()
        for v_to in graph[v_from]:
            if not visited[v_to]:
                visited[v_to] = 1
                q.put(v_to)
                shortest_dists[v_to] = shortest_dists[v_from] + 1
                parents[v_to] = v_from
    end = v_dest
    shortes_path = []
    while end is not None:
        shortes_path.append(end+1)
        end = parents[end]
    return shortes_path[::-1]

n = int(input())
p = [int(e)-1 for e in input().split()]

graph = [[] for e in range(n)]

for ix,e in enumerate(p):
    graph[e].append(ix+1)
    

print( " ".join([str(e) for e in bfs(graph,0,n) ]))