#include #include #include #include #include #include #include #include #include static const int MOD = 1000000007; using ll = long long; using u32 = unsigned; using u64 = unsigned long long; using namespace std; template constexpr T INF = ::numeric_limits::max()/32*15+208; vector get_prime(int n){ if(n <= 1) return vector(); vector is_prime(n+1, true); vector prime; is_prime[0] = is_prime[1] = 0; for (int i = 2; i <= n; ++i) { if(is_prime[i]) prime.emplace_back(i); for (auto &&j : prime){ if(i*j > n) break; is_prime[i*j] = false; if(i % j == 0) break; } } return prime; } const auto primes = get_prime(65535); template map prime_factor(T n){ map res; for (auto &&i : primes) { while (n % i == 0){ res[i]++; n /= i; } } if(n != 1) res[n]++; return res; } int main() { int n, h; cin >> n >> h; vector a(n); for (auto &&i : a) { scanf("%d", &i), i = abs(i); if(!i) return puts("YES"), 0; } auto d = prime_factor(h); for (auto &[x, p] : d) { int val = 0; for (auto &&i : a) { while(i%x == 0) { val++; i /= x; } } if(val < p) return puts("NO"), 0; } puts("YES"); return 0; }