#include <bits/stdc++.h>
using namespace std;
const int N = 1000001;
int n;
set<pair<int, int> > a[3];
int ans[N];
int main() {
  scanf("%d", &n);
  for (int i = 0; i < int(n); i++) {
    int x;
    scanf("%d", &x);
    a[x % 3].insert(make_pair(x, i));
  }
  int cur = 0;
  for (int i = 0; i < int(n); i++) {
    set<pair<int, int> >::iterator it =
        a[cur % 3].lower_bound(make_pair(cur, -1));
    pair<int, int> c;
    if (it != a[cur % 3].end() && (*it).first == cur) {
      c = *(it);
      ans[i] = c.second + 1;
    } else {
      if (it == a[cur % 3].begin()) {
        puts("Impossible");
        return 0;
      } else {
        it--;
        c = *(it);
        ans[i] = c.second + 1;
      }
    }
    a[cur % 3].erase(c);
    cur = c.first + 1;
  }
  puts("Possible");
  for (int i = 0; i < int(n); i++) printf("%d ", ans[i]);
  return 0;
}
