#include <bits/stdc++.h>
using namespace std;
int n;
int i;
struct cp {
  int val;
  int ind;
  cp() {}
  cp(int x, int y) : val(x), ind(y) {}
};
vector<int> v[200200];
bool cmp(cp x, cp y) { return (x.val <= y.val); }
vector<int> sol;
bool ok;
int nr;
int main() {
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    int x;
    scanf("%d", &x);
    v[x].push_back(i);
  }
  ok = true;
  nr = 0;
  for (i = 1; i <= n && ok == true; i++) {
    while (nr >= 0) {
      if (v[nr].size() != 0) {
        sol.push_back(v[nr][v[nr].size() - 1]);
        v[nr].pop_back();
        nr++;
        break;
      } else {
        if (nr - 3 < 0) {
          ok = false;
          break;
        } else
          nr = nr - 3;
      }
    }
  }
  if (ok == true) {
    printf("Possible\n");
    for (i = 0; i < sol.size(); i++) printf("%d ", sol[i]);
  } else
    printf("Impossible");
  return 0;
}
