let solve w n m = let z = m / 2 in let s = Array.make (z + 1) false in s.(0) <- true; let t = Array.copy s in let rec doit i = if i = n then t.(z) else begin for x = w.(i) to z do t.(x) <- s.(x) || s.(x - w.(i)) done; if t.(z) then true else begin Array.iteri (fun i e -> s.(i) <- e) t; doit (i + 1) end end in doit 0 let read () = Scanf.scanf "%d " (fun i -> i) let () = let n = read () in let w = Array.init n (fun _ -> read ()) in let m = Array.fold_left (+) 0 w in if m mod 2 = 1 then print_endline "impossible" else print_endline (if solve w n m then "possible" else "impossible")