#include <bits/stdc++.h>
using namespace std;
const int N = 1111;
const int INF = 1000000000, mod = 1000000007;
const long long LLINF = 1000000000000000000ll;
set<pair<int, int> > s[3];
vector<int> ans;
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    int x;
    cin >> x;
    s[x % 3].insert(make_pair(x, i + 1));
  }
  int sit = 0;
  while (s[0].size() || s[1].size() || s[2].size()) {
    set<pair<int, int> > &t = s[sit % 3];
    auto iter = t.upper_bound(make_pair(sit, INF));
    if (iter == t.begin()) return cout << "Impossible\n", 0;
    --iter;
    int x = (*iter).first, y = (*iter).second;
    ans.push_back(y);
    sit = x + 1;
    t.erase(iter);
  }
  cout << "Possible\n";
  for (int x : ans) cout << x << ' ';
  return 0;
}
