#include #include #include using namespace std; vector dp(1000005); vector div(int n){ vector S; for(int i=1;i*i <= n;i++){ if(n % i == 0) { S.push_back(i); if(i*i != n) S.push_back(n/i); } } sort(S.begin(),S.end()); return S; } int main(){ int n; cin >> n; vector a(n); for(int i=0;i < n;i++){ cin >> a[i]; dp[a[i]]++; } for(int i=1;i <= 1000000;i++){ if(dp[i]){ auto idiv = div(i); for(auto j: idiv){ if(i != j) dp[i] = max(dp[i],dp[j]+1); } } } int ans = 0; for(int i=0;i < n;i++){ ans = max(ans,dp[a[i]]); } cout << ans << endl; return 0; }