#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <string>
#include <numeric>
#include <cstring>
#include <cmath>
#include <set>
#include <queue>
#include <stack>

const int MOD = 1e9 + 7;
const int iINF = 1000000000;
const long long int llINF = 1000000000000000000;
#define rep(i, n) for (int i = 0; i < (n); i++)

using namespace std;
using ll = long long int;
using P = pair<int, int>;
using edge = struct
{
    int to;
    int cost;
};

int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};

bool dp[10010];

int main()
{
    int N;
    cin >> N;
    vector<int> W(N);
    rep(i, N) cin >> W[i];
    int sum = accumulate(W.begin(), W.end(), 0);
    dp[0] = true;
    rep(i, N)
    {
        for (int j = 0; j <= sum; j++)
        {
            if(j + W[i] > sum) continue;
            dp[j + W[i]] = dp[j];
        }
    }
    cout << (dp[sum / 2] && sum % 2 == 0 ? "possible" : "impossible") << endl;
    return 0;
}