#include using namespace std; typedef long long LL; map mp; int cr[1000005]; vector primes; void ciur() { int N = int(1e6); for(int i = 1; i <= N; i++) cr[i] = i; for(int i = 2; i * i <= N; i++) if(cr[i] == i) for(int j = i * i; j <= N; j += i) cr[j] = i; for(int i = 2; i <= N; i++) if(cr[i] == i) primes.push_back(i); } LL solve(LL x) { LL ans = x; vector fct; for(auto f: primes) { if(1LL * f * f > x) break; while(x % f == 0) { fct.push_back(f); x /= f; } } if(x != 1) fct.push_back(x); LL tms = 1; reverse(fct.begin(), fct.end()); for(auto f: fct) { ans += tms; tms *= f; } return ans; } LL longestSequence(vector a) { ciur(); // Return the length of the longest possible sequence of moves. mp[1] = 1; LL ans = 0; for(auto x: a) { ans += solve(x); } return ans; } int main() { int n; cin >> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } LL result = longestSequence(a); cout << result << endl; return 0; }