func_code_string: #include <bits/stdc++.h>   using namespace std;   long long int pwr(long long int base, long long int p, long long int mod) {     long long int ans = 1;     while (p) {       if (p & 1) ans = (ans * base) % mod;       base = (base * base) % mod;       p /= 2;     }     return ans;   }   long long int gcd(long long int a, long long int b) {     if (b == 0) return a;     return gcd(b, a % b);   }   int main() {     int n;     scanf( %d , &n);     int a[n + 1];     int par[300005];     int cnt = 0;     int lvl = 0, flag = 0, p = -1;     vector<int> g[n + 2];     for (int i = 0; i <= n; i++) {       scanf( %d , &a[i]);       for (int j = 1; j <= a[i]; j++) {         g[i].push_back(++cnt);         par[cnt] = lvl;       }       lvl = cnt;       if (i >= 1) {         if (a[i] > 1 && a[i - 1] > 1) flag = i;       }     }     if (flag == 0) {       printf( perfect n );       return 0;     }     printf( ambiguous n );     for (int i = 1; i <= cnt; i++) {       printf( %d  , par[i]);     }     printf(  n );     par[g[flag][0]] = g[flag - 1][0];     for (int i = 1; i <= cnt; i++) {       printf( %d  , par[i]);     }     return 0;   }   