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 java.util.*;
import java.io.*;

public class Main {
    static ArrayList<Integer>[]graph=new ArrayList[200001];
    static int n;
    public static void main(String[] args) throws IOException{
        BufferedReader f = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(new PrintStream(System.out));
        n=Integer.parseInt(f.readLine());
        for(int i=0;i<n;i++)graph[i]=new ArrayList<>();
        StringTokenizer st=new StringTokenizer(f.readLine());
        for(int i=1;i<n;i++){
            int a=Integer.parseInt(st.nextToken())-1;
            graph[a].add(i);
            graph[i].add(a);
        }
        dfs(0);
        for(int i=ans.size()-1;i>=0;i--){
            System.out.print(ans.get(i)+1+" ");
        }
        f.close();
        out.close();
    }
    static boolean[]visited=new boolean[200001];
    static boolean found =false;
    static void dfs(int curr){
        visited[curr]=true;
        if(curr==n-1){
            ans.add(curr);
            found=true;return;
        }
        for(int i=0;i<graph[curr].size();i++){
            int next=graph[curr].get(i);
            if(!visited[next]){
                dfs(next);
            }
            if(found){
                ans.add(curr);return;
            }
        }
    }
    static ArrayList<Integer>ans=new ArrayList<>();
}
class pair implements Comparable <pair>{
    int num;
    int idx;

    public int compareTo(pair other){
        return num- other.num;
    }


    pair(int a, int b)
    {
        num=a;
        idx=b;
    }
}