import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static ArrayList primes; static { primes = new ArrayList(); primes.add(2); primes.add(3); } static long getPrime(int idx) { if (idx < primes.size()) { return (primes.get(idx)); } int val = primes.get(primes.size() - 1); int limit = (int) Math.sqrt(val); int nextLimit = (limit + 1) ^ 2; while (true) { val += 2; boolean isPrime = true; if (val >= nextLimit) { limit++; nextLimit = (limit + 1) ^ 2; } for (int p : primes) { if (p > limit) { break; } if (val % p == 0) { isPrime = false; break; } } if (isPrime) { primes.add(val); return val; } } } static long largestPrime(long num) { long res = 1L; int pIdx = 0; while (true) { long prime = getPrime(pIdx++); if (num % prime == 0) { res = prime; while (num % prime == 0) { num /= prime; } } if (prime > 1000001) { return num; } if (prime > num) { break; } } return res; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int t = in.nextInt(); long count = t; for(int a0 = 0; a0 < t; a0++){ long size = in.nextLong(); long n = size; long groups = 1; while (n > 1L) { long p = largestPrime(n); if (p == n) { count += size; n = 1L; } else { n = n / p; groups = groups * p; count += groups; } } } System.out.println(count); in.close(); } }