#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define FOR(i,a,b) for(ll i=(a);i<(b);++i) #define ALL(v) (v).begin(), (v).end() #define p(s) cout<<(s)< void vprint(T &V){ for(auto v : V){ cout << v << " "; } cout << endl; } // i番目まで見た時に重さ j が作れるか bool dp[110][10010]; int main(){ cin.tie(0); ios::sync_with_stdio(false); // input ll N; cin >> N; vector A(N); FOR(i, 0, N){ cin >> A.at(i); } sort(ALL(A)); ll sum = 0; for(ll a : A){ sum += a; } if(sum%2==1){ p("impossible"); return 0; } ll half = sum / 2; ll w = A[0]; dp[0][w] = true; FOR(i, 1, N){ // 過去の重みは作れる FOR(w, 0, 10010){ dp[i][w] = dp[i-1][w]; } // 今回の重みも作れる ll a = A[i]; dp[i][a] = true; // 過去の重み+今回の重みも作れる FOR(w, 0, 10010){ if(dp[i-1][w]){ dp[i][w+a] = true; } } } ll makable = dp[N-1][half]; if(makable){ p("possible"); }else{ p("impossible"); } return 0; }