#include using namespace std; long long isprime(unsigned long long n) { if(n<=1) return 0; if(n<=3) return 1; if(n%2==0 || n%3==0) return 0; for(unsigned long long i=5;i<=sqrt(n);i=i+6) { if(n%i==0 || n%(i+2) == 0) return 0; } return 1; } unsigned long long firstdiv(unsigned long long a) { int flg=0,i; if(a==1) return 1; for( i=3;i<=sqrt(a);i++) { if(a%i==0) { flg=1; break; } } if(flg==1) return i; else return a; } unsigned long long longestSequence(unsigned long long a) { // Return the length of the longest possible sequence of moves. unsigned long long sum=0; unsigned long long tmp=a; unsigned long long s; if(isprime(a)) sum+=(a+1); else { while(tmp!=0) { sum+=tmp; if(tmp%2==0) s=2; else s=firstdiv(tmp); tmp/=s; if(s==1) break; } } return sum; } int main() { unsigned long long n; cin >> n; vector< unsigned long long> a(n); unsigned long long result=0; for(unsigned long long a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; result+= longestSequence(a[a_i]); } cout << result << endl; return 0; }