#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include #define rep(i,n) for(int i=0;i<(n);i++) #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define sz(x) ((int)(x).size()) #define pb push_back using ll = long long; using namespace std; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b> N; vector A(N); rep(i,N) cin >> A[i]; vector dp(101000,0); rep(i,N){ int a = A[i]; int mx = 0; for(int aa=1;aa*aa<=a;aa++){ if(a%aa==0){ chmax(mx,dp[aa]); chmax(mx,dp[a/aa]); } } chmax(dp[a],mx+1); } cout << *max_element(all(dp)) << endl; return 0; }