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