#include "bits/stdc++.h" using namespace std; /*第二引数で第一引数を割ったときの切り上げの計算*/ long long int maxtime(long long int x, long long int y) { return(x + y - 1) / y; } /*最大公約数*/ long long int lcm(long long int number1, long long int number2) { long long int m = number1; long long int n = number2; if (number2 > number1) { m = number2; n = number1; } long long int s = -1; while (s != 0) { s = m % n; m = n; n = s; } return m; } /*最大公倍数*/ long long int gcd(long long int number1, long long int number2) { long long int m = number1; long long int n = number2; return m / lcm(m, n) * n; } int locks(int a, int b,vector c) { int k = a; int d = b; if (a == 0) { return 1; } if (d >= c.size()) { return 0; } if (a < 0) { return 0; } if (locks(a - c[b], b + 1, c) == 1) { return 1; } if (locks(a, b + 1, c)) { return 1; } } int N; vectorc; int numbers = 0; int main() { cin >> N; for (int i = 0; i < N; i++) { int a; cin >> a; c.push_back(a); numbers = a + numbers; } sort(c.begin(), c.end(), greater()); if (numbers % 2 != 0) { cout << "impossible"; } else { numbers = numbers / 2; int o = locks(numbers, 0, c); if (o != 0) { cout << "possible"; } else { cout << "impossible"; } } }