import Control.Applicative
import Data.List
import qualified Data.ByteString.Char8 as BS
import Data.Maybe

main = do
  [n,k] <- map read . words <$> getLine :: IO [Int]
  as <- sort . map read . words <$> getLine :: IO [Int]

  let
    m = maximum as
    ds = diff as
    d = head ds

  putStrLn $
    if length ds == 1 then
      if d == k then "POSSIBLE" else "IMPOSSIBLE"
    else if k <= m then
      if eqAll ds then
        if (m `mod` d == 0 && k `mod` d == 0) || m `mod` d /= 0 then "POSSIBLE" else "IMPOSSIBLE"
      else "POSSIBLE"
    else "IMPOSSIBLE"

  where
    diff (_:[]) = []
    diff (x:y:xs) = (y-x) : diff (y:xs)

    eqAll :: Eq a => [a] -> Bool
    eqAll = (==1) . length . nub
