#include <bits/stdc++.h>
using namespace std;
const long long M = 1e9 + 7;
const long long INF = 1e9;
inline long long pwr(long long base, long long n, long long m) {
  long long ans = 1;
  while (n > 0) {
    if (n % 2 == 1) ans = (ans * base) % m;
    base = (base * base) % m;
    n /= 2;
  }
  return ans;
}
const int sz = (int)2e5 + 10;
int h, ht[sz], par[sz], par1[sz];
int hht[sz];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> h;
  string res = "perfect";
  int nd, cnt = 0;
  for (long long i = 0; i < h + 1; i++) {
    cin >> ht[i];
    cnt += ht[i];
    if (i > 0 && ht[i] > 1 && ht[i - 1] > 1) {
      res = "ambiguous";
      nd = i;
    }
  }
  cout << res << "\n";
  if (res == "perfect") return 0;
  par[1] = par1[1] = 0;
  hht[1] = 0;
  int z = 2, pre = 1, hhh = 1;
  while (1) {
    if (z > cnt) break;
    par[z] = par1[z] = pre;
    hht[z] = hhh;
    ht[hhh]--;
    if (ht[hhh] == 0) {
      hhh++;
      pre = z;
    }
    z++;
  }
  int v1 = -1;
  for (long long i = 1; i < cnt + 1; i++) {
    if (hht[i] == nd) {
      v1 = i;
      break;
    }
  }
  for (long long i = 1; i < cnt + 1; i++) {
    if (hht[i] == nd - 1 && par1[v1] != i) {
      par1[v1] = i;
      break;
    }
  }
  for (long long i = 1; i < cnt + 1; i++) cout << par[i] << " ";
  cout << "\n";
  for (long long i = 1; i < cnt + 1; i++) cout << par1[i] << " ";
  return 0;
}
