#include using namespace std; const int N = 1e7 + 5; long long sang[N]; int max_size; bool avail[N]; void init(){ memset(avail, true, sizeof avail); int d = 0; avail[1]=false; for(int i=2; i <= sqrt(N); i++) if(avail[i]) for(int j = i * i; j <= N; j += i) avail[j] = false; for(int i=1; i <= N; i++) if(avail[i]) sang[++d] = i; max_size = d; } long long Solve(long long n){ int i = 1; long long res = 0; while(n>1){ while(n % sang[i] != 0 && i < max_size) ++i; while(n % sang[i] == 0){res += n;n = (long long) n / sang[i];} if(i >= max_size) {res += n; break;} } return res + 1; } long long longestSequence(vector a,int n) { // Return the length of the longest possible sequence of moves. long long ans = 0; for(int i = 0; i < n;i++){ ans += Solve(a[i]); } return ans; } int main() { init(); 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,n); cout << result << endl; return 0; }