For this Question: You are given an array A consisting of N number and an empty set S. For each pair of numbers A[i] and A[j] in the array (i < j), you need to find their LCM and insert the LCM into the set S.

You need to report the GCD of the elements in set S.The first line of the input contains an integer N.
The second line of the input contains N space separated integers A[1], A[2],. , A[N].

Constraints
2 <= N <= 100000
1 <= A[i] <= 200000Output a single integer, the GCD of LCM set S.Sample Input
4
10 24 40 60

Sample Output
20

Explanation: 
The pairwise LCM are as follows:
i : 1 | j : 2 | LCM : 120
i : 1 | j : 3 | LCM : 40
i : 1 | j : 4 | LCM : 60
i : 2 | j : 3 | LCM : 120
i : 2 | j : 4 | LCM : 120
i : 3 | j : 4 | LCM : 120
S = {40, 60, 120}. GCD of the values in S is 20.

Sample Input
2
3 3

Sample Output
3, I have written this Solution Code: #include <bits/stdc++.h>
using namespace std;
#define sd(x) scanf("%d", &x)
#define sz(v) (int) v.size()
#define pr(v) For(i, 0, sz(v)) {cout<<v[i]<<" ";} cout<<endl;
#define slld(x) scanf("%lld", &x)
#define all(x) x.begin(), x.end()
#define For(i, st, en) for(ll i=st; i<en; i++)
#define tr(x) for(auto it=x.begin(); it!=x.end(); it++)
#define fast std::ios::sync_with_stdio(false);cin.tie(NULL);
#define pb push_back
#define ll long long
#define int long long
#define mp make_pair
#define F first
#define S second
typedef pair<int, int> pii;
typedef vector<int> vi;
#define MOD 1000000007
#define INF 1000000000000000007LL

const int N = 200005;
 
// it's swapnil07 ;)
 
#ifdef SWAPNIL07
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
    cout << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
    const char* comma = strchr(names + 1, ',');cout.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
int begtime = clock();
#define end_routine() cout << "\n\nTime elapsed: " << (clock() - begtime)*1000/CLOCKS_PER_SEC << " ms\n\n";
#else
#define endl '\n'
#define trace(...)
#define end_routine()
#endif


int spf[N];

int arr[N][30];

vector<int> primes;

void sieve(){
    for(int i=2; i<N; i++){
        if(spf[i])
            continue;
        spf[i]=i;
        primes.pb(i);
        for(int j=i*i; j<N; j+=i){
            if(!spf[j]){
                spf[j]=i;
            }
        }
    }
}



void solve(){
    int n; cin>>n;
    For(i, 0, n){
        int a; cin>>a;
        map<int, int> m;
        while(a > 1){
            m[spf[a]]++;
            a/=spf[a];
        }
        for(pii p: m){
            arr[p.F][p.S]++;
        }
    }
    int ans = 1;
    for(int p: primes){
        for(int i=28; i>=0; i--){
            arr[p][i]+=arr[p][i+1];
            if(arr[p][i]>=n-1){
                ans = ans*pow(p, i);
                break;
            }
        }
    }
    cout<<ans;
}

signed main()
{
    fast
    #ifdef SWAPNIL07
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
    #endif
    int t=1;
    sieve();
    while(t--){
        solve();
        cout<<endl;
    }
    return 0;
}
, In this Programming Language: C++, Now tell me if this Code is compilable or not?