using System; using System.Collections.Generic; using System.IO; using System.Linq; class Numbers { static long getLowestDivisor(long number, Dictionary cache) { if (cache.ContainsKey(number)) return cache[number]; if (number % 2 == 0) return 2; long i = 3; while (i*i <= number) { if (number % i == 0) { cache.Add(number, i); return i; } i = i + 2; } cache.Add(number, 1); return 1; } static long CalculateSequence(long number, Dictionary cache) { if (number == 1) return 1; long result = 0; long oldNumber = number; long divisor = getLowestDivisor(number, cache); int counter = 0; while (divisor != 1) { number = number / divisor; result += number; divisor = getLowestDivisor(number, cache); counter++; } result += oldNumber; result++; return result; } static long longestSequence(long[] a, Dictionary cache) { long result = 0; foreach(var number in a) { result += CalculateSequence(number, cache); } return result; } static void Main(String[] args) { Dictionary cache = new Dictionary(); cache.Add(1, 1); cache.Add(2, 1); cache.Add(3, 1); cache.Add(5, 1); cache.Add(7, 1); int n = Convert.ToInt32(Console.ReadLine()); string[] a_temp = Console.ReadLine().Split(' '); long[] a = Array.ConvertAll(a_temp, Int64.Parse); long result = longestSequence(a, cache); Console.WriteLine(result); } }