#include using namespace std; const int MAXN=1e6+100,mod=1e9+7; int n; int a[MAXN]; struct cmp{ bool operator()(int a, int b) const { return a > b; } }; set p; int dp[MAXN]; int main () { ios::sync_with_stdio(0); cin.tie(0); cin >> n; dp[0]=1; for (int i=1; i<=n; i++) { cin >> a[i]; p.clear(); for (int j=1; j*j<=a[i]; j++){ if (a[i]%j==0) { p.insert(j); p.insert(a[i]/j); } } for (int j : p) { dp[a[i]]=max(dp[a[i]],dp[j]+1); } } int ans=0; for (int i=1; i<=n; i++) { ans=max(ans,dp[a[i]]); } cout << ans; return 0; } /////