1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define fi first
#define se second
#define lb lower_bound
#define vec vector
using namespace std;
vector<ll>d;vector<int>v;int n;
void dzielniki(ll x){
	ll i=1;
	for(;i*i<=x;i++){
		if(x%i==0){
			d.pb(i);
			d.pb(x/i);
		}
	}
	sort(d.begin(),d.end(),greater<ll>());
}
bool check(ll k){
	vector<int>x(n);
	for(int i=0;i<v.size();i++){
		int diff=v[i]-(i>0?v[i-1]:0);
        x[i]=diff+(i>=k?x[i-k]:0);
		if(x[i]<0)return 0;
		if(i>n-k&&x[i]!=0)return 0;
	}
	return 1;
}
int main(){
	ios_base::sync_with_stdio(0);cin.tie(0);
	ll sum=0;
	cin>>n;
	v.resize(n);
	for(int i=0;i<n;i++){cin>>v[i];sum=sum+v[i];}
	dzielniki(sum);
	for(ll e:d){
		if(check(e)){
			cout<<e<<'\n';return 0;
		}
	}
	return 0;
}