N = gets.to_i A = gets.split.map(&:to_i) def divisors(n) divisors = [] k = 1 while k * k < n divisors << k << (n / k) if n % k == 0 k += 1 end divisors << k if k * k == n divisors.sort end lis = Hash.new(0) A.each do |x| divisors(x).reverse_each do |y| lis[x] = [lis[x], lis[y] + 1].max end end puts lis.values.max