import Data.Array import Data.List main = do n <- read <$> getLine :: IO Int ms <- map read . words <$> getLine :: IO [Int] let ns = listArray (1,n) ms :: Array Int Int let s = sum ms putStrLn $ if mod s 2 == 0 && dp ns (div s 2) then "possible" else "impossible" dp :: Array Int Int -> Int -> Bool dp ns half = memo!(n,half) where (_,n) = bounds ns memo = array ((0,0), (n,10000)) [((y,x), f y x)|y<-[0..n], x<-[0..10000]] f 0 0 = True f 0 x = False f y x = memo!(y-1,x) || (if x-(ns!y)>=0 then memo!(y-1,x-(ns!y)) else False)