import java.util.*; import java.util.stream.LongStream; public class Solution { static List primes(long x) { List result = new ArrayList<>(); if (x == 1L) return result; long z = x; long i = 2; long sqrt = Math.round(Math.sqrt(x)); while (true) { if (i > sqrt) { result.add(z); break; } if (z % i != 0) { i++; continue; } result.add(i); z = z / i; sqrt = Math.round(Math.sqrt(z)); } //System.out.println(result); return result; } static long[] findImportantDivisors(long x, List primes) { long[] result = new long[primes.size() + 1]; result[0] = x; for (int i = primes.size() - 1, r = 1; i >= 0; i--, r++) { result[r] = result[r - 1] / primes.get(i); } return result; } static long moves(long x) { long[] divisors = findImportantDivisors(x, primes(x)); long[] daycounts = new long[divisors.length]; // length to days long[] sums = new long[divisors.length]; // length to sum daycounts[0] = 1L; sums[0] = 1L; for (int i = 1; i < divisors.length; i++) { long newdaycount = divisors[i - 1] / divisors[i] * daycounts[i - 1]; daycounts[i] = newdaycount; long newsum = newdaycount + sums[i - 1]; sums[i] = newsum; } return sums[divisors.length - 1]; } static long longestSequence(long[] a) { long result = LongStream.of(a).map(Solution::moves).sum(); return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); long[] a = new long[n]; for(int a_i = 0; a_i < n; a_i++){ a[a_i] = in.nextLong(); } long result = longestSequence(a); System.out.println(result); in.close(); } }