#include<bits/stdc++.h>
using namespace std;
int n,a[70],minn,sum,len,m;
bool used[70],bj;
void dfs(int zu,int last,int rest){
int i;
if(zu==m) {
bj=1;
return ;
}
if(rest==0){
for(i=1;i<=n;i++){
if(!used[i]) {
used[i]=1;break;
}
}
dfs(zu+1,i,len-a[i]);
if(bj==1) return ;
}
else{
int l=last+1,r=n,mid;
while(l<=r){
mid=l+r>>1;
if(a[mid]<=rest) r=mid-1;
else l=mid+1;
}
for(i=r;i<=n;i++){
if(!used[i] and rest>=a[i]){
used[i]=1;
dfs(zu,i,rest-a[i]);
if(bj==1) return ;
used[i]=0;
while(i<n and a[i]==a[i+1]) i++;
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int x;cin>>x;
if (x > 50) {n--;
i--;
continue;
}
else{a[i]=x;
}
minn=max(a[i],minn);
sum+=a[i];
}
sort(a+1,a+1+n,greater<int>());
for(int i=minn;i<=sum;i++){
if(sum%i==0){
fill(used+1,used+1+n,0);
used[1]=1;
len=i,m=sum/i,bj=0;
dfs(1,1,len-a[1]);
if(bj==1){cout<<i<<"\n";
break;
}
}
}
return 0;
}