import math

def main():
    import sys
    input = sys.stdin.read
    data = input().split()
    n = int(data[0])
    s = list(map(int, data[1:n+1]))
    sorted_s = sorted(s)
    if not sorted_s:
        print(0)
        return
    max_x = sorted_s[-1]
    
    # Presence array
    present = [False] * (max_x + 2)
    for x in sorted_s:
        present[x] = True
    
    # DP array
    dp = {}
    max_len = 1  # Minimum sequence length is 1
    
    for x in sorted_s:
        current_max = 0
        factors = set()
        sqrt_x = math.isqrt(x)
        for i in range(1, sqrt_x + 1):
            if x % i == 0:
                if i < x and present[i]:
                    factors.add(i)
                counterpart = x // i
                if counterpart != i and counterpart < x and present[counterpart]:
                    factors.add(counterpart)
        # Check for possible factors
        for d in factors:
            if dp[d] > current_max:
                current_max = dp[d]
        dp[x] = current_max + 1
        if dp[x] > max_len:
            max_len = dp[x]
    
    print(max_len)

if __name__ == '__main__':
    main()