from functools import lru_cache @lru_cache(maxsize=300000) def make_divisors(n): divisors = [] #必要に応じてsetにしても良いかも i = 1 while i ** 2 <= n: if n % i == 0: divisors.append(i) if i ** 2 != n: divisors.append(n//i) i += 1 #divisors.sort() return divisors N = int(input()) A = list(map(int,input().split())) from collections import defaultdict dic = defaultdict(int) for a in A: tmp = 0 for x in make_divisors(a): if x == a: continue if x in dic: tmp = max(tmp,dic[x]) dic[a] = tmp + 1 print(max(dic.values()))