#include using namespace std; std::vector primes; long countForBreak( long a) { /* for( int i=0;i<10;i++) { cout << primes[i] << endl; } */ //24 = 8 * 3 = 3* 2 * 2 * 2 // 1 + 3 + (3*2) + (3*2*2) + (3*2*2*2) // 1 + 3 + 6 + 12 + 24 = 46 if ( a == 1) return 1; long num = a; int i=0; int n = primes.size(); int s = sqrt(a); vector factors; while ( i < n && a > 1 && primes[i] < (s+1)) { int p = primes[i]; while ( (a % p) == 0) { factors.push_back(p); a = a/p; } i++; } if ( a > 1) { factors.push_back(a); } long c = 1; long x = num; c += x; // cout << factors.size() << endl; // return c; for (int i=0;i a) { // Return the length of the longest possible sequence of moves. long ret = 0; for ( long x : a) { ret += countForBreak(x); } return ret; } int main() { int n; cin >> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } // generate primes to 10^6 int s = 1000000; vector arr(s,0); int m = 1000; //seive of arasm for ( int i=2;i