#include<bits/stdc++.h>
using namespace std;
int n,sum,m,l,r,mid,len;
int a[70],vis[70],fp[70];
inline int read(){
int ans=0;
char c=getchar();
for(;!isdigit(c);c=getchar()) ;
for(;isdigit(c);c=getchar()) ans=(ans<<3)+(ans<<1)+c-48;
return ans;
}
bool cmp(int a,int b){
return a>b;
}
bool dfs(int k,int last,int now){
if(!now){
if(k==m) return true;
int p;
for(int i=1;i<=n;i++)
if(!vis[i]){
p=i; break;
}
vis[p]=1;
bool f=dfs(k+1,p,len-a[p]);
vis[p]=0;
if(f) return true;
}
l=1,r=n;
while(l<r){
mid=l+r>>1;
if(a[mid]<=now) r=mid;
else l=mid+1;
}
for(int i=l;i<=n;i++){
if(!vis[i]){
vis[i]=1;
bool f=dfs(k,i,now-a[i]);
vis[i]=0;
if(f) return true;
if(now==a[i]||now==len) return false;
i=fp[i];
if(i==n) return false;
}
}
return false;
}
int main(){
n=read();
for(int i=1;i<=n;i++) a[i]=read(),sum+=a[i];
sort(a+1,a+1+n);
fp[n]=n;
for(int i=n-1;i>=1;i--){
if(a[i]==a[i+1]) fp[i]=fp[i+1];
else fp[i]=i;
}
for(len=a[1];len<=sum;len++){
if(sum%len==0){
m=sum/len;
vis[1]=1;
if(dfs(1,1,len-a[1])){
printf("%d",len); return 0;
}
vis[1]=0;
}
}
printf("%d",sum);
return 0;
}