#include #define ll long long using namespace std; unordered_map dp; long long f(long long n){ if(n==0){ return 0; } if(n==1){ return 1; } if(dp.find(n)!=dp.end()){ return dp.find(n)->second; } long long ans =0; for(long long i =1;i<=sqrt(n);i++){ if(n%i==0){ if(i!=1){ ans = max(ans,1+i*f(n/i)); } ans = max(ans,1+(n/i)*f(i)); } } return dp[n] = ans; } long long longestSequence(vector a) { // Return the length of the longest possible sequence of moves. long 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]; } dp = unordered_map(); long long result = longestSequence(a); cout << result << endl; return 0; }