#include #define done std::ios::sync_with_stdio(false); cin.tie(NULL); #define pb push_back #define mp make_pair #define fi first #define se second using namespace std; typedef long long ll; ll x,y; bool prime[1000006]; ll a[1000006]; void seive(int n) { memset(prime,1,sizeof(prime)); for(int i=2;i*i<=n;i++) { if(prime[i]) for(int j=i*i;j<=n;j+=i) prime[j] = 0; } } ll solve1(ll num) { ll ans = num+1; ll c = num,k=1; while(c%2==0) k*=2,c/=2; if(c==1) return k*2-1; if(k>2) ans = max(ans,1+(num/k)*1ll*(2*k-1)); ll val=0; c = num; for(int i=2;i<=sqrt(num);i++) { while(c%i==0) c/=i; if(num%i==0&&prime[i]) val = max(val,i*1ll); } val = max(val,c); ans = max(ans,1 + val*1ll*solve1(num/val)); return ans; } int main() { seive(1000001); int n; cin>>n; ll sum = 0; for(int i=1;i<=n;i++) { cin>>a[i]; // ll x = rand()%y; // a[i] = x*x*x; // if(a[i]>1e12) a[i] = 1e12-x; // cout<