#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using i64 = int64_t; using i32 = int32_t; template T iabs(const T& x) { return max(x, -x); } unsigned char b[300001]; int main() { int n; cin >> n; vector a(n); for (int i = 0; i < n; ++i) { cin >> a[i]; } for (int i = 0; i < n; ++i) { b[a[i]] = a[i] == 1 ? 1 : b[1] + 1; for (int x = 2; x * x <= a[i]; ++x) { if (a[i] % x == 0) { b[a[i]] = max(b[a[i]], (unsigned char)(b[x] + 1)); b[a[i]] = max(b[a[i]], (unsigned char)(b[a[i] / x] + 1)); } } } int ans = 0; for (int i = 1; i <= 300000; ++i) { ans = max(ans, int(b[i])); } cout << ans << endl; return 0; }