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
import sys
import random
input = sys.stdin.readline
def resheto(N):
    if N == 2:
        return 2
    primes = [i for i in range(N + 1)]
    primes[1] = 0
    i = 2
    while i <= int(N ** 0.5) + 2:
        if primes[i] != 0:
            j = i ** 2
            while j <= N:
                primes[j] = 0
                j = j + i
        i += 1
    primes = [i for i in primes if i != 0]
    return primes
n = int(input())
a = [int(_) for _ in input().split()]
m = max(a)
if m == 1:
    print(1)
else:
    b = resheto(m)
    d = {}
    for x in a:
        d[x] = 1
    ans = 1
    dp = [0 for i in range(m + 1)]
    for x in b:
        if x in d:
            dp[x] = 1
            last = x
            for i in range(2 * x, m + 1, x):
                dp[i] = max(dp[i], dp[last] + 1)
                if i in d:
                    last = i
                ans = max(ans, dp[i])
    print(ans)
