#include <bits/stdc++.h>
using namespace std;
const int MN = 2e5 + 5;
int a[MN], n;
multiset<pair<int, int> > s;
multiset<pair<int, int> >::iterator it;
vector<int> ans;
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &a[i]);
    s.insert(make_pair(a[i], i));
  }
  int now = 0;
  for (int rep = 1; rep <= n; ++rep) {
    it = s.lower_bound(make_pair(now, 0));
    if (it != s.end() && (*it).first == now) {
      ans.push_back((*it).second);
      ++now;
      s.erase(it);
      continue;
    }
    bool ok = 0;
    while (now >= 3) {
      now -= 3;
      it = s.lower_bound(make_pair(now, 0));
      if (it != s.end() && (*it).first == now) {
        ok = 1;
        ans.push_back((*it).second);
        ++now;
        s.erase(it);
        break;
      }
    }
    if (ok) continue;
    printf("Impossible\n");
    return 0;
  }
  printf("Possible\n");
  for (int i = 0; i < n; ++i) printf("%d%c", ans[i], i == (n - 1) ? '\n' : ' ');
  return 0;
}
