func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 2e5;   int d[maxn];   std::vector<int> G[maxn];   int dp(int u) {     if ((int)G[u].size() == 0) {       return d[u] = 1;     } else if (d[u]) {       return d[u];     }     for (int i : G[u]) {       d[u] += dp(i);     }     return d[u];   }   int c[maxn];   int main(int argc, char const *argv[]) {     int n;     ios::sync_with_stdio(false);     cin.tie(0);     cin >> n;     for (int i = 2; i <= n; ++i) {       int u;       cin >> u;       G[u].push_back(i);     }     dp(1);     for (int i = 1; i <= n; ++i) {       c[d[i]]++;     }     int sum = c[1];     int res = 1;     for (int i = 1; i <= n; ++i) {       while (i > sum) {         sum += c[++res];       }       cout << res <<    ;     }     return 0;   }   