#include <bits/stdc++.h>
#define MAXN 600
using namespace std;

int arr[MAXN], outro[MAXN], n, k;

bool solve(int g) {
	int soma = 0;
	for (int i=0; i<n; i++) {
		outro[i] = arr[i] % g;
		soma += g - outro[i];
	}
	if (soma == 0) return true;
	sort(outro, outro+n);
	int suma = 0;
	for (int i=0; i<n; i++) {
		suma += outro[i];		
		soma -= g - outro[i];
		if (suma == soma) return suma <= k;
	}
	return false;
}

int main() {
#ifdef LOCAL
	freopen("input", "r", stdin);
#endif
	scanf("%d %d", &n, &k);
	int soma = 0;
	for (int i=0; i<n; i++) {
		scanf("%d", &arr[i]);
		soma += arr[i];
	}

	int res = 1;
	for (int i=1; i<=sqrt(soma)+2; i++) {
		if (soma % i == 0) {
			if (solve(i)) res = max(res, i);
			if (solve(soma/i)) res = max(res, soma/i);
		}
	}

	printf("%d\n", res);
	
	return 0;
}

