#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
 
#define pb push_back
#define forn(i,n) for (int i=0;i<(int)n;i++)
 
using namespace std;
int n; int root = 0;
vector <int> g[100500];
int p[100500];
 
void go()
{
        int par = root; int child = 0;
        
        while (par != root || child != (int)g[root].size())
        {
                if (child == (int)g[par].size()) 
                {
                        cout << par << " ";
                        child = p[par];
                        int l = 0; int r = (int)g[child].size();
                        while (l != r-1)
                        {
                                int m = (l + r) >> 1;
                                if (g[child][m] <= par) l = m; else r = m;
                        }
                        par = l + 1;
                        swap(child,par);
                        continue;
                }
                par = g[par][child];
                child = 0;
        }
        cout << root << endl;
}
 
int main() {
  cin >> n;
  forn(i,n-1)
  {
        int par; scanf("%d",&par);
        p[i+1] = par;
        g[par].pb(i+1);
  }
  forn(i,n)
          sort(g[i].begin(),g[i].end());
 
  go();
  
  return 0;
}