#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
int n, x;
int num[maxn];
vector<int> g[maxn];
bool mark[maxn];
void dfs(int u) {
  mark[u] = true;
  for (int i = 0; i < g[u].size(); i++) {
    int v = g[u][i];
    if (!mark[v]) {
      dfs(v);
      num[u] += num[v];
    }
  }
  if (g[u].empty()) num[u] = 1;
}
int main() {
  cin >> n;
  for (int i = 1; i < n; i++) {
    cin >> x;
    x--;
    g[x].push_back(i);
  }
  dfs(0);
  sort(num, num + n);
  for (int i = 0; i < n; i++) cout << num[i] << " ";
}
