#include <stdio.h> // どうしてこの解法を思いつけなかったんだろう... int judge(); int n, w[100], table[5001]; int main(void) { scanf("%d", &n); int i; for(i = 0; i < n; i++) { scanf("%d", &w[i]); } printf("%s%s\n", judge() ? "" : "im", "possible"); return 0; } int judge() { int sum = 0, i, j; for(i = 0; i < n; i++) { sum += w[i]; } if(sum % 2) { return 0; } int half = sum / 2; table[0] = 1; for(i = 0; i < n; i++) { if(w[i] == half) { return 1; } for(j = 0; j < half; j++) { if(0 < table[j] && table[j] < i + 2) { int v = j + w[i]; if(v == half) { return 1; } if(v < half && table[v] == 0) { table[v] = i + 2; } } } } return 0; }