#include using namespace std; void findmvs(long n,map &mp) { long ans=1+n,t1,t2,temp; if(mp[n]!=0) return; for(long i=2;i<=sqrt(n);i++) { if(n%i==0) { if(mp[i]==0) findmvs(i,mp); if(mp[n/i]==0) findmvs(n/i,mp); t1=1+i*mp[n/i]; t2=1+(n/i)*mp[i]; if(t1>t2) temp=t1; else temp=t2; if(temp>ans) ans=temp; } } mp[n]=ans; } long longestSequence(vector a) { map mp; long ans=0; mp[1]=1; for(int 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; }