n = int(input()) m = 10**6+1 s = [False]*m for i in map(int, input().split()): s[i] = True memo = [0]*m def dfs(i): if not memo[i]: memo[i] = 1 for j in range(i+i, m, i): if s[j]: memo[i] = max(memo[i], 1 + dfs(j)) return memo[i] print(max(dfs(i) for i in range(1, m) if s[i]))