n = int(input()) a = [int(i) for i in input().split()] dp = [0]*(max(a)+1) Z = max(a) D = [[] for _ in range(Z+1)] for i in range(1, Z+1): for j in range(i, Z+1, i): if i == j: continue D[j].append(i) for i in range(n): div = D[a[i]] tmp = 0 #print(a[i],div) for j in range(len(div)): #if div[j] == a[i]: # continue tmp = max(tmp,dp[div[j]]) dp[a[i]] = max(dp[a[i]],tmp+1) print(max(dp))