#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
const int maxn = 200010;
stack<int> s[maxn];
int ans[maxn];
int main() {
  int n;
  while (~scanf("%d", &n)) {
    for (int i = 0; i <= n; i++)
      while (!s[i].empty()) s[i].pop();
    for (int i = 1; i <= n; i++) {
      int a;
      scanf("%d", &a);
      s[a].push(i);
    }
    int p = 0, i = 0;
    while (true) {
      if (!s[i].empty())
        ans[p++] = s[i++].top();
      else {
        if (i < 3) break;
        i--, s[i].pop();
        i--, s[i].pop();
        i--, s[i].pop();
      }
    }
    if (p != n)
      puts("Impossible");
    else {
      puts("Possible");
      for (int i = 0; i < n; i++) printf("%d ", ans[i]);
      printf("\n");
    }
  }
  return 0;
}
