#include //----- BUILTIN---------// #define cnt64(n) (__builtin_popcountll(unsigned long long(n))) #define clz64(n) (64-__builtin_clzll(unsigned long long(n))) #define ctz64(n) (__builtin_ctzll(unsigned long long(n))) #define cnt32(n) (__builtin_popcount(int(n))) #define clz32(n) (32-__builtin_clz(int(n))) #define ctz32(n) (__builtin_ctz(int(n))) //----- TOOLS ----------// #define fori(i,n,k) for (int i = int(k); (i) < int(n); ++(i)) #define forr(i,n,k) for (int i = int(n)-1; (i) >= int(k); --(i)) #define in_range(i,l,r) (bool)(l <= i&&i <= r) #define all(v) v.begin(), v.end() #define PI 3.14159265358979323846 #define MAXN 1000001 #define MAXP 78498 using namespace std; typedef long long int lli; int n; lli divs[MAXP]; lli primes[MAXP]; bool is_prim[MAXN]; void sieve(){ for(int i = 2; i*i < MAXN; i++) if(!is_prim[i]) for(int j = 2; i*j < MAXN; j++) is_prim[i*j] = true; int j = 0; fori(i, MAXN, 2) if(!is_prim[i]) primes[j++] = i; } void fill_divs(lli x){ n = 0; fori(i, MAXP, 0){ if(x == 1) break; while(x%primes[i] == 0){ x /= primes[i]; divs[n++] = primes[i]; } } if(x > 1) divs[n++] = x; } lli solve(){ lli s1 = 1, p1 = 1; fori(i, n, 0){ s1 += p1*divs[i]; p1 *= divs[i]; } lli s2 = 1, p2 = 1; forr(i, n, 0){ s2 += p2*divs[i]; p2 *= divs[i]; } return max(s1, s2); } int main() { ios_base::sync_with_stdio(false); //cin.tie(NULL); #ifndef __unix__ clock_t exc = clock(); //assert(freopen("input.txt", "r", stdin)); //assert(freopen("output.txt", "w", stdout)); #endif sieve(); int t; cin >> t; lli x, s = 0; while(t--){ cin >> x; fill_divs(x); s += solve(); } cout << s << '\n'; #ifndef __unix__ cout << (double)(clock()-exc)/CLOCKS_PER_SEC*1000 << "ms.\n"; #endif return 0; }