N = int(input()) A = list(map(int, input().split())) D = {} for a in A: if a in D: continue i = 1 D[a] = [] while i * i <= a: if a % i == 0: D[a].append(i) j = a // i if i != j: D[a].append(j) i += 1 dp = [0] * (max(A)+1) for a in A: if a == 1: dp[a] = 1 continue for c in D[a]: if a == c: continue dp[a] = max(dp[a], dp[c] + 1) print(max(dp))