#define debug_iv_ac ios::sync_with_stdio(false);cin.tie(NULL); #include #define pb push_back #define mp make_pair #define pp pop_back #define pf push_front #define fi first #define se second #define maxn 1000001 typedef long long ll; using namespace std; #define pi pair ll a[200]; set s; ll dp[3*maxn+5]; bool prime[3*maxn]; void Sieve(int n) { memset(prime, true, sizeof(prime)); for (int p=2; p*p<=n; p++) { // If prime[p] is not changed, then it is a prime if (prime[p] == true) { // Update all multiples of p for (int i=p*2; i<=n; i += p) prime[i] = false; } } } ll compute(ll num) { if(num==1) return 1; ll ans = num; ll x = 0; ll val = num; for(ll i=2;i<=sqrt(num);i++) { if(prime[i]&&(num%i)==0) { while(val%i==0) val/=i; x = max(x,i); } } x = max(x,val); ans = max(ans,1 + x*1ll*compute(num/x)); x = 2; while(num%x==0) x*=2; if(x/2==num) return 2*num-1; ans = max(ans,1 + ((2*num)/x)*1ll*(x-1)); return ans; } int main() { //segmentedSieve(1e12); Sieve(3*maxn-10); //pre(); int n; cin>>n; ll ans = 0; for(int i=1;i<=n;i++) { ll num; cin>>num; ans += compute(num); } cout<