#include <bits/stdc++.h>
using namespace std;
inline bool cmp(int x, int y) {
return x > y;
}
int n, a[70], vis[70], s, n1122334, factor;
inline bool dfs(int r, int l, int last) {
if (!(r | l))return 1;
if (!l)l = factor;
for (register int i = (l == factor ? 1 : last + 1); i <= n; i++) {
if (i > 0 && !vis[i - 1] && a[i - 1] == a[i])continue;
if (!vis[i] && a[i] <= l) {
vis[i] = 1;
if (dfs(r - 1, l - a[i], i))return 1;
else {
vis[i] = 0;
if (l == factor || l == a[i])return 0;
}
}
}
return 0;
}
inline void solve() {
for (factor = a[1]; factor <= s / 2; factor++)
if (!(s % factor)) {
memset(vis, 0, sizeof(vis));
if (dfs(n, factor, -1)) {
cout << factor;
return;
}
}
cout << s;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n1122334;
n = s = 0;
for (register int i = 1; i <= n1122334; i++) {
cin >> a[i];
a[++n] = a[i];
s += a[n];
}
sort(a + 1, a + 1 + n, cmp);
solve();
return 0;
}
https://www.luogu.com.cn/record/174833324