import sys import math from math import gcd from functools import reduce from collections import defaultdict def main(): input = sys.stdin.read().split() n = int(input[0]) A = list(map(int, input[1:n+1])) if not A: print(0) return current_gcd = A[0] for num in A[1:]: current_gcd = math.gcd(current_gcd, num) G = current_gcd total_sum = sum(A) # Check if sum_g is achievable sum_g = total_sum // G sum_g_possible = False # Check if G is present in the original array if G in A: sum_g_possible = True else: a_values = [num // G for num in A] a_set = set(a_values) for a in a_set: if (a ^ 1) in a_set: sum_g_possible = True break # Compute sum_after for all d in A max_A = max(A) freq = defaultdict(int) for num in A: freq[num] += 1 sum_div = [0] * (max_A + 1) for d in range(1, max_A + 1): for multiple in range(d, max_A + 1, d): if multiple in freq: sum_div[d] += (multiple // d) * freq[multiple] unique_ds = list(freq.keys()) if not unique_ds: print(0) return candidate_min = min(total_sum - sum_div[d] * (d - 1) for d in unique_ds) answer = candidate_min if sum_g_possible: answer = min(answer, sum_g) print(answer) if __name__ == "__main__": main()