#include //#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //using namespace atcoder; using namespace std; using ll = long long; #define all(A) A.begin(),A.end() using vll = vector; #define rep(i, n) for (long long i = 0; i < (long long)(n); i++) using Graph = vector>>; vector seen; bool C = true; vector dist; ll mod =1e9+7; int op(int a, int b) { return min(a, b); } int e() { return int(1e9); } int main() { ll N; cin >> N; vll W(N); ll S = 0; rep(i, N) { cin >> W[i]; S += W[i]; } if (S % 2 != 0) { cout << "impossible" << endl; return 0 ; } vector> DP(N+1, vector(10001, false)); DP[0][0] = true; rep(i, N) { rep(w, 10001) { if (DP[i][w]) { DP[i + 1][w] = true; DP[i + 1][w + W[i]] = true; } } } if (DP[N][S / 2]) { cout << "possible" << endl; } else { cout << "impossible" << endl; } }