#include <bits/stdc++.h>
using namespace std;
int min(int x, int y) {
  if (x < y)
    return x;
  else
    return y;
}
stack<int> s;
map<int, int> mp;
void dfs(int id) {
  if (id == 1) {
    s.push(1);
    return;
  }
  s.push(id);
  dfs(mp[id]);
}
int main() {
  int n, i, t;
  cin >> n;
  mp[1] = 1;
  for (i = 2; i <= n; i++) {
    scanf("%d", &t);
    mp[i] = t;
  }
  dfs(n);
  while (!s.empty()) {
    printf("%d ", s.top());
    s.pop();
  }
  printf("\n");
  return 0;
}
