#include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll; using namespace std; const ll MOD = 1000000007LL; vector divisor(int n) { vector ret(1, 1); for (int i = 2; i * i <= n; i++) { if (n % i == 0) { ret.push_back(i); ret.push_back(n / i); } } return ret; } int main() { cin.sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) cin >> a[i]; vector dp(300005, 1); for (int i = 0; i < n; i++) { if (a[i] == 1) continue; auto div = divisor(a[i]); for (int val : div) { dp[a[i]] = max(dp[a[i]], dp[val] + 1); } } int ans = 1; for (int i = 1; i < 300005; i++) { ans = max(ans, dp[i]); } cout << ans << "\n"; return 0; }