func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1000010;   int fa[N], mx[N], n;   vector<int> son[N];   vector<int> ans;   bool cmp(const int x, const int y) { return mx[x] < mx[y]; }   void dfs(int x) {     int s = son[x].size();     for (int i = 0; i < s; ++i) {       int& sn = son[x][i];       dfs(sn);       mx[x] = max(mx[x], mx[sn] + 1);     }     sort(son[x].begin(), son[x].end(), cmp);   }   void DFS(int x) {     printf( %d  , x);     for (int i = 0; i < son[x].size(); ++i) {       int& sn = son[x][i];       DFS(sn);       if (i == 0) continue;       for (int j = 0; j <= mx[son[x][i - 1]]; ++j) ans.push_back(sn);     }   }   int main() {     scanf( %d , &n);     for (int i = 1; i < n; ++i) {       scanf( %d , &fa[i]);       son[fa[i]].push_back(i);     }     dfs(0);     DFS(0);     int s = ans.size();     printf(  n%d n , s);     for (int i = 0; i < s; ++i) printf( %d  , ans[i]);     return 0;   }   