#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define repr(i, a, b) for (int i = (int)(a); i < (int)(b); i++) #define rep(i, n) repr(i, 0, n) #define INF 2e9 #define MOD 1000000007 //#define MOD 998244353 #define LINF (long long)4e18 #define jck 3.141592 const double EPS = 1e-10; using ll = long long; using Pi = pair; using Pl = pair; set divisor(ll n){ set s; for(ll i = 1; i*i <= n; i++){ if(n % i == 0){ s.insert(i); s.insert(n/i); } } return s; } int dp[300010]; int main(){ int N; cin >> N; vector A(N); rep(i,N) cin >> A[i]; rep(i,N){ set div = divisor(A[i]); for(int u : div){ if(u != A[i]) dp[A[i]] = max(dp[A[i]],dp[u]+1); dp[A[i]] = max(dp[A[i]],1); } } int ans = 0; rep(i,300010) ans = max(ans,dp[i]); cout << ans << endl; }