#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
long long max(long long a, long long b) {
  if (a > b) {
    return a;
  } else {
    return b;
  }
}
long long min(long long a, long long b) {
  if (a < b) {
    return a;
  } else {
    return b;
  }
}
vector<int> g[N];
vector<int> cnt;
int dfs(int v) {
  if (g[v].empty()) {
    cnt[v] = 1;
  }
  for (auto e : g[v]) {
    cnt[v] += dfs(e);
  }
  return cnt[v];
}
void solve() {
  int n;
  cin >> n;
  int x;
  cnt.resize(n);
  for (int i = 1; i < n; i++) {
    cin >> x;
    x--;
    g[x].push_back(i);
  }
  dfs(0);
  sort(cnt.begin(), cnt.end());
  for (int i = 0; i < (n); i++) {
    cout << cnt[i] << " ";
  }
  cout << endl;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie();
  cout.tie();
  int t = 1;
  while (t--) {
    solve();
  }
}
