import sys,random,bisect from collections import deque,defaultdict from heapq import heapify,heappop,heappush from itertools import permutations from math import gcd,log input = lambda :sys.stdin.readline().rstrip() mi = lambda :map(int,input().split()) li = lambda :list(mi()) N = int(input()) A = li() M = max(A) dp = [0] * (M+1) for a in A: tmp = 1 for d in range(1,a+1): if d*d > a: break if a % d == 0: tmp = max(tmp,dp[d]+1) tmp = max(tmp,dp[a//d]+1) dp[a] = max(dp[a],tmp) print(max(dp))