#include <bits/stdc++.h> #define be(v) (v).begin(),(v).end() #define pb(q) push_back(q) #define rep(i, n) for(int i=0;i<n;i++) #define all(i, v) for(auto& i : v) typedef long long ll; using namespace std; const ll mod=1000000007, INF=(1LL<<60); #define doublecout(a) cout<<fixed<<setprecision(10)<<a<<endl; int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(false); ll n; cin >> n; vector<ll> a(n); vector<ll> dp(100001, 0); rep(i, n) cin >> a[i]; rep(i, n) { ll m = 0; for(ll j = 1; j * j <= a[i]; j ++) { if(a[i] % j == 0) { m = max(m, dp[j] + 1); m = max(m, dp[a[i]/j] + 1); } } dp[a[i]] = m; } ll ans = 0; all(e, dp) ans = max(ans, e); cout << ans << endl; return 0; }