#include<bits/stdc++.h>
using namespace std;
int num[200],used[200];
int n,lim=-1,sum=0,len,flag=0,maxn;
bool cmp(int x,int y){return x>y;}
void dfs(int k,int last,int lenth)
{
if(k==maxn){
flag=1;return;
}
if(lenth==0){
int j;
for(int i=1;i<=n;i++)
{
if(!used[i]){
used[i]=1;j=i;break;
}
}
dfs(k+1,j,len-num[j]);
}
for(int i=last+1;i<=n;i++)
if(!used[i]&&num[i]<=lenth)
{
used[i]=1;
dfs(k,i,lenth-num[i]);
used[i]=0;
}
}
int main()
{
cin>>n;
while(n!=0)
{
lim=-1,sum=0;
for(int i=1;i<=n;i++)
{
cin>>num[i];
lim=max(lim,num[i]);
sum+=num[i];
}
sort(num+1,num+n+1,cmp);
for(int i=lim;i<=sum;i++)
{
if(sum%i==0)
{
flag=0;
memset(used,0,sizeof(used));
len=i;
used[1]=1;
maxn=sum/i;
dfs(1,1,len-num[i]);
if(flag)
{
cout<<len<<endl;
break;
}
}
}
cin>>n;
}
return 0;
}