func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 234567;   int n;   vector<int> e[N];   int f[N];   void dfs(int u, int p) {     int go_before_parent = 0;     int go_after_parent = 0;     for (int i = 0; i < e[u].size(); ++i) {       int v = e[u][i];       if (v == p) {         continue;       }       dfs(v, u);       if (f[v] == 0) {         ++go_before_parent;       } else {         ++go_after_parent;       }     }     int son_degree = go_after_parent;     if (son_degree & 1) {       f[u] = 0;     } else {       f[u] = 1;     }   }   void print_solution(int u, int p) {     for (int i = 0; i < e[u].size(); ++i) {       int v = e[u][i];       if (v == p) {         continue;       }       if (f[v] == 0) {         print_solution(v, u);       }     }     cout << u << endl;     for (int i = 0; i < e[u].size(); ++i) {       int v = e[u][i];       if (v == p) {         continue;       }       if (f[v] == 1) {         print_solution(v, u);       }     }   }   int main() {     cin >> n;     for (int i = 1, j; i <= n; ++i) {       cin >> j;       if (j != 0) {         e[i].push_back(j);         e[j].push_back(i);       }     }     dfs(1, 0);     if (f[1] == 0) {       cout <<  NO  << endl;       return 0;     }     cout <<  YES  << endl;     print_solution(1, 0);     return 0;   }   