#include using namespace std; using LL=long long; using ULL=unsigned long long; #define rep(i,n) for(int i=0; i<(n); i++) int sieve[1000001]={}; struct Factors{ vector> V; Factors(int A=1){ while(A!=1){ int p=sieve[A]; V.push_back({p,0}); while(A%p==0){ V.back().second++; A/=p; } } sort(V.begin(),V.end()); } Factors(vector> v) : V(move(v)) {} int size() const { return V.size(); } pair& operator[](int i) { return V[i]; } const pair& operator[](int i) const{ return V[i]; } }; Factors lcm(const Factors& l,const Factors& r){ int il=0, ir=0; vector> V; while(il+ir f=(usel?l[il++]:r[ir++]); if(V.size()) if(V.back().first==f.first) tomerge=true; if(tomerge) V.back().second+=f.second; else V.push_back(f); } return move(V); } ULL modval(const Factors& v,ULL m){ ULL res=1; for(auto f:v.V) rep(t,f.second) res=res*f.first%m; return res; } const ULL M=1000000007; ULL powm(ULL a,ULL i){ if(i==0) return 1; ULL r=powm(a*a%M,i/2); if(i%2==1) r=r*a%M; return r; } ULL invm(ULL a){ return powm(a,M-2); } int N; int A[100000]; ULL allprod; ULL alllcm; ULL ans[100000]; int P[1000001][2]; Factors F[100000]; int main(){ sieve[0]=sieve[1]=1; for(int i=2; i<=1000000; i++){ if(sieve[i]!=0) continue; sieve[i]=i; if(i<=1000) for(int j=i*i; j<=1000000; j+=i) sieve[j]=i; } rep(i,1000001) P[i][0]=0; scanf("%d",&N); rep(i,N) scanf("%d",&A[i]); rep(i,N){ F[i]=Factors(A[i]); for(auto f:F[i].V){ if(P[f.first][1]