#include using namespace std; #define ll long long #define rep(i, n) for (int i = 0; i < (n); i++) #define P pair vector

prime_factorize(ll N) { vector

res; for (ll a = 2; a * a <= N; a++) { // a で割り切れないとき if (N%a) continue; // 割り切れるとき, 何回割れるのかを試す ll ex = 0; while(N%a == 0) { ex++; N /= a; } res.push_back({a, ex}); // N は a で ex 回割れる } // 最後に(素数)が残った場合の処理 if (N != 1) res.push_back({N, 1}); return res; } int main() { int N; ll H; cin >> N >> H; if (H == 1) { cout << "YES" << endl; return 0; } vector

f1 = prime_factorize(H); vector a(N); rep(i, N) cin >> a[i]; // f1 に入っている素数でそれぞれ a[0]..a[N-1] が何回割れるか rep(i, f1.size()) { ll p = f1[i].first, ex_H = f1[i].second; ll ex = 0; rep(i, N) { while(a[i] % p == 0) { ex++; a[i] /= p; } if (ex >= ex_H) break; } if (ex >= ex_H) continue; cout << "NO" << endl; return 0; } cout << "YES" << endl; }