func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 2e6 + 10;   const int mod = 1e9 + 7;   int prime[N], pp, pri[N], ans = 1, p[N], n, cnt[N], mx[N];   bool iscomp[N];   void primetable() {     for (int i = 2; i < N; i++) {       if (!iscomp[i]) prime[pp++] = i, pri[i] = i;       for (int j = 0; j < pp && 1ll * i * prime[j] < N; j++) {         iscomp[i * prime[j]] = 1;         pri[i * prime[j]] = prime[j];         if (i % prime[j] == 0) break;       }     }   }   int main() {     primetable();     scanf( %d n , &n);     for (int i = 1; i <= n; i++) scanf( %d , &p[i]);     sort(p + 1, p + n + 1);     for (int i = n; i; i--) {       if (!cnt[p[i]])         cnt[p[i]]++, mx[p[i]] = 1, ans = (1ll * ans * p[i]) % mod;       else {         int v = --p[i];         while (v != 1) {           int u = pri[v], ci = 0;           while (v % u == 0) v /= u, ci++;           if (cnt[u] < ci) {             for (int j = cnt[u] + 1; j <= ci; j++) ans = (1ll * ans * u) % mod;             cnt[u] = ci;             mx[u] = 1;           } else             mx[u] += (cnt[u] == ci);         }       }     }     for (int i = 1; i <= n; i++) {       int v = p[i], flag = 0;       while (v != 1) {         int u = pri[v], ci = 0;         while (v % u == 0) v /= u, ci++;         if (cnt[u] == ci && mx[u] == 1) flag = 1;       }       if (!flag) {         ans++;         break;       }     }     printf( %d n , ans);     return 0;   }   