def solve(): N=int(input()) A=list(map(int,input().split())) A_max=max(A) div=[[] for _ in range(A_max+1)] for a in range(1,A_max+1): for b in range(a,A_max+1,a): div[b].append(a) DP=[0]*(A_max+1) for a in A: x=0 for b in div[a]: x=max(x, DP[b]) DP[a]=x+1 return max(DP) #================================================== print(solve())