#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200050;
int n, A[MAXN];
vector<int> W[MAXN];
int main() {
  while (scanf("%d", &n) >= 1) {
    for (int i = (0); i < (int)(MAXN); i++) W[i].clear();
    for (int i = (0); i < (int)(n); i++) {
      scanf("%d", &A[i]);
      W[A[i]].push_back(i);
    }
    int p = 0;
    vector<int> pnt = vector<int>(n, 0);
    vector<int> ans;
    while ((int)ans.size() < n) {
      if (pnt[p] < (int)W[p].size()) {
        ans.push_back(W[p][pnt[p]]);
        pnt[p]++;
        bool ok = false;
        for (int d = 1; p + d >= 0; d -= 3) {
          if (pnt[p + d] < (int)W[p + d].size()) {
            p = p + d;
            ok = true;
            break;
          }
        }
        if (!ok) break;
      } else {
        break;
      }
    }
    if ((int)ans.size() == n) {
      puts("Possible");
      for (int i = (0); i < (int)(ans.size()); i++) {
        if (i) printf(" ");
        printf("%d", ans[i] + 1);
      }
      puts("");
    } else {
      puts("Impossible");
    }
  }
  return 0;
}
