//LOJ 10020 #10020. 「一本通 1.3 例 3」小木棍
//dfs不同处,有不同结果
#include <cstdio>
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 105;
int n, a[maxn], sum, used[maxn], minn, m, bj, len;
bool cmp(const int &x, const int &y) {
return x > y;
}
void dfs(int k, int last, int rest)
{
if (k == m)
{
bj = 1;
return;
}
int i;
if (rest == 0)
{
for ( i = 1; i <= n; i++)
{
if (used[i] == 0)
{
used[i] = 1;
break;
}
//dfs(k + 1, i, len - a[i]);//有一个TLE+WA
}
dfs(k + 1, i, len - a[i]);//一个WA
}
//dfs(k + 1, i, len - a[i]);//SF
for (int i = last + 1; i <= n; i++)
{
if (used[i] == 0 && rest >= a[i])
{
used[i] = 1;
dfs(k, i, rest - a[i]);
used[i] = 0;
//
int j=i;//
while (i<n&&a[j] == a[i]) i++;//
if(i==n) return ;//
}
}
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
sum += a[i];
minn = max(minn, a[i]);
}
sort(a + 1, a + 1 + n, cmp);
//for(int i=1;i<=n;i++) cout<<a[i]<<" ";
//cout<<minn<<sum;
for (int i = minn; i <= sum; i++) {
if (sum % i == 0) {
memset(used, 0, sizeof(used));
len = i;
bj = 0;
m = sum / i;
used[1] = 1;
dfs(1, 1, len - a[1]); //
if (bj == 1) {
cout << len << endl;
break;
}
}
}
return 0;
}