#!/bin/ruby require("prime") def div_from_p(a,p,memo2) return [1] if p == [] r = [] rest = divisors(a / p[0][0] ** p[0][1], memo2) for i in (0..p[0][1]) for j in rest r << j * p[0][0] ** i end end return r end def divisors(a, memo2) return memo2[a] if memo2[a] p = Prime.prime_division(a) memo2[a] = div_from_p(a,p,memo2) return memo2[a] end def longestSequence(a, memo, memo2) return memo[a] if memo[a] if a == 1 memo[a] = 1 return 1 elsif Prime.prime?(a) memo[a] = a + 1 return a + 1 end most = 0 for p in divisors(a, memo2) s = longestSequence(p, memo, memo2) * a / p + 1 if p < a if s > most most = s end end memo[a] = most return memo[a] end n = gets.strip.to_i a = gets.strip a = a.split(' ').map(&:to_i) memo = Hash.new memo2 = Hash.new result = a.map{|i|longestSequence(i, memo, memo2)}.sum puts result