#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,s[65],f[65],len,sum; //判断当前这根木棍是否使用过、、
int dfs(int cur,int num,int pos) //num表示组成的木棍数量、、
{
if(cur==0)
{
if(num==1||dfs(len,num-1,n-1))
return 1;
return 0;
}
for(int i=pos;i>=0;i--)
if(!f[i]&&s[i]<=cur)
{
if(i!=pos&&s[i]==s[i+1]&&!f[i+1])
continue;
f[i]=1;
if(dfs(cur-s[i],num,i-1))
return 1;
f[i]=0; //回溯
if(cur==s[i]||cur==len)
break;
}
return 0;
}
int main()
{
int i;
while(scanf("%d",&n),n)
{
memset(f,0,sizeof(f));
for(sum=i=0;i<n;i++)
{
scanf("%d",s+i);
sum+=s[i];
}
sort(s,s+n);
for(i=s[n-1];i<sum;i++)
if(sum%i==0&&dfs(len=i,sum/i-1,n-1))
break;
printf("%d\n",i);
}
}