func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = 1e9;   const int MX = 1e6 + 5;   long long MD = 1e9 + 7;   const int MDL = 99824453;   auto time0 = chrono::high_resolution_clock::now();   long long a[MX], LPF[MX];   long long bin_power(long long a, long long b, long long md) {     long long res = 1;     while (b) {       if (b & 1) res = (res * a) % md;       a = (a * a) % md;       b >>= 1;     }     return res;   }   long long lcm(long long n) {     map<long long, long long> mp;     for (long long i = 1; i <= n; i++) {       long long cur = a[i], curf = LPF[cur], cnt = 0;       while (cur > 1) {         cur /= LPF[cur];         cnt++;         if (LPF[cur] != curf) {           mp[curf] = max(mp[curf], cnt);           curf = LPF[cur];           cnt = 0;         }       }     }     long long ans = 1;     for (auto x : mp) ans = (ans * bin_power(x.first, x.second, MD)) % MD;     return ans;   }   void solve() {     long long n, k;     cin >> n >> k;     if (k == 1) {       cout <<  Yes ;       return;     }     bool flag = false;     for (long long i = 1; i <= n; i++) cin >> a[i];     MD = k;     long long L = lcm(n);     if (L != 0)       cout <<  No ;     else       cout <<  Yes ;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     srand(time(0));     time0 = chrono::high_resolution_clock::now();     for (long long i = 1; i <= MX - 1; i++) LPF[i] = i;     for (long long i = 2; i <= MX - 1; i++) {       if (LPF[i] == i) {         for (int j = 2 * i; j < MX; j += i)           if (LPF[j] == j) LPF[j] = i;       }     }     solve();     cerr <<  Execution Time:            << chrono::duration_cast<chrono::nanoseconds>(                 chrono::high_resolution_clock::now() - time0)                     .count() *                 1e-9          <<   sec n ;     return 0;   }   