func_code_string: #include <bits/stdc++.h>   using namespace std;   const int Inf = (int)1e9;   const long long InfL = (long long)1e18;   const int MaxN = (int)2e5 + 5;   vector<int> adj[MaxN], ans;   int n, a, deg[MaxN], dead[MaxN];   void dfs2(int x, int p) {     dead[x] = true;     ans.push_back(x);     for (auto u : adj[x]) --deg[u];     for (auto u : adj[x])       if (u != p && !dead[u]) dfs2(u, x);   }   void dfs1(int x, int p) {     for (auto u : adj[x])       if (u != p) dfs1(u, x);     if (!(deg[x] & 1)) dfs2(x, p);   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     cout.tie(nullptr);     cin >> n;     for (int i = 1; i <= n; i++) {       cin >> a;       if (!a) continue;       adj[i].push_back(a);       deg[i]++;       adj[a].push_back(i);       deg[a]++;     }     dfs1(1, 0);     if (ans.size() == n) {       cout <<  YES  <<   n ;       for (int i = 0; i < n; i++) cout << ans[i] <<   n ;     } else {       cout <<  NO  <<   n ;     }     return 0;   }   