#include <bits/stdc++.h>
using namespace std;
const int M = 2e5 + 100;
vector<int> G[M];
int mp[M];
int main() {
  int n, x;
  while (~scanf("%d", &n)) {
    memset(mp, 0, sizeof(mp));
    for (int i = 0; i < n; i++) G[i].clear();
    for (int i = 1; i <= n; i++) {
      scanf("%d", &x);
      G[x].push_back(i);
      mp[x]++;
    }
    if (!mp[0])
      puts("Impossible");
    else {
      vector<int> res;
      int pre = 0;
      while (true) {
        if (mp[pre]) {
          res.push_back(G[pre][mp[pre] - 1]);
          mp[pre]--;
          pre++;
        } else {
          pre -= 3;
        }
        if (pre < 0) break;
      }
      int len = res.size();
      if (len != n)
        puts("Impossible");
      else {
        puts("Possible");
        for (int i = 0; i < len; i++) {
          if (i) putchar(' ');
          printf("%d", res[i]);
        }
        puts("");
      }
    }
  }
  return 0;
}
