#include <bits/stdc++.h>   using namespace std;   const int MAXN = 1000010;   int n, k;   int C[MAXN];   void load() {     scanf( %d%d , &n, &k);     for (int i = 0; i < n; i++) scanf( %d , C + i);   }   bool A[MAXN];   int previ[MAXN];   int nexti[MAXN];   int last[MAXN];   void sito() {     int x = 2;     for (int i = 0; i < MAXN; i++) A[i] = true;     while (x * x <= MAXN) {       int y = MAXN - 1;       while (y != x) {         y = previ[y];         long long z = (long long)x * y;         if (z >= MAXN) continue;         last[z] = x;         nexti[previ[z]] = nexti[z];         previ[nexti[z]] = previ[z];         A[z] = false;       }       x = nexti[x];     }   }   int CFactors[MAXN];   bool solve() {     for (int i = 1; i < MAXN; i++) {       previ[i] = i - 1;       nexti[i] = i + 1;     }     sito();     for (int i = 0; i < MAXN; i++)       if (A[i]) last[i] = i;     for (int i = 0; i < n; i++) {       int c = C[i];       while (c > 1) {         int l = last[c];         int br = 0;         while (c % l == 0) {           br++;           c /= l;         }         CFactors[l] = max(CFactors[l], br);       }     }     while (k > 1) {       int l = last[k];       int br = 0;       while (k % l == 0) {         br++;         k /= l;       }       if (br > CFactors[l]) return false;     }     return true;   }   int main() {     load();     if (solve())       printf( Yes n );     else       printf( No n );     return 0;   }   