Squirrel Liss is interested in sequences. She also has preferences of integers. She thinks *n* integers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> are good.

Now she is interested in good sequences. A sequence *x*<sub class="lower-index">1</sub>, *x*<sub class="lower-index">2</sub>, ..., *x*<sub class="lower-index">*k*</sub> is called good if it satisfies the following three conditions:
 -  The sequence is strictly increasing, i.e. *x*<sub class="lower-index">*i*</sub> &lt; *x*<sub class="lower-index">*i* + 1</sub> for each *i* (1 ≤ *i* ≤ *k* - 1). -  No two adjacent elements are coprime, i.e. *gcd*(*x*<sub class="lower-index">*i*</sub>, *x*<sub class="lower-index">*i* + 1</sub>) &gt; 1 for each *i* (1 ≤ *i* ≤ *k* - 1) (where *gcd*(*p*, *q*) denotes the greatest common divisor of the integers *p* and *q*). -  All elements of the sequence are good integers. 
Find the length of the longest good sequence.
The input consists of two lines. The first line contains a single integer *n* (1 ≤ *n* ≤ 10<sup class="upper-index">5</sup>) — the number of good integers. The second line contains a single-space separated list of good integers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> in strictly increasing order (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">5</sup>; *a*<sub class="lower-index">*i*</sub> &lt; *a*<sub class="lower-index">*i* + 1</sub>).
# import math
# N=10010
# def solve(ar):
# 	dp=[0 for i in range(N+20)]
# 	for i in ar:
# 		x=math.sqrt(i)
# 		for j in range(2,x+1):
# 			if(i%j==0):
# 				dp[i]=max(dp[i],max(dp[j]+1,dp[i//j]+1))
#         for j in range(2,x+1):
#         	if(i%j==0):
#         		dp[j]=dp[i//j]=dp[i]
#     m=1
#     for i in range(1,10010):
#     	m=max(m,dp[i])
#     return m
import math
N=100100
def solve(ar):
	n=len(ar)
	dp=[0 for i in range(N+20)]
	for a in ar:
		x=math.sqrt(a)
		x=int(x)
		x+=2
		for j in range(2,x):
			if(a%j == 0):
				dp[a]=max(dp[a],max(dp[a//j]+1,dp[j]+1))
		for j in range(2,x):
			if(a%j == 0):
				dp[j]=dp[a//j]=dp[a]
	m=1
	for x in range(1,100100):
		m=max(m,dp[x])
	return m

n=int(input())
ar=list(map(int,input().split()))
x=solve(ar)
print(x)