#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int ll; typedef tuple t3; using namespace std; int vs[1000100]; int l[1000100]; int dp[1000100]; vector t; void solve() { int n; cin >> n; fill(vs, vs + 1000100, -1); fill(l, l + 1000100, -1); t.resize(n); for(int i = 0;i < n;i++) { int a; cin >> a; vs[a] = i; t[i] = a; } sort(t.begin(), t.end()); int m = 1; for(int i = n-1;i >= 0;i--) { dp[t[i]] = 1; for(int j = i +1;j < n;j++) { if(t[j] % t[i] == 0) { dp[t[i]] = max(dp[t[i]], 1 + dp[t[j]]); m = max(m, dp[t[i]]); } } } cout << m << endl; } int main() { solve(); return 0; }