#include<bits/stdc++.h>
using namespace std;
int cnt=0,v=0,sum=0,l,s;
int a[100],k[100];
bool dfs(int now,int cab,int last)
{
if(now>s) return 1;
if(cab==l) return dfs(now+1,0,1);
int f=0;
for(int i=last;i<=cnt;i++)
{
if(!k[i] && cab+a[i]<=l && f!=a[i])
{
k[i]=1;
if(dfs(now,cab+a[i],i+1)) return 1;
f=a[i];
k[i]=0;
if(cab==0 || cab+a[i]==l) return 0;
}
}
return 0;
}
int main()
{
int n;
while(cin>>n&&n)
{
memset(a,0,sizeof(a));
memset(k,0,sizeof(k));
cnt=0,v=0,sum=0,l,s;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
if(x>50) continue;
a[++cnt]=x;
v=max(v,x);
sum+=x;
}
sort(a+1,a+cnt+1);
reverse(a+1,a+cnt+1);
for(l=v;l<=sum;l++)
{
if(sum%l) continue;
s=sum/l;
memset(k,0,sizeof(k));
if(dfs(1,0,1)) break;
}
cout<<l<<endl;
}
return 0;
}