#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:3200000000000")
using namespace std;
const int INF = 1e9 + 7;
const long double EPS = 1e-10;
int main() {
  int n;
  set<pair<int, int> > ost[3];
  cin >> n;
  for (int i = 0; i < n; i++) {
    int num;
    cin >> num;
    ost[num % 3].insert(make_pair(num, i + 1));
  }
  vector<int> ans;
  int q = 0;
  for (int i = 0; i < n; i++) {
    auto it = ost[q % 3].lower_bound(make_pair(q, INF));
    if (it == ost[q % 3].begin()) {
      cout << "Impossible";
      return 0;
    }
    it--;
    if (it->first > q) {
      cout << "Impossible";
      return 0;
    }
    ans.push_back(it->second);
    int nq = it->first + 1;
    ost[q % 3].erase(it);
    q = nq;
  }
  cout << "Possible" << endl;
  for (int i = 0; i < ans.size(); i++) {
    cout << ans[i] << " ";
  }
  return 0;
}
