#include<bits/stdc++.h>
using namespace std;
constexpr int N = 66;
int n, len = 1, sum = 0, a[N];
bool st[N], ans = 0;
char *p1,*p2,buf[100000];
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
int read(){
int x=0,f=1;
char ch=nc();
while(ch<48||ch>57){
if(ch=='-')
f=-1;
ch=nc();
}
while(ch>=48&&ch<=57)
x=x*10+ch-48,ch=nc();
return x*f;
}
void dfs(int l, int cnt, int val){
if(val > len) return;
if(val == len) cnt++, val = 0, l = 1;
if(cnt * len == sum){ ans = 1; return ;}
if(ans) return ;
for(int i = l + 1; i <= n; i++){
if(st[i]) continue;
st[i] = 1;
dfs(i, cnt, val + a[i]);
st[i] = 0;
if(len - val == a[i] || val == 0) return ;
while(a[i] == a[i+1]) i++;
}
}
int main(){
n = read();
for(int i = 1; i <= n; i++){
a[i] = read();
sum += a[i];
}
sort(a+1, a+n+1, greater<int>());
while(len <= sum){
if(sum % len == 0){
dfs(0, 0, 0);
if(ans != 0){cout << len; exit(0);}
}
len++;
}
return 0;
}