#!/bin/python3 import sys from itertools import compress from functools import lru_cache def primes(n): """ Returns a list of primes < n for n > 2 """ sieve = bytearray([True]) * (n//2) for i in range(3,int(n**0.5)+1,2): if sieve[i//2]: sieve[i*i//2::i] = bytearray((n-i*i-1)//(2*i)+1) return [2,*compress(range(3,n,2), sieve[1:])] primeslist = primes(10**6+1) def factorization(n): """ Returns a list of the prime factorization of n """ pf = [] for p in primeslist: if p*p > n : break count = 0 while not n % p: n //= p count += 1 if count > 0: pf.append((p, count)) if n > 1: pf.append((n, 1)) return pf def divisors(n): """ Returns an unsorted list of the divisors of n """ divs = [1] for p, e in factorization(n): divs += [x*p**k for k in range(1,e+1) for x in divs] return divs @lru_cache(maxsize=None) def f(a): if a == 1: return 1 i = 0 m = 0 for d in divisors(a): if d == 1: continue m = max(m, 1 + d * f(a//d)) return m def longestSequence(a): # Return the length of the longest possible sequence of moves. return sum(f(x) for x in a) if __name__ == "__main__": n = int(input().strip()) a = list(map(int, input().strip().split(' '))) result = longestSequence(a) print(result)