#include <iostream>
#include <algorithm>
#include <vector>

constexpr int X = 300000;

void solve() {
    std::vector<std::vector<int>> facts(X + 1);
    for (int p = 1; p <= X; ++p) {
        for (int q = 2; p * q <= X; ++q) {
            facts[p * q].push_back(p);
        }
    }

    int n;
    std::cin >> n;

    std::vector<int> dp(X + 1, -n);
    while (n--) {
        int a;
        std::cin >> a;

        dp[a] = std::max(dp[a], 1);
        for (auto p : facts[a]) {
            dp[a] = std::max(dp[a], dp[p] + 1);
        }
    }

    std::cout << *std::max_element(dp.begin(), dp.end()) << std::endl;
}

int main() {
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);
    std::ios::sync_with_stdio(false);

    solve();

    return 0;
}