#include using namespace std; vector dp(1000009,-1); long findsize(long a){ if(a==1)return 1; if(dp[a]!=-1)return dp[a]; long result=INT_MIN; for(int i=1;i<=a/2;i++){ if(a%i==0){ if(dp[i]!=-1) result=max(result,dp[i]*(a/i)); else{ dp[i]=findsize(i); result=max(result,dp[i]*(a/i)); } } } //dp[a]=result+1; return result+1; } long longestSequence(vector a) { // Return the length of the longest possible sequence of moves. long size=0; int n=a.size(); for(int i=0;i> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } // memset(dp,-1,sizeof(dp)); dp[1]=1; //cout<