#include #include using namespace atcoder; using namespace std; using ll=long long; using ld=double; ld pie=3.14159265359; ll mod=998244353; ll inf=10000000000000000; int main(){ ll n; cin >> n; vectora(n); for (ll i = 0; i < n; i++) { cin >> a[i]; } mapmemo; for (ll i = 0; i < n; i++) { bool ok=false; ll now=1; vectorkesu; for(auto v:memo){ if (a[i]%v.first==0) { now=max(now,v.second+1); } if (v.first%a[i]==0) { if (now>=v.second) { kesu.push_back(v.first); } } } if (!kesu.empty()) { for (ll j = 0; j < kesu.size(); j++) { memo.erase(kesu[j]); } memo[a[i]]=now; }else{ memo[a[i]]=now; } } ll ans=0; for(auto v:memo){ ans=max(ans,v.second); } cout << ans << endl; }