program agc018
    use,intrinsic :: iso_fortran_env
    implicit none
    integer(int32):: n,i,g
    integer(int32), allocatable:: a(:)
    integer(int32):: k

    read*, n,k
    allocate(a(n))
    read*, a(:)
    if (maxval(a) < k) then
        print'(a)', 'IMPOSSIBLE'
        stop
    end if

    g = a(1)

    do i=2,n
        g = gcd(g,a(i))
    end do
    if (mod(k,g) == 0) then
        print'(a)', 'POSSIBLE'
    else
        print'(a)', 'IMPOSSIBLE'
    end if
contains
function lcm(x,y) result(ret)
    integer(int32):: x,y,ret
    ret=x*y/gcd(x,y)
end function

recursive function gcd(x,y) result(ret)
    integer(int32):: x,y,ret

    if (mod(x,y) == 0) then
        ret = y
        return
    end if

    ret = gcd(y,mod(x,y))
end function
end program agc018