import sys import math def main(): input = sys.stdin.read().split() N = int(input[0]) A = list(map(int, input[1:N+1])) # Compute GCD of all elements G = A[0] for num in A[1:]: G = math.gcd(G, num) # Check if sum_g is achievable a = [num // G for num in A] sum_g = sum(a) has_G = G in A found_xor_1 = False if not has_G: seen = set() for num in a: target = num ^ 1 if target in seen: found_xor_1 = True break seen.add(num) sum_g_achievable = has_G or found_xor_1 # Compute sum_sword_min max_A = max(A) if A else 0 freq = [0] * (max_A + 1) for num in A: freq[num] += 1 sum_total = sum(A) # Precompute sum_divisible for all possible d sum_divisible = [0] * (max_A + 1) for d in range(1, max_A + 1): k = 1 while d * k <= max_A: sum_divisible[d] += k * freq[d * k] k += 1 sum_sword_min = float('inf') for x in A: d = x current_sum = 1 + sum_total - sum_divisible[d] * (d - 1) if freq[d] > 0: current_sum -= 1 if current_sum < sum_sword_min: sum_sword_min = current_sum sum_original = sum_total candidates = [sum_original, sum_sword_min] if sum_g_achievable: candidates.append(sum_g) answer = min(candidates) print(answer) if __name__ == "__main__": main()