#include<bits/stdc++.h>
using namespace std;
int len,n,k=1;
bool v[101];
int a[101];
int cnt,sum,val;
bool dfs(int stick,int cab,int last){
if(stick>cnt)
return true;
if(cab==len)
return dfs(stick+1,0,1);
int fail=0;
for(int i=last;i<=n;i++)
if(v[i]==0&&a[i]+cab<=len&&fail!=a[i])
{
v[i]=1;
if(dfs(stick,cab+a[i],i))
return true;
v[i]=0;
fail=a[i];
if(cab==0||cab+a[i]==len)
return false;
}
return false;
}
int main()
{
cin>>n;
sum=0;
val=0;
for(int i=1;i<=n;i++){
int temp;
cin>>temp;
if(temp>50)
continue;
sum+=temp;
a[k]=temp;
k++;
val=max(val,a[i]);
}
sort(a+1,a+n+1 );
reverse(a+1,a+n+1);
for(len=val;len<=sum;len++)
{
if(sum%len)
continue;
cnt=sum/len;
memset(v,0,sizeof(v));
if(dfs(1,0,1)){
cout<<len<<endl;
break;
}
}
return 0;
}