#include <bits/stdc++.h>
using namespace std;
vector<bool> visitados;
vector<vector<int>> graf;
vector<int> padres;
void dfs(int origen) {
  visitados[origen] = true;
  for (int i : graf[origen]) {
    if (visitados[i] == false) {
      padres[i] = origen;
      dfs(i);
    }
  }
}
int main() {
  int n;
  cin >> n;
  graf.resize(n + 1);
  visitados.resize(n + 1, 0);
  padres.resize(n + 1, -1);
  for (int i = 2; i < n + 1; i++) {
    int a;
    cin >> a;
    graf[a].push_back(i);
    graf[i].push_back(a);
  }
  dfs(1);
  stack<int> pila;
  int fin = n;
  while (fin != -1) {
    pila.push(fin);
    fin = padres[fin];
  }
  while (!pila.empty()) {
    cout << pila.top() << " ";
    pila.pop();
  }
  return 0;
}
