N=int(input()) A=list(map(int,input().split())) d=[[] for _ in range(10**5+1)] for i in range(1,10**5+1): ima=i while ima<=10**5: d[ima].append(i) ima+=i dp=[0]*(10**5) #dp[n]:今見てるまでで、ラストの数字がnになってる部分列の長さのmax for i in range(N): temp=0 for q in d[A[i]]: temp=max(temp,dp[q]) dp[A[i]]=temp+1 print(max(dp))