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>).
ovmaxx = 0

prime = [True] * (10**5+5)
prime[0]=False
prime[1]=False
for i in range(2, 10**5+5):
    if prime[i]:
       for j in range(2*i, 10**5+5, i):
           prime[j] = False

t = [i for i in range(10**5) if prime[i]]
        
x = int(input())
y = list(map(int, input().split(' ')))

good = [False]*(10**5+5)
for i in y:
    good[i] = True


dp2 = [0]*(10**5+5)

for i in range(10**5+5):
    if not good[i]:
        continue
    pdiv = []
    
    for a in t:
        k = 0
        while i%a == 0:
            if k == 0:
                pdiv.append(a)
            i //= a
            k = 1
    maxx = 0
    for i2 in pdiv:
        maxx = max(dp2[i2]+1, maxx)

    for i2 in pdiv:
        dp2[i2] = max(dp2[i2]+1, maxx)

    ovmaxx = max(ovmaxx, maxx)
    
print(max(ovmaxx, 1))
