import qualified Data.Set as S import Data.List import Data.Bool nub' = S.toList . S.fromList main = getContents >>= putStrLn . bool "impossible" "possible" . dave . map read . tail . words dave :: [Int] -> Bool dave ws = let s = sum ws in if odd s then False else elem (div s 2) (dp ws) dp wws@(w:ws) = foldl' (\acc w -> nub' (filter (<=th) ([id, (+w)] <*> acc))) [0,w] ws where th = div (sum wws) 2