#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){return a>b;}
int n;
int a[70];
int vis[70];
int nxt[70];
int sum;
bool da=false;
int lk;
void dfs(int x,int nl,int last)
{
if(nl>lk)
{
return;
}
if(nl==lk)
{
if(x==sum/lk)
{
da=true;
cout<<lk;
exit(0);
}
else
{
int p;
for(p=1;p<=n;++p)
{
if(!vis[p])
{
break;
}
}
vis[p]=1;
dfs(x+1,a[p],p);
vis[p]=0;
}
}
else
{
for(int i=last+1;i<=n;++i)
{
if(!vis[i]&&a[i]<=(lk-nl))
{
vis[i]=1;
dfs(x,nl+a[i],i);
vis[i]=0;
if(lk-nl==a[i]||lk-nl==lk)
{
return;
}
i=nxt[i];
if(i==n)
{
return;
}
}
}
}
}
int main()
{
cin>>n;
int ed=0;
a[0]=0x3f;
for(int i=1;i<=n;++i)
{
cin>>a[i];
ed+=a[i];
}
sum=ed;
sort(a+1,a+1+n,cmp);
nxt[n]=n;
for(int i=n-1;i>=1;--i)
{
if(a[i]==a[i+1])
{
nxt[i]=nxt[i+1];
}
else
{
nxt[i]=i;
}
}
int st=a[1];
for(int i=st;i<=ed/2;++i)
{
if(ed%i!=0)
{
continue;
}
lk=i;
dfs(1,0,1);
}
if(!da)
{
cout<<sum;
}
return 0;
}