#include using namespace std; long prime(long n){ bool flag = false; for(long i=2;i<=sqrt(n);i++){ if(n%i==0){ flag=true; break; } } return flag; } vector primefactors(long n) { vector pr; while (n%2 == 0) { pr.push_back(2); n = n/2; } for (int i = 3; i <= sqrt(n); i = i+2) { while (n%i == 0) { pr.push_back(i); n = n/i; } } if (n > 2) pr.push_back(n); return pr; } long product(vector vec){ long pr=1; for(long i=0;i a) { long sum=0; // Return the length of the longest possible sequence of moves. for(long i=0;i vec; vector p=primefactors(a[i]); vec.push_back(a[i]); while(p.size()!=1){ p.pop_back(); vec.push_back(product(p)); } vec.push_back(1); for(long i=0;i> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } long result = longestSequence(a); cout << result << endl; return 0; }