N=int(input()) A=list(map(int,input().split())) M=100000 D=[[] for i in range(M+1)] DP=[0]*(M+1) for i in range(1,M+1): for j in range(i,M+1,i): D[j].append(i) for i in range(N): v=0 for j in range(len(D[A[i]])): v=max(v,DP[D[A[i]][j]]+1) DP[A[i]]=max(DP[A[i]],v) print(max(DP))