#include using namespace std; static long no[10000001]; long seive(long n) { long ch=0,i,j,ans; if(n==1) return 0; else{ for(i=2;i<=sqrt(n);i++){ for(j=2;j*i<=n;j++) no[i*j]=1; } for(i=n/2;i>=2;i--){ if(no[i]==0){ if(n%i==0){ ch=1; ans=i; break; } } } if(ch==0||n==2||n==3) return 1; else return ans; } } long longestSequence(vector a,int n) { // Return the length of the longest possible sequence of moves. long ans=0; for(int i=0;i1){ long temp=a[i]; while(seive(a[i])>1){ int x=seive(a[i]); ans+=(temp/(a[i]/x)); a[i]/=x; } ans+=(temp+1); } else ans+=1; } 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]; } long result = longestSequence(a,n); cout << result << endl; return 0; }