-- yukicoder My Practice -- author: Leonardone @ NEETSDKASU -- http://yukicoder.me/problems/19 import Data.List import qualified Data.Set as Set main = do n <- getLine w <- getLine putStrLn $ main' n w main' n ws = let w = map read $ words ws s = sum w h = s `div` 2 in if h * 2 == s && solve h [0] w Set.empty then "possible" else "impossible" solve _ _ [] _ = False solve s [] (x:xs) ls = let lls = Set.insert x ls in solve s (Set.toList lls) xs Set.empty solve s (t:ts) (x:xs) ls | y == s = True | y > s = slv lls | y < s = slv (Set.insert y lls) where y = t + x lls = Set.insert t ls slv = solve s ts (x:xs)