#include [[nodiscard]] static inline constexpr const char* solve(const uint_fast32_t N, const std::vector& W) noexcept { const uint_fast32_t sum_W = std::accumulate(W.begin(), W.end(), UINT32_C(0)); if (sum_W & 1) return "impossible"; std::array, 2> dp = { std::vector(sum_W / 2 + 1, false), std::vector(sum_W / 2 + 1, false) }; dp[0][0] = true; for (uint_fast32_t i = 0; i != N; ++i) { for (uint_fast32_t j = 0; j < std::min(W[i], sum_W / 2 + 1); ++j) dp[(i & 1) ^ 1][j] = dp[i & 1][j]; for (uint_fast32_t j = std::min(W[i], sum_W / 2 + 1); j <= sum_W / 2; ++j) dp[(i & 1) ^ 1][j] = dp[i & 1][j] | dp[i & 1][j - W[i]]; } if (dp[N & 1][sum_W / 2]) return "possible"; else return "impossible"; } int main() { std::cin.tie(nullptr); std::ios::sync_with_stdio(false); uint_fast32_t N; std::cin >> N; std::vector W(N); for (auto& w : W) std::cin >> w; std::cout << solve(N, W) << '\n'; return 0; }