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>).
'''input
9
1 2 3 5 6 7 8 9 10
'''
from sys import stdin


def get_prime_dict():
	N = 10 ** 2
	spf = [0] * (N + 1)
	primes = dict()

	for i in range(2, N + 1):
		if spf[i] == 0:
			spf[i] = i
			primes[i] = 0
		j = i * i
		while j <= N:
			spf[j] = i
			j += i
	return primes, spf


# main starts
primes, spf = get_prime_dict()

n = int(stdin.readline().strip())
arr = list(map(int, stdin.readline().split()))
best = 0
for i in range(n):
	x = arr[i]
	while x > 1:
		d = spf[x]
		best = max(primes[d] + 1, best)
		primes[d] = best
		while x % d == 0:
			x //= d
mx_len = 1
for i in primes:
	mx_len = max(mx_len, primes[i])
print(mx_len)
