#include<bits/stdc++.h>
using namespace std;
int n,maxx,sum;
int a[105];
int pre[105],nxt[105];
bool dfs(int x,int i,int j,int k,int w){
if(i==w+1) return 1;
if(j==k) return dfs(1,i+1,0,k,w);
if(x==n+1) return 0;
if(a[x]+j<=k){
pre[nxt[x]]=nxt[x];
nxt[pre[x]]=pre[x];
bool ans=dfs(nxt[x],i,a[x]+j,k,w);
pre[nxt[x]]=x;
nxt[pre[x]]=x;
if(ans) return 1;
if(a[x]+j==k) return 0;
}
return dfs(x+1,i,j,k,w);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
maxx=max(maxx,a[i]);
sum+=a[i];
}
sort(a+1,a+1+n,greater<int>());
for(int i=1;i<n;i++){
nxt[i]=i+1;
}
for(int i=2;i<=n;i++){
pre[i]=i-1;
}
for(int i=maxx;i<=sum;i++){
if(sum%i!=0) continue;
if(dfs(1,1,0,i,sum/i)){
cout<<i;
return 0;
}
}
return 0;
}