import math n = int(input()) A = list(map(int, input().split())) max_A = 3 * 10**5 dp = [0] * (max_A + 2) max_length = 0 for x in A: current_max = 0 if x != 1: sqrt_x = int(math.isqrt(x)) for i in range(1, sqrt_x + 1): if x % i == 0: if i < x: current_max = max(current_max, dp[i]) counterpart = x // i if counterpart != i and counterpart < x: current_max = max(current_max, dp[counterpart]) new_length = current_max + 1 if new_length > dp[x]: dp[x] = new_length if dp[x] > max_length: max_length = dp[x] print(max_length)