open Str

module SI = Set.Make(struct
                      type t = int
                      let compare i j = i - j
                    end)
                    
let read_list f =
  split (regexp " +") (read_line ()) |> List.map f

let () =
  let k = match read_list int_of_string with _ :: x :: _ -> x | _ -> failwith "read" in
  let al = read_list int_of_string in
  let rec iter si = function
      [] -> false
    | ls -> (if List.mem k ls then true else
               let nls = SI.fold (fun e1 l1 ->
                                  (List.fold_left (fun l2 e2 -> abs (e1 - e2) :: l2) l1 ls)
                                 ) si [] in
               let nsi = List.fold_left (fun s e -> SI.add e s) si nls in
               if si = nsi then false
               else iter nsi nls
            )
  in 
  (if iter (SI.of_list al) al then "POSSIBLE" else "IMPOSSIBLE") |> print_endline
