#include <bits/stdc++.h>
#define ll long long
#define fir first
#define sec second
#define pll pair <ll, ll>
#define sz(x) (int)x.size()
#define all(v) v.begin(), v.end()
#define pushb push_back
using namespace std;
const int N = 96;
int n, a[N + 5], mid;
ll sum, ans;
unordered_map <ll, ll> dp, dp0;
void sub4()
{
dp.clear(); dp0.clear();
dp[0] = 0, dp0[0] = 0;
for (int i = 1; i <= n; ++i)
{
for (const pair <ll, ll> &tmp : dp)
{
dp0[tmp.fir + a[i]] = max(dp0[tmp.fir + a[i]], tmp.sec + a[i]);
dp0[abs(tmp.fir - a[i])] = max(dp0[abs(tmp.fir - a[i])], tmp.sec + a[i]);
}
for (const pair <ll, ll> &tmp : dp0)
dp[tmp.fir] = tmp.sec;
}
cout << sum - dp0[0] << endl;
}
//map <ll, ll> v;
vector <pll> v;
vector <pll> real_v;
void recur1(int pos, ll diff, ll curr)
{
if (pos > mid)
{
v.pushb({diff, curr});
return;
}
recur1(pos + 1, diff, curr);
recur1(pos + 1, diff + a[pos], curr + a[pos]);
recur1(pos + 1, abs(diff - a[pos]), curr + a[pos]);
}
void recur2(int pos, ll diff, ll curr)
{
if (pos > n)
{
int ind = lower_bound(all(v), pll(diff, 0)) - v.begin();
if (ind >= sz(v) || v[ind].fir != diff) return;
ans = max(ans, curr + v[ind].sec);
return;
}
recur2(pos + 1, diff, curr);
recur2(pos + 1, diff + a[pos], curr + a[pos]);
recur2(pos + 1, abs(diff - a[pos]), curr + a[pos]);
}
void sub2()
{
v.clear();
real_v.clear();
mid = (n + 1) / 2;
recur1(1, 0, 0);
sort(all(v));
real_v.pushb(v[0]);
for (int i = 1; i < sz(v); ++i)
{
if (v[i].fir == real_v.back().fir)
real_v.pop_back();
real_v.pushb(v[i]);
}
swap(v, real_v);
ans = 0;
recur2(mid + 1, 0, 0);
cout << sum - ans << endl;
}
int main()
{
ios::sync_with_stdio(false), cin.tie(nullptr);
#define name "treasure"
if (fopen(name".inp", "r"))
{
freopen(name".inp", "r", stdin);
freopen(name".out", "w", stdout);
}
while (cin >> n)
{
sum = 0;
for (int i = 1; i <= n; ++i)
cin >> a[i], sum += a[i];
if (n <= 24) sub2();
else sub4();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZmlyIGZpcnN0CiNkZWZpbmUgc2VjIHNlY29uZAojZGVmaW5lIHBsbCBwYWlyIDxsbCwgbGw+CiNkZWZpbmUgc3ooeCkgKGludCl4LnNpemUoKQojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksIHYuZW5kKCkKI2RlZmluZSBwdXNoYiBwdXNoX2JhY2sKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgaW50IE4gPSA5NjsKCmludCBuLCBhW04gKyA1XSwgbWlkOwpsbCBzdW0sIGFuczsKdW5vcmRlcmVkX21hcCA8bGwsIGxsPiBkcCwgZHAwOwoKdm9pZCBzdWI0KCkKewogICAgZHAuY2xlYXIoKTsgZHAwLmNsZWFyKCk7CiAgICBkcFswXSA9IDAsIGRwMFswXSA9IDA7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpCiAgICB7CiAgICAgICAgZm9yIChjb25zdCBwYWlyIDxsbCwgbGw+ICZ0bXAgOiBkcCkKICAgICAgICB7CiAgICAgICAgICAgIGRwMFt0bXAuZmlyICsgYVtpXV0gPSBtYXgoZHAwW3RtcC5maXIgKyBhW2ldXSwgdG1wLnNlYyArIGFbaV0pOwogICAgICAgICAgICBkcDBbYWJzKHRtcC5maXIgLSBhW2ldKV0gPSBtYXgoZHAwW2Ficyh0bXAuZmlyIC0gYVtpXSldLCB0bXAuc2VjICsgYVtpXSk7CiAgICAgICAgfQoKICAgICAgICBmb3IgKGNvbnN0IHBhaXIgPGxsLCBsbD4gJnRtcCA6IGRwMCkKICAgICAgICAgICAgZHBbdG1wLmZpcl0gPSB0bXAuc2VjOwogICAgfQoKICAgIGNvdXQgPDwgc3VtIC0gZHAwWzBdIDw8IGVuZGw7Cn0KCi8vbWFwIDxsbCwgbGw+IHY7CnZlY3RvciA8cGxsPiB2Owp2ZWN0b3IgPHBsbD4gcmVhbF92OwoKdm9pZCByZWN1cjEoaW50IHBvcywgbGwgZGlmZiwgbGwgY3VycikKewogICAgaWYgKHBvcyA+IG1pZCkKICAgIHsKICAgICAgICB2LnB1c2hiKHtkaWZmLCBjdXJyfSk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJlY3VyMShwb3MgKyAxLCBkaWZmLCBjdXJyKTsKICAgIHJlY3VyMShwb3MgKyAxLCBkaWZmICsgYVtwb3NdLCBjdXJyICsgYVtwb3NdKTsKICAgIHJlY3VyMShwb3MgKyAxLCBhYnMoZGlmZiAtIGFbcG9zXSksIGN1cnIgKyBhW3Bvc10pOwp9Cgp2b2lkIHJlY3VyMihpbnQgcG9zLCBsbCBkaWZmLCBsbCBjdXJyKQp7CiAgICBpZiAocG9zID4gbikKICAgIHsKICAgICAgICBpbnQgaW5kID0gbG93ZXJfYm91bmQoYWxsKHYpLCBwbGwoZGlmZiwgMCkpIC0gdi5iZWdpbigpOwogICAgICAgIGlmIChpbmQgPj0gc3oodikgfHwgdltpbmRdLmZpciAhPSBkaWZmKSByZXR1cm47CiAgICAgICAgYW5zID0gbWF4KGFucywgY3VyciArIHZbaW5kXS5zZWMpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZWN1cjIocG9zICsgMSwgZGlmZiwgY3Vycik7CiAgICByZWN1cjIocG9zICsgMSwgZGlmZiArIGFbcG9zXSwgY3VyciArIGFbcG9zXSk7CiAgICByZWN1cjIocG9zICsgMSwgYWJzKGRpZmYgLSBhW3Bvc10pLCBjdXJyICsgYVtwb3NdKTsKfQoKdm9pZCBzdWIyKCkKewogICAgdi5jbGVhcigpOwogICAgcmVhbF92LmNsZWFyKCk7CiAgICBtaWQgPSAobiArIDEpIC8gMjsKICAgIHJlY3VyMSgxLCAwLCAwKTsKICAgIHNvcnQoYWxsKHYpKTsKICAgIHJlYWxfdi5wdXNoYih2WzBdKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc3oodik7ICsraSkKICAgIHsKICAgICAgICBpZiAodltpXS5maXIgPT0gcmVhbF92LmJhY2soKS5maXIpCiAgICAgICAgICAgIHJlYWxfdi5wb3BfYmFjaygpOwogICAgICAgIHJlYWxfdi5wdXNoYih2W2ldKTsKICAgIH0KICAgIHN3YXAodiwgcmVhbF92KTsKICAgIGFucyA9IDA7CiAgICByZWN1cjIobWlkICsgMSwgMCwgMCk7CiAgICBjb3V0IDw8IHN1bSAtIGFucyA8PCBlbmRsOwp9CgppbnQgbWFpbigpCnsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY2luLnRpZShudWxscHRyKTsKICAgICNkZWZpbmUgbmFtZSAidHJlYXN1cmUiCiAgICBpZiAoZm9wZW4obmFtZSIuaW5wIiwgInIiKSkKICAgIHsKICAgICAgICBmcmVvcGVuKG5hbWUiLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4obmFtZSIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgd2hpbGUgKGNpbiA+PiBuKQogICAgewogICAgICAgIHN1bSA9IDA7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKQogICAgICAgICAgICBjaW4gPj4gYVtpXSwgc3VtICs9IGFbaV07CgogICAgICAgIGlmIChuIDw9IDI0KSBzdWIyKCk7CiAgICAgICAgZWxzZSBzdWI0KCk7CiAgICB9Cn0K