#include using namespace std; int fac[1000006]; // smallest prime factor vector primes; long long longestSequence(vector & a) { long long ans=0,j; for(int i=0;i=j*j) { for(;j*j<=a[i];j++) { if(a[i]%j==0) { ans += a[i]; a[i]/=j; break; } } if(j == primes.size()) a[i]=1; } if(a[i]>1) ans+=a[i]; ans++; } return ans; // Return the length of the longest possible sequence of moves. } int main() { int n; cin >> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } /* primes.reserve(1000000); primes.push_back(1); for(int i = 2;i<=1000000;i++) { if(!fac[i]) //i is prime { primes.push_back(i); for(int j = i;j<=1000000;j+=i) if(!fac[j]) fac[j]=i; } } */ cout << longestSequence(a); return 0; }