#include <bits/stdc++.h>
using namespace std;
vector<int> tab;
vector<vector<int> > graf;
int n;
void dfs(int a) {
  for (int s : graf[a]) {
    dfs(s);
    tab[a] += tab[s];
  }
  if ((int)graf[a].size() == 0) tab[a] = 1;
}
int main() {
  scanf("%d", &n);
  graf.resize(n);
  tab.resize(n, 0);
  int s;
  for (int i = 1; i < n; i++) {
    scanf("%d", &s);
    graf[s - 1].push_back(i);
  }
  dfs(0);
  sort(tab.begin(), tab.end());
  int x = 0;
  for (int i = 0; i < n; i++) {
    printf("%d ", tab[i]);
  }
  printf("\n");
}
