#include <bits/stdc++.h>
using namespace std;
long long GCD(long long a, long long b) {
  if (b == 0) return a;
  return (a % b == 0 ? b : GCD(b, a % b));
}
long long POW(long long base, long long exp) {
  long long val;
  val = 1;
  while (exp > 0) {
    if (exp % 2 == 1) {
      val = (val * base) % 1000000007;
    }
    base = (base * base) % 1000000007;
    exp = exp / 2;
  }
  return val;
}
queue<int> q[200005];
vector<int> ans;
int main() {
  int n, num, i, idx, ask;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &num);
    q[num].push(i + 1);
  }
  ask = 0;
  while (1) {
    if (!q[ask].empty()) {
      idx = q[ask].front();
      q[ask].pop();
      ans.push_back(idx);
      ask += 1;
    } else {
      if (ask < 3) {
        break;
      } else {
        ask = ask - 3;
      }
    }
  }
  if (ans.size() == n) {
    printf("Possible\n");
    for (i = 0; i < n; i++) {
      printf("%d ", ans[i]);
    }
    printf("\n");
  } else {
    printf("Impossible\n");
  }
  return 0;
}
