#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
long long a[100],v[100],n,len,val,cnt,sum;
int dfs(int stict,int cab,int last){
if(stict==cnt)return true;
if(cab==len)return dfs(stict+1,0,1);
int fail=0;
for(int i=last;i<=n;i++){
if(!v[i]&&cab+a[i]<=len&&fail!=a[i]){
v[i]==1;
if(dfs(stict,cab+a[i],i+1))return true;
fail=a[i];
v[i]=0;
if(cab+a[i]>len)return false;
}
}
return false;
}
int main(){
cin>>n;
val=0,cnt=0,sum=0,len=0;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i],val=max(val,a[i]);
}
sort(a+1,a+1+n);
reverse(a+1,a+1+n);
for(len=val;len<=sum;len++){
if(sum%len)continue;
cnt=sum/len;
memset(v,0,sizeof(v));
if(dfs(0,0,1))break;
}
cout<<len<<endl;
return 0;
}