#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using ch = char;
const ll MOD = 1000000007;
const ll MOD2 = 998244353;
const ld PI = acos(-1);
const ll INF = 1e18;
struct edge {
  ll to, cost;
};
struct edge2 {
  ll from, to, cost;
};
template <typename T>
bool chmax(T& a, const T& b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <typename T>
bool chmin(T& a, const T& b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int N;
  cin >> N;
  vector<ll> X(N);
  vector<ll> cnt(102, 0);
  for (int i = 0; i < N; i++) {
    cin >> X[i];
    cnt[X[i]]++;
  }
  ll i = 1;
  while (cnt[i] == 0) {
    i++;
  }
  if (i == 1) {
    if (N == 2) {
      cout << (cnt[1] == 2 ? "Possible" : "Impossible") << endl;
    } else if (cnt[1] == 1 && cnt[2] == N - 1) {
      cout << "Possible" << endl;
    } else {
      cout << "Impossible" << endl;
    }
    return 0;
  } else {
    if (cnt[i] > 2) {
      cout << "Impossible" << endl;
    } else {
      ll now = cnt[i];
      ll j = i;
      i++;
      while (cnt[i] >= 2) {
        now += cnt[i];
        i++;
      }
      if (!((cnt[j] == 1 && i % 2 == 1) || (cnt[j] >= 2 && i % 2 == 0))) {
        cout << "Impossible" << endl;
        return 0;
      } else if (!(2 * j + 1 == i || 2 * j == i)) {
        cout << "Impossible" << endl;
        cout << 1 << endl;
      } else if (now == N) {
        cout << "Possible" << endl;
      } else {
        cout << "Impossible" << endl;
      }
    }
    return 0;
  }
}
