#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){ for(ll j=1;j<=100;j++){ auto itr=upper_bound(all(b[j*a[i]]),i); if(itr==b[j*a[i]].end()) continue; chmax(dp[(*itr)],dp[i]+1); } for(ll j=(mx+a[i]-1)/a[i];max(1ll,(mx+a[i]-1)/a[i]-100)<=j;j--){ auto itr=upper_bound(all(b[j*a[i]]),i); if(itr==b[j*a[i]].end()) continue; chmax(dp[(*itr)],dp[i]+1); } } ll ans=1; rep(i,n) chmax(ans,dp[i]); cout << ans << endl; }