#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void ZZ(const char* name, Arg1&& arg1) {
  std::cerr << name << " = " << arg1 << "\n";
}
template <typename Arg1, typename... Args>
void ZZ(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  std::cerr.write(names, comma - names) << " = " << arg1;
  ZZ(comma, args...);
}
const long long int MAX2 = 105;
const long long int MAX3 = 1005;
const long long int MAX4 = 10005;
const long long int MAX5 = 100005;
const long long int MAX6 = 1000005;
const long long int MAX7 = 10000005;
map<long long int, long long int> cnt, pnt;
bool cmp(pair<long long int, long long int> x,
         pair<long long int, long long int> y) {
  return x.second < y.second;
}
void solve() {
  long long int n;
  cin >> n;
  ;
  vector<pair<long long int, long long int> > arr(n), brr(n);
  for (long long int i = 0; i < n; i++) {
    cin >> arr[i].first;
    arr[i].second = i;
    cnt[arr[i].first]++;
    pnt[arr[i].first]++;
  }
  sort(arr.begin(), arr.end());
  if (n == 1) {
    if (!arr[0].first) {
      cout << "Possible \n";
      cout << 1;
    } else {
      cout << "Impossible";
    }
    return;
  }
  bool ok = true;
  for (auto i : pnt) {
    long long int temp = n - i.first;
    if (i.second % temp != 0)
      ok = false;
    else
      pnt[i.first] = i.second / temp;
  }
  if (!ok) {
    cout << "Impossible";
    return;
  }
  cout << "Possible \n";
  long long int k = 1, xx = 0;
  vector<long long int> ans;
  for (auto i : pnt) {
    long long int grpsize = cnt[i.first] / pnt[i.first];
    long long int nog = pnt[i.first];
    for (long long int x = 1; x < nog + 1; x++) {
      for (long long int y = 1; y < grpsize + 1; y++) {
        arr[xx++].first = k;
      }
      ++k;
    }
  }
  sort(arr.begin(), arr.end(), cmp);
  for (long long int i = 0; i < n; i++) {
    cout << arr[i].first << " ";
  }
}
int main() {
  int t;
  t = 1;
  cin.sync_with_stdio(0), cin.tie(0);
  while (t--) {
    solve();
    cout << "\n";
  }
  return 0;
}
