#include #include #include #include using namespace std; using vi = vector; void ins() {} templatevoid ins(T& v,Rest&... rest){cin>>v;ins(rest...);} #define rep(i,n) for(int i=0,_i=(n);i<_i;++i) #define all(f,c,...) (([&](decltype((c)) cccc) { return (f)(begin(cccc), end(cccc), ## __VA_ARGS__); })(c)) int main() { int N; ins(N); vi x(N); rep(i, N) { cin >> x[i]; } all(sort, x); map dp; int ans = 0; rep(i, N) { for (int j = 1; j * j <= x[i]; ++j) { if (x[i] % j == 0) dp[x[i]] = max(dp[x[i]], max(dp[j]+1, dp[x[i]/j]+1)); } ans = max(ans, dp[x[i]]); } cout << ans << endl; return 0; }