#include<bits/stdc++.h>
using namespace std;
int gcd(int x,int y){
  if(x%y==0) return y;
  else return gcd(y,x%y);
}
int main(){
  int n,i,k,a,G,MAX;scanf("%d%d",&n,&k);
  scanf("%d",&G);MAX = G;
  if(n == 1){
    printf((k==G) ? "POSSIBLE\n":"IMPOSSIBLE\n");
    return 0;
  }
  for(i=1;i<n;i++){
    scanf("%d",&a);
    G = gcd(G,a);
    MAX = max(MAX,a);
  }
  printf((k<=MAX && k%G==0) ? "POSSIBLE\n":"IMPOSSIBLE\n");
}
#include<bits/stdc++.h>
#include<cctype>
using namespace std;
#define rep(i,n) for (int i=0;i<(n);i++)
#define all(v) (v).begin(),(v).end()
typedef long long int ll;
#define pi 3.1415926535897932384
#define E9 1000000000
#define eps 1e-4
#define pii pair<int,int>


int main(){
  int N, K; cin >> N >> K;
  int A[N]; rep(i,N) cin >> A[i];
  sort(A,A+N);
  int GCD = A[0];
  rep(i,N) GCD = __gcd(GCD, A[i]);

  if (K%GCD==0 && K<=A[N-1]) cout << "POSSIBLE" << endl;
  else cout << "IMPOSSIBLE" << endl;




  // cout << fixed << setprecision(10);
  
  return 0;
}
