#!/bin/python3 import sys prime_cache = {} def prime_factors(n): loop = 0 """Returns all the prime factors of a positive integer""" factors = [] d = 2 while n > 1: loop += 1 while n % d == 0: factors.append(d) n /= d d = d + 1 if d*d > n: if n > 1: factors.append(n) break if loop > 100000: return [n] return factors def largest_prime_factor(n): if n in prime_cache: return prime_cache[n] pfs = prime_factors(n) m = max(pfs) # The largest element in the prime factor list prime_cache[n] = m return m def moves (a): found = [] candidates = [(a, [])] while True: #for i in range(0,3): #print("------") new_candidates = [] for candidate in candidates: #print("c", candidate) if candidate[0] == 1: hist = list(candidate[1]) hist.append(candidate[0]) found.append(hist) #print("Found", hist) #elif is_prime(candidate[0]): # pass else: max_prime = largest_prime_factor(candidate[0]) #print(i, "ยค", f, candidate[1], candidate[0]) hist2 = list(candidate[1]) hist2.append(candidate[0]) new_candidate = (candidate[0]//max_prime, hist2) #print(i, "#", new_candidate) new_candidates.append(new_candidate) #break if len(new_candidates) == 0: break candidates = new_candidates for c in found: splits = []; for x in range(0, len(c)-1): #print(c[1][x]) splits.append(c[x] // c[x + 1]) summ = 1 mul = 1 for s in splits: mul *= s summ += mul #print(summ, splits, c) return int(summ) def longestSequence(a): return sum(map(moves, a)) if __name__ == "__main__": n = int(input().strip()) a = list(map(int, input().strip().split(' '))) result = longestSequence(a) print(result)