#include using namespace std; #define rep(i,n) for (long long i=0;i<(long long)(n);i++) #define all(v) v.begin(),v.end() using ll=long long; using pll=pair; using tll=tuple; const ll INF=(1ll<<60); template void chmin(T &a,T b){ if(a>b){ a=b; } } template void chmax(T &a,T b){ if(a> n; vector a(n); vector> b(1e5+1); ll mx=0; rep(i,n){ cin >> a[i]; chmax(mx,a[i]); b[a[i]].push_back(i); } vector dp(n,1); rep(i,n){ if(20<=a[i]){ for(ll j=a[i];j<=mx;j+=a[i]){ auto itr=upper_bound(all(b[j]),i); if(itr==b[j].end()) continue; chmax(dp[(*itr)],dp[i]+1); } } for(ll j=a[i];j<=2e4;j+=a[i]){ auto itr=upper_bound(all(b[j]),i); if(itr==b[j].end()) continue; chmax(dp[(*itr)],dp[i]+1); } for(ll j=(mx+a[i]-1)/a[i];8e4<=j;j-=a[i]){ auto itr=upper_bound(all(b[j]),i); if(itr==b[j].end()) continue; chmax(dp[(*itr)],dp[i]+1); } } ll ans=1; rep(i,n) chmax(ans,dp[i]); cout << ans << endl; }