#include
using namespace std;
int n, res = 0;
vector a;
int binSearch(int l, int r, int v) {
while (l <= r) {
int mid = (l + r) / 2;
if (a[mid] == v) return mid;
else if (a[mid] > v) r = mid - 1;
else l = mid + 1;
}
return -1;
}
bool check(int x, int q, int n) {
int pos, id = 0;
for (int i = 1; i <= q; i++) {
pos = binSearch(id, n - 1, i*x);
if (pos == -1) return false;
id = pos;
}
return true;
}
int max(int a, int b) {
if (a >= b) return a;
return b;
}
int main() {
int n;
cin >> n;
a.reserve(n);
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 1; i < n; i++) a[i] = a[i - 1] + a[i];
int k = a[n - 1];
for (int i = 1; i <= sqrt(k); i++) {
if (k % i == 0)
if (k / i == i) {
if (check(k / i, i, n)) res = max(res, i);
} else {
if (check(k / i, i, n)) res = max(res, i);
if (check(k / (k / i), k / i, n)) res = max(res, k / i);
}
}
cout << res;
return 0;
}