#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
int gcd(int a,int b){
  if(b==0){
    return a;
  }
  return gcd(b,a%b);
}
int main(){
  int n,k,a[100010],i;
  cin >> n >> k;
  int z=0;
  for(i=0;i<n;i++){
    cin >> a[i];
    if(a[i]>=k){
      z=1;
    }
  }
  if(z==0){
    cout << "IMPOSSIBLE" << endl;
    return 0;
  }
  if(n==1){
    if(a[0]==k){
      cout << "POSSIBLE" << endl;
    }
    else{
      cout << "IMPOSSIBLE" << endl;
    }
    return 0;
  }
  int x=gcd(a[0],a[1]);
  for(i=2;i<n;i++){
    x=gcd(x,a[i]);
  }
  if(k%x==0){
    cout << "POSSIBLE" << endl;
  }
  else{
    cout << "IMPOSSIBLE" << endl;
  }
  return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
  int n,v,m,i;
  map<int,int> m0,m1;
  vector<pair<int,int>> v0,v1;
  cin>>n;
  for(i=0;i<n;i++){
    cin>>v;
    if(i%2==0){
      if(m0.count(v)) m0.at(v)++;
      else m0[v]=1;
    }
    else if(i%2==1){
      if(m1.count(v)) m1.at(v)++;
      else m1[v]=1;
    }
  }
  for(auto z:m0) v0.push_back(make_pair(z.second,z.first));
  sort(v0.begin(),v0.end());
  reverse(v0.begin(),v0.end());
  for(auto z:m1) v1.push_back(make_pair(z.second,z.first));
  sort(v1.begin(),v1.end());
  reverse(v1.begin(),v1.end());
  if(v0.at(0).second!=v1.at(0).second) cout<<n-v0.at(0).first-v1.at(0).first<<endl;
  else if(v0.at(0).first+v1.at(0).first==n) cout<<n/2<<endl;
  else if(v0.size()>1&&v0.size()>1){
    m=max(v0.at(0).first+v1.at(1).first,v0.at(1).first+v1.at(0).first);
    cout<<n-m<<endl;
  }
  else if(v0.size()>1) cout<<n/2-v0.at(1).first<<endl;
  else if(v1.size()>1) cout<<n/2-v1.at(1).first<<endl;
}