# 約数値の最大に+1するか def divisors(n): lower_divisors , upper_divisors = [], [] i = 1 while i*i <= n: if n % i == 0: lower_divisors.append(i) if i != n // i: upper_divisors.append(n//i) i += 1 return lower_divisors + upper_divisors[::-1] N = int(input()) A = list(map(int, input().split())) num_count = [0]*(10**5+3) for a in A: divs = divisors(a) mx = 0 for d in divs: mx = max(mx, num_count[d]) num_count[a] = max(num_count[a], mx+1) #print('a', a, num_count[:10]) ans = max(num_count) print(ans)