#include<iostream>
#include<algorithm>
using namespace std;
bool vis[70],ok;
int n,m,a[70],nex[70],num,cnt=1,sum=0,len;
bool cmp(int a,int b){
return a>b;
}
void dfs(int k,int last,int rest){
int i;
if(!rest){
if(k==m){
ok=1;
return;
}
for(i=1;i<=cnt;i++){
if(!vis[i]) break;
}
vis[i]=1;
dfs(k+1,i,len-a[i]);
vis[i]=0;
if(ok){
return;
}
}
int l=last+1,r=cnt,mid;
while(l<r){
mid=(l+r)>>1;
if(a[mid]<=rest){
r=mid;
}
else{
l=mid+1;
}
}
for(i=l;i<=cnt;i++){
if(!vis[i]){
vis[i]=1;
dfs(k,i,rest-a[i]);
vis[i]=0;
if(ok){
return;
}
if(rest==a[i] || rest==len){
return;
}
i=nex[i];
if(i==cnt){
return;
}
}
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&num);
if(num>50){
continue;
}
a[cnt]=num;
cnt++;
sum+=num;
}
sort(a+1,a+cnt+1,cmp);
nex[cnt]=cnt;
for(int i=cnt-1;i>=1;i--){
if(a[i]==a[i+1]){
nex[i]=nex[i+1];
}
else{
nex[i]=i;
}
}
for(len=a[1];len<=sum/2;len++){
if(sum%len!=0){
continue;
}
m=sum/len;
vis[1]=1;
dfs(1,1,len-a[1]);
vis[1]=0;
if(ok){
cout<<len<<endl;
return 0;
}
}
cout<<sum<<endl;
return 0;
}