#include #include #include #include #include #include #include int isPrime(unsigned long long int n ,int* k) { if(n==2) return 1; if(n==3) return 1; if(n%2==0){ *k=2; return 0; } if(n%3==0){ *k=3; return 0;} unsigned long long int i=5; unsigned long long int w=2; while(i*i<=n) { if(n%i==0) {*k=i; return 0;} i+=w; w=6-w; } return 1; } unsigned long long int longestSequence(int a_size,unsigned long long int* a) { // Return the length of the longest possible sequence of moves. unsigned long long int i=0,mov=0; int k; for(i=0;i0) { // printf("mov %llu x %d k %d \n",mov,x,k); mov+=x; if(isPrime(x,&k)) { mov+=1; break; } x/=k; } } } return mov; } int main() { int n; scanf("%i", &n); unsigned long long int *a = malloc(sizeof(unsigned long long int) * n); for (int a_i = 0; a_i < n; a_i++) { scanf("%llu",&a[a_i]); } unsigned long long int result = longestSequence(n, a); printf("%llu\n", result); return 0; }