#include #define FOR(i,a,b) for(int i=(a);i<(b);++i) #define rep(i,n) FOR(i,0,n) #define repr(i,n) for(int i=(n)-1;0<=i;--i) #define each(e,v) for(auto&& e:(v)) #define all(v) begin(v),end(v) #define DUMP(x) cerr<<#x<<": "<<(x)<; using vdouble = vector; using vstring = vector; using ll = long long; template void chmin(T& a, const T& b) { a = min(a, b); } template void chmax(T& a, const T& b) { a = max(a, b); } int main() { int N; cin >> N; vint w(N); rep(i, N) cin >> w[i]; sort(all(w)); const int W = accumulate(all(w), 0); if(W % 2 != 0) { cout << "impossible" << endl; return 0; } int dp[N+1][W+1]; fill(dp[0], dp[N+1], 0); repr(i, N) { rep(mw, W+1) { if(mw < w[i]) dp[i][mw] = dp[i+1][mw]; else dp[i][mw] = max(dp[i+1][mw], dp[i+1][mw - w[i]] + w[i]); } } if(dp[0][W/2] == W/2) cout << "possible" << endl; else cout << "impossible" << endl; return 0; }