#include<bits/stdc++.h>
using namespace std;
int n,i,a[70],m,len,sum,w;
bool b[70],f,go[70];
bool cmp(int x,int y){
return x > y;
}
void dfs(int k,int l,int r){
if(k == m){
cout<< i << endl;
exit(0);
}
int i,j;
if(!r){
for(i = 1; i <= n; i++){
if(!b[i]){
b[i] = 1;
dfs(k + 1,i,len - a[i]);
b[i] = 0;
return ;
}
}
}
for(i = l + 1; i <= n; i++){
if(!b[i] && r >= a[i]){
b[i] = 1;
dfs(k,i,r - a[i]);
b[i] = 0;
if(r == a[i] || r == len){
return ;
}
i = go[i];
}
}
return ;
}
inline int read(){
int x = 0,f = 1;
char ch = getchar();
while(!isdigit(ch)){
if(ch == '-'){
f = -1;
}
ch = getchar();
}
while(isdigit(ch)){
x = (x << 1) + (x << 3) + ch - '0';
ch = getchar();
}
return x * f;
}
int main(){
n = read();
for(i = 1; i <= n; i++){
a[i] = read();
sum += a[i];
}
sort(a + 1,a + n + 1,cmp);
w = n;
go[n] = n;
for(i = n - 1; i >= 1; i--){
if(a[i] == a[w]){
go[i] = w;
}else{
go[i] = i;
w = i;
}
}
for(i = a[1]; i <= sum / 2; i++){
if(sum % i == 0){
b[1] = 1;
len = i;
m = sum / i;
dfs(1,1,len - a[1]);
b[1] = 0;
}
}
cout<< sum << endl;
return 0;
}