from collections import * def enum_div(M): L = [[1] for i in range(M + 1)] for i in range(2, M + 1): for j in range(i, M + 1, i): L[j].append(i) return L N = int(input()) X = list(map(int, input().split())) X.sort() L = enum_div(10 ** 6 + 5) D = defaultdict(int) for i in range(N): val = 0 for v in L[X[i]]: if v not in D: continue val = max(val, D[v]) D[X[i]] = val + 1 ans = 0 for k, v in D.items(): ans = max(ans, v) print(ans)