#include <bits/stdc++.h>
using namespace std;
const int maxn = 200000 + 10;
queue<int> G[maxn];
queue<int> ans;
int main() {
  int n, x;
  while (scanf("%d", &n) != EOF) {
    for (int i = 1; i <= n; i++) {
      scanf("%d", &x);
      G[x].push(i);
    }
    if (G[0].empty()) {
      printf("Impossible\n");
      continue;
    }
    int S = 1, tp = 1;
    ans.push(G[0].front());
    G[0].pop();
    while (tp < n) {
      bool flag = 0;
      while (1) {
        if (!G[S].empty()) {
          ans.push(G[S].front());
          G[S].pop();
          S++;
          tp++;
          flag = 1;
          break;
        }
        S -= 3;
        if (S < 0) break;
      }
      if (!flag) break;
    }
    if (tp == n) {
      int cut = 0;
      printf("Possible\n");
      while (!ans.empty()) {
        int u = ans.front();
        ans.pop();
        if (!cut)
          printf("%d", u);
        else
          printf(" %d", u);
        cut = 1;
      }
      printf("\n");
    } else
      printf("Impossible\n");
  }
  return 0;
}
