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])) # Compute GCD of all elements def compute_gcd(arr): return reduce(lambda x, y: gcd(x, y), arr) G = compute_gcd(A) # Compute sum_gcd sum_gcd = sum(a // G for a in A) # Compute total_sum total_sum = sum(A) # Precompute div_sum def get_divisors(a): divisors = set() for i in range(1, int(math.isqrt(a)) + 1): if a % i == 0: divisors.add(i) divisors.add(a // i) return divisors div_sum = defaultdict(int) for a in A: divisors = get_divisors(a) for d in divisors: div_sum[d] += (a - (a // d)) # Compute sum_sword sum_sword = float('inf') unique_x = list(set(A)) # Process unique elements to avoid duplicates for x in unique_x: current = total_sum - div_sum.get(x, 0) if current < sum_sword: sum_sword = current # Check if G can be created via XOR of two elements s = set(A) can_create_g = any( (a ^ G) in s for a in s ) # Determine the answer answer = total_sum # Original sum if can_create_g: answer = min(answer, sum_gcd) answer = min(answer, sum_sword) print(answer) if __name__ == '__main__': main()