#include using namespace std; long preCalLimit = pow((long)10,(long)6); vectorret(preCalLimit,(long)0); vectorprimes; void preCalculate(){ for(int i=2;i<=preCalLimit;i++){ bool isPrime = true; for(int j = 2;j*j<=i;j++){ if(i%j == 0){ ret[i] = max(ret[i],1 + (j*(ret[(i/j)]))); ret[i] = max(ret[i],1 + ((i/j)*(ret[j]))); isPrime = false; } } if(isPrime){ ret[i] = (long)1; primes.push_back((long)i); } } } long calLongVal(long val){ long maxCurSeq = (long)0; bool isPrime = true; for(int i=0;i a) { long ans = 0; for(int i=0;i> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } preCalculate(); long result = longestSequence(a); cout << result << endl; return 0; }