# verification-helper: PROBLEM https://yukicoder.me/problems/no/2570 def divisors(n: int) -> list: divisor = [] for i in range(1, int(n**0.5) + 1): if n % i == 0: divisor.append(i) if i != n // i: divisor.append(n // i) divisor.sort() return divisor def main() -> None: N, K = map(int, input().split()) A = list(map(int, input().split())) p = set() for i in range(N): for j in divisors(A[i]): p.add(j) ans = [] for x in p: cnt = 0 for i in range(N): cnt += min(A[i] % x, x - (A[i] % x)) if cnt <= K: ans.append(x) print(max(ans)) if __name__ == "__main__": main()