#include using namespace std; const int N = 1e6 + 5; bitset prim; vector pnum; inline void sieve(){ prim.set(); prim[0] = prim[1] = false; for(int i = 2; i < N; ++i){ if(prim[i]){ pnum.push_back(i); if(i <= 1024){ int tmp = i * i; while(tmp < N){ prim[tmp] = false; tmp += i; } } } } } long long longestSequence(vector a) { // Return the length of the longest possible sequence of moves. sieve(); long long tot = 0; for(int i = 0;i < (int) a.size(); ++i){ long long tmp = a[i]; vector factors; factors.clear(); for(int i = 0;i < (int)pnum.size() && tmp != 1; ++i){ while(tmp % pnum[i] == 0){ factors.push_back(pnum[i]); tmp /= pnum[i]; } } if(tmp > 1) factors.push_back(tmp); long long now = 1; tot += now; for(int i = (int) factors.size() - 1;i >= 0; --i){ now *= factors[i]; tot += now; } } return tot; } int main() { int n; cin >> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } long long result = longestSequence(a); cout << result << endl; return 0; }