# Enter your code here. Read input from STDIN. Print output to STDOUT n = int(input()) sticks = [int(x) for x in input().split()] from math import sqrt,ceil from collections import defaultdict def sieve(N): """Dumb sieve of Eratosthemes, O(N*log(log(N)))""" b = [True]*(N+1) b[0] = False b[1] = False lim = ceil(sqrt(N)) i = 2 while i <= lim: if b[i]: for n in range(i**2,N+1,i): b[n] = False i+=1 return {i for i,b in enumerate(b) if b} def divisors(F): """Given factors, generate divisors. Consider memoization.""" D = {1} for f in F: D |= {f*d for d in D} return D def factor(n,P): """Given prime list, factorize n""" if n in P: return [n] f = [] for p in P: while n%p == 0: n//=p f.append(p) if n in P: f.append(n) return f if n != 1: f.append(n) return f def totient(n,P): """Euler totient function""" result = n for p in set(factor(n,P)): result -= result//p return result def miller_rabin(n): """Miller-Rabin primality test, O(fast)""" if n < 2: return False if n == 2: return True if n == 3: return True if n&1 == 0: return False #witness = [2, 325, 9375, 28178, 450775, 9780504, 1795265022] witness = [2, 3, 5, 7] # Separate pow of 2 r = 0 d = n-1 while d&1 == 0: d >>= 1 r += 1 for a in witness: if w > n-2: break x = pow(a,d,n) if x == 1 or x == n-1: continue for i in range(r): x = pow(x,2,n) if x == 1: return False if x == n-1: break else: return False return True summa = 0 P = sieve(10**6) for a in sticks: facs = sorted(factor(a,P))[::-1] mult = 1 for f in facs: summa+=mult mult*=f summa+=mult print(summa)