#include <bits/stdc++.h>
using namespace std;
vector<int> a;
vector<int> gr1[200001];
vector<int> gr2[200001];
int vis1[200001];
int vis2[200001];
vector<int> res1;
vector<int> res2;
queue<int> q;
void print1(int x) {
  vis1[x] = 1;
  q.push(x);
  while (!q.empty()) {
    int f = q.front();
    q.pop();
    for (long long k = 0; k < gr1[f].size(); k++) {
      if (vis1[gr1[f][k]] == 0) {
        vis1[gr1[f][k]] = 1;
        res1.push_back(f);
        q.push(gr1[f][k]);
      }
    }
  }
  while (!q.empty()) q.pop();
}
void print2(int x) {
  vis2[x] = 1;
  q.push(x);
  while (!q.empty()) {
    int f = q.front();
    q.pop();
    for (long long k = 0; k < gr2[f].size(); k++) {
      if (vis2[gr2[f][k]] == 0) {
        vis2[gr2[f][k]] = 1;
        res2.push_back(f);
        q.push(gr2[f][k]);
      }
    }
  }
  while (!q.empty()) q.pop();
}
int main() {
  int n;
  cin >> n;
  int x;
  for (long long k = 0; k < n + 1; k++) {
    cin >> x;
    a.push_back(x);
  }
  int cur = 1;
  bool pos = false;
  for (long long k = 0; k < a.size(); k++) {
    if (k == 0) continue;
    int x = a[k];
    if (k > 1 && a[k - 1] >= 2 && x > 1 && pos == false) {
      pos = true;
      for (long long j = 0; j < x; j++) {
        gr1[cur].push_back(cur + j + 1);
        gr1[cur + j + 1].push_back(cur);
        if (j % 2 == 0) {
          gr2[cur].push_back(cur + j + 1);
          gr2[cur + j + 1].push_back(cur);
        } else {
          gr2[cur - 1].push_back(cur + j + 1);
          gr2[cur + j + 1].push_back(cur - 1);
        }
      }
    } else {
      for (long long j = 0; j < x; j++) {
        gr1[cur].push_back(cur + j + 1);
        gr1[cur + j + 1].push_back(cur);
        gr2[cur].push_back(cur + j + 1);
        gr2[cur + j + 1].push_back(cur);
      }
    }
    cur += x;
  }
  if (pos) {
    cout << "ambiguous" << endl;
    res1.push_back(0);
    res2.push_back(0);
    vis1[1] = 1;
    vis2[1] = 1;
    print1(1);
    print2(1);
    for (long long k = 0; k < res1.size(); k++) cout << res1[k] << " ";
    cout << endl;
    for (long long k = 0; k < res2.size(); k++) cout << res2[k] << " ";
  } else {
    cout << "perfect";
  }
  return 0;
}
