#include #include #include #include #include #include #include long int max(long a,long b) { return a>b?a:b; } long int isprime(long k,int d) { for(long i=d;i<=sqrt(k);i++) { if(k%i == 0) return (i); } return 0; } long int longestSequence(long k,int d) { // Return the length of the longest possible sequence of moves. if(k == 1) { // printf("1\n"); return 1; } int j = isprime(k,d); if(j== 0) { // printf("%ld %ld %d\n",k,k+1,d); return (k+1); } else { // printf("%ld %dhahaha\n",k,d); return max(1+(k/j)*longestSequence(j,2),max(1+(j)*(longestSequence(k/j,2)),longestSequence(k,(j)+1))); } } int main() { int n; scanf("%i", &n); long int *a = malloc(sizeof(long int) * n); long int result = 0; for (int a_i = 0; a_i < n; a_i++) { scanf("%li",&a[a_i]); result = result +longestSequence(a[a_i],2); } printf("%ld\n", result); return 0; }