#include #include #include #include #include #include #include #include using namespace std; using ll = long long; using vi = vector; #define in(v) v; cin >> v; 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 rrep(i,n) for(long long i=(n);i>=0;--i) #define all(f,c,...) (([&](decltype((c)) cccc) { return (f)(begin(cccc), end(cccc), ## __VA_ARGS__); })(c)) // ========== debug ========== templateostream& operator<<(ostream& os,const vector& vec){os<<"{";for(size_t i=0;i&v){for(size_t i=0;iostream& operator<<(ostream& os,const pair& rhs){os<<"("< void debug(const First& first) {cerr< void debug(const First& first, const Rest&... rest) {cerr< void debug2(const First& first) {cerr< void debug2(const First& first, const Rest&... rest) {cerr<> 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; }