#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; vector V[100010]; int main() { int N; cin >> N; bool checked[100010]; memset(checked, false, sizeof(checked)); vector A(N); for (int i = 0; i < N; ++i) { cin >> A[i]; int a = A[i]; while (a < 100010) { V[a].push_back(A[i]); a += A[i]; } } int dp[100010]; memset(dp, 0, sizeof(dp)); int ans = 0; for (int a : A) { int temp[100010]; memcpy(temp, dp, sizeof(dp)); for (int v : V[a]) { temp[a] = max(temp[a], dp[v] + 1); ans = max(ans, temp[a]); } memcpy(dp, temp, sizeof(temp)); } cout << ans << endl; return 0; }