#include <bits/stdc++.h>
using namespace std;
const int maxN = 200 * 1000 + 5;
const int mod = 1000 * 1000 * 1000 + 7;
int a[maxN];
set<pair<int, int> > v[3];
void bad() { cout << "Impossible" << endl; }
int main() {
  ios::sync_with_stdio(0);
  cin.tie();
  int n;
  cin >> n;
  for (int i = 0; i < n; i++)
    cin >> a[i], v[a[i] % 3].insert(make_pair(a[i], i));
  for (int i = 0; i < 3; i++) {
    int x = (n + 2 - i) / 3;
    if (v[i].size() != x) {
      bad();
      return 0;
    }
  }
  int tmp = 0;
  vector<int> ans;
  for (int i = 0; i < n; i++) {
    int ind = i % 3;
    auto it = v[ind].lower_bound(make_pair(tmp, mod));
    if (it == v[ind].begin()) {
      bad();
      return 0;
    }
    it--;
    ans.push_back(it->second);
    tmp = it->first + 1;
    v[ind].erase(it);
  }
  cout << "Possible" << endl;
  for (int i = 0; i < n; i++) cout << ans[i] + 1 << ' ';
  cout << endl;
}
