import Data.List (sort,nub)
import qualified Data.IntSet as Set

possible = "POSSIBLE"
impossible = "IMPOSSIBLE"

solve _ _ _ [] = impossible
solve k set maxA (d:diffs)  =
  if k`mod`d == 0
    then possible
    else solve k set maxA diffs

getDiffs [x] = [x]
getDiffs diffs =
  let newDiffs = sort $ filter (/=0) $ nub $ zipWith (-) (tail diffs) diffs
  in head newDiffs:[ d | d<-newDiffs, d`mod`head newDiffs/=0 ]

main :: IO ()
main = do
  [_,k] <- map read.words <$> getLine :: IO [Int]
  as <- sort.map read.words <$> getLine :: IO [Int]
  let maxA = last as
      diffs = foldr (\_ ds->getDiffs ds) as [1..1000]
      set = Set.fromList as
  putStrLn $
    if Set.member k set
      then possible
      else if k > maxA
        then impossible
        else case head diffs of
          1 -> possible
          _ -> solve k set maxA diffs
