#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline bool smin(T &a, const T &b) {
  return a > b ? a = b : a;
}
template <typename T>
inline bool smax(T &a, const T &b) {
  return a < b ? a = b : a;
}
inline void add(long long &l, const long long &r) {
  l = (l + r) % long long(1e9 + 7);
}
int n, arr[int(1e5 + 10)];
int mark[int(1e5 + 10)];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) cin >> arr[i];
  sort(arr, arr + n, greater<int>());
  if (arr[0] >= n) return cout << "Impossible\n", 0;
  if (arr[0] != arr[1]) return cout << "Impossible\n", 0;
  if ((arr[n - 1] * 2) < arr[0]) return cout << "Impossible\n", 0;
  for (int i = 0; i < n; i++) mark[arr[i]]++;
  int D = arr[0];
  if ((D & 1) && mark[D / 2] != 2) return cout << "Impossible\n", 0;
  if (!(D & 1) && mark[D / 2] != 1) return cout << "Impossible\n", 0;
  for (int i = 0; i <= D; i++) {
    int me = max(D - i, i);
    if (!mark[me]) return cout << "Impossible\n", 0;
    mark[me]--;
  }
  cout << "Possible\n";
  return 0;
}
