#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define pii pair<int, int>
#define pil pair<int, ll>
#define pll pair<ll, ll>
#define fi first
#define se second
#define vii vector<pair<int, int>>
#define vil vector<pair<int, ll>>
#define vll vector<pair<ll, ll>>
#define vs vector<string>
mt19937_64 rd(chrono::steady_clock::now().time_since_epoch().count());
#define rand rd
ll random(ll a, ll b) {
assert(a <= b);
return a + rd() % (b - a + 1);
}
int dx[] = {1, -1, 0, 0};
int dy[] = {0, 0, 1, -1};
const int MAXN = 1e5 + 5;
const int INF = INT_MAX;
const int MOD = 1e9 + 7;
const ll INFLL = LLONG_MAX;
int n, sum = 0;
ll a[102];
namespace special {
ll calc() {
return min(a[2] - a[1], a[3] - a[2]);
}
}
namespace sub1 {
ll calc() {
ll ans = INFLL;
ll tt = 1;
for (int i = 1; i <= n; i++) tt *= 3;
for (ll mask = 0; mask < tt; mask++) {
ll x = mask;
ll sa = 0, sc = 0;
int cntA = 0, cntB = 0, cntC = 0;
for (int i = 1; i <= n; i++) {
int c = x % 3;
x /= 3;
if (c == 0) {
sa += a[i];
cntA++;
}
else if (c == 1) {
cntB++;
}
else {
sc += a[i];
cntC++;
}
}
if (cntA == 0 || cntB == 0 || cntC == 0) continue;
ans = min(ans, llabs(sa - sc));
}
return ans;
}
}
namespace sub2 {
struct dl {
ll sum; int ca, cb, cc;
};
ll calc() {
int n1 = n / 2, n2 = n - n1;
ll t1 = 1, t2 = 1;
for (int i = 1; i <= n1; i++) t1 *= 3;
for (int i = 1; i <= n2; i++) t2 *= 3;
vector<dl> v1;
v1.reserve(t1);
vector<ll> v2[8];
for (int mask = 0; mask < t1; mask++) {
ll x = mask, sa = 0, sc = 0; int ca = 0, cc = 0;
for (int i = 1; i <= n1; i++) {
int c = x % 3; x /= 3;
if (c == 0) {
sa += a[i];
ca++;
}
else if (c == 2) {
sc += a[i];
cc++;
}
}
int cb = n1 - ca - cc;
v1.push_back({sa - sc, ca, cb, cc});
}
for (int mask = 0; mask < t2; mask++) {
ll x = mask, sa = 0, sc = 0; int ca = 0, cc = 0;
for (int i = 1; i <= n2; i++) {
int c = x % 3; x /= 3;
if (c == 0) {
sa += a[n1 + i];
ca++;
}
else if (c == 2) {
sc += a[n1 + i];
cc++;
}
}
int cb = n2 - ca - cc;
ll di = sa - sc;
int c1 = ca > 0, c2 = cb > 0, c3 = cc > 0;
int idx = (c1 << 2) | (c2 << 1) | c3;
v2[idx].push_back(di);
}
for (auto &v : v2) sort(v.begin(), v.end());
ll ans = INFLL;
for (auto &t : v1) {
ll d1 = t.sum; ll ca = t.ca; ll cb = t.cb; ll cc = t.cc;
for (int idx = 0; idx < 8; idx++) {
int c1 = idx >> 2;
int c2 = (idx >> 1) & 1;
int c3 = idx & 1;
if ((ca > 0 || c1) && (cb > 0 || c2) && (cc > 0 || c3)) {
auto &v = v2[idx];
if (v.empty()) continue;
auto it = lower_bound(v.begin(), v.end(), -d1);
if (it != v.end()) {
ans = min(ans, llabs(d1 + *it));
}
if (it != v.begin()) {
it--;
ans = min(ans, llabs(d1 + *it));
}
}
}
}
return ans;
}
}
namespace sub3 {
const int MAXS = 2e3 + 33;
ll calc() {
for (int i = 1; i <= n; i++) {
sum += a[i];
}
int s1 = 2 * sum + 1, s2 = sum;
bitset<8> pv[MAXS], cur[MAXS];
for (int i = 0; i < s1; i++) pv[i].reset();
pv[s2].set(0);
for (int i = 1; i <= n; i++) {
for (int j = 0; j < s1; j++) {
cur[j].reset();
}
int v = a[i];
for (int j = 0; j < s1; j++) {
for (int m = 0; m < 8; m++) {
if (!pv[j].test(m)) continue;
int nm;
nm = m | 1;
if (j + v < s1) cur[j + v].set(nm);
nm = m | 2;
cur[j].set(nm);
nm = m | 4;
if (j >= v) cur[j - v].set(nm);
}
}
}
swap(pv, cur);
ll ans = INFLL;
for (int j = 0; j < s1; j++) {
if (pv[j].test(7)) {
ll d = llabs(j - s2);
if (d < ans) ans = d;
}
}
return ans;
}
}
signed main() {
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBsbCA9IGxvbmcgbG9uZzsKI2RlZmluZSBwaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBwaWwgcGFpcjxpbnQsIGxsPgojZGVmaW5lIHBsbCBwYWlyPGxsLCBsbD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHZpaSB2ZWN0b3I8cGFpcjxpbnQsIGludD4+CiNkZWZpbmUgdmlsIHZlY3RvcjxwYWlyPGludCwgbGw+PgojZGVmaW5lIHZsbCB2ZWN0b3I8cGFpcjxsbCwgbGw+PgojZGVmaW5lIHZzIHZlY3RvcjxzdHJpbmc+Cm10MTk5MzdfNjQgcmQoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKI2RlZmluZSByYW5kIHJkCmxsIHJhbmRvbShsbCBhLCBsbCBiKSB7CiAgICBhc3NlcnQoYSA8PSBiKTsKICAgIHJldHVybiBhICsgcmQoKSAlIChiIC0gYSArIDEpOwp9CmludCBkeFtdID0gezEsIC0xLCAwLCAwfTsKaW50IGR5W10gPSB7MCwgMCwgMSwgLTF9Owpjb25zdCBpbnQgTUFYTiA9IDFlNSArIDU7CmNvbnN0IGludCBJTkYgPSBJTlRfTUFYOwpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKY29uc3QgbGwgSU5GTEwgPSBMTE9OR19NQVg7CmludCBuLCBzdW0gPSAwOwpsbCBhWzEwMl07CgpuYW1lc3BhY2Ugc3BlY2lhbCB7CiAgICBsbCBjYWxjKCkgewogICAgICAgIHJldHVybiBtaW4oYVsyXSAtIGFbMV0sIGFbM10gLSBhWzJdKTsKICAgIH0KfQoKbmFtZXNwYWNlIHN1YjEgewogICAgbGwgY2FsYygpIHsKICAgICAgICBsbCBhbnMgPSBJTkZMTDsKICAgICAgICBsbCB0dCA9IDE7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB0dCAqPSAzOwogICAgICAgIGZvciAobGwgbWFzayA9IDA7IG1hc2sgPCB0dDsgbWFzaysrKSB7CiAgICAgICAgICAgIGxsIHggPSBtYXNrOwogICAgICAgICAgICBsbCBzYSA9IDAsIHNjID0gMDsKICAgICAgICAgICAgaW50IGNudEEgPSAwLCBjbnRCID0gMCwgY250QyA9IDA7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICAgICAgaW50IGMgPSB4ICUgMzsKICAgICAgICAgICAgICAgIHggLz0gMzsKICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsgCiAgICAgICAgICAgICAgICAgICAgc2EgKz0gYVtpXTsgCiAgICAgICAgICAgICAgICAgICAgY250QSsrOyAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gMSkgeyAKICAgICAgICAgICAgICAgICAgICBjbnRCKys7IAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7IAogICAgICAgICAgICAgICAgICAgIHNjICs9IGFbaV07IAogICAgICAgICAgICAgICAgICAgIGNudEMrKzsgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGNudEEgPT0gMCB8fCBjbnRCID09IDAgfHwgY250QyA9PSAwKSBjb250aW51ZTsKICAgICAgICAgICAgYW5zID0gbWluKGFucywgbGxhYnMoc2EgLSBzYykpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYW5zOwogICAgfQp9CgpuYW1lc3BhY2Ugc3ViMiB7CiAgICBzdHJ1Y3QgZGwgewogICAgICAgIGxsIHN1bTsgaW50IGNhLCBjYiwgY2M7CiAgICB9OwogICAgbGwgY2FsYygpIHsKICAgICAgICBpbnQgbjEgPSBuIC8gMiwgbjIgPSBuIC0gbjE7CiAgICAgICAgbGwgdDEgPSAxLCB0MiA9IDE7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjE7IGkrKykgdDEgKj0gMzsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuMjsgaSsrKSB0MiAqPSAzOwogICAgICAgIHZlY3RvcjxkbD4gdjE7CiAgICAgICAgdjEucmVzZXJ2ZSh0MSk7CiAgICAgICAgdmVjdG9yPGxsPiB2Mls4XTsKICAgICAgICBmb3IgKGludCBtYXNrID0gMDsgbWFzayA8IHQxOyBtYXNrKyspIHsKICAgICAgICAgICAgbGwgeCA9IG1hc2ssIHNhID0gMCwgc2MgPSAwOyBpbnQgY2EgPSAwLCBjYyA9IDA7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG4xOyBpKyspIHsKICAgICAgICAgICAgICAgIGludCBjID0geCAlIDM7IHggLz0gMzsKICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKICAgICAgICAgICAgICAgICAgICBzYSArPSBhW2ldOwogICAgICAgICAgICAgICAgICAgIGNhKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09IDIpIHsKICAgICAgICAgICAgICAgICAgICBzYyArPSBhW2ldOwogICAgICAgICAgICAgICAgICAgIGNjKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW50IGNiID0gbjEgLSBjYSAtIGNjOwogICAgICAgICAgICB2MS5wdXNoX2JhY2soe3NhIC0gc2MsIGNhLCBjYiwgY2N9KTsKICAgICAgICB9CiAgICAgICAgZm9yIChpbnQgbWFzayA9IDA7IG1hc2sgPCB0MjsgbWFzaysrKSB7CiAgICAgICAgICAgIGxsIHggPSBtYXNrLCBzYSA9IDAsIHNjID0gMDsgaW50IGNhID0gMCwgY2MgPSAwOwogICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuMjsgaSsrKSB7CiAgICAgICAgICAgICAgICBpbnQgYyA9IHggJSAzOyB4IC89IDM7CiAgICAgICAgICAgICAgICBpZiAoYyA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgc2EgKz0gYVtuMSArIGldOwogICAgICAgICAgICAgICAgICAgIGNhKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09IDIpIHsKICAgICAgICAgICAgICAgICAgICBzYyArPSBhW24xICsgaV07CiAgICAgICAgICAgICAgICAgICAgY2MrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpbnQgY2IgPSBuMiAtIGNhIC0gY2M7CiAgICAgICAgICAgIGxsIGRpID0gc2EgLSBzYzsKICAgICAgICAgICAgaW50IGMxID0gY2EgPiAwLCBjMiA9IGNiID4gMCwgYzMgPSBjYyA+IDA7CmludCBpZHggPSAoYzEgPDwgMikgfCAoYzIgPDwgMSkgfCBjMzsKICAgICAgICAgICAgdjJbaWR4XS5wdXNoX2JhY2soZGkpOwogICAgICAgIH0KICAgICAgICBmb3IgKGF1dG8gJnYgOiB2Mikgc29ydCh2LmJlZ2luKCksIHYuZW5kKCkpOwogICAgICAgIGxsIGFucyA9IElORkxMOwogICAgICAgIGZvciAoYXV0byAmdCA6IHYxKSB7CiAgICAgICAgICAgIGxsIGQxID0gdC5zdW07IGxsIGNhID0gdC5jYTsgbGwgY2IgPSB0LmNiOyBsbCBjYyA9IHQuY2M7CiAgICAgICAgICAgIGZvciAoaW50IGlkeCA9IDA7IGlkeCA8IDg7IGlkeCsrKSB7CiAgICAgICAgICAgICAgICBpbnQgYzEgPSBpZHggPj4gMjsKICAgICAgICAgICAgICAgIGludCBjMiA9IChpZHggPj4gMSkgJiAxOwogICAgICAgICAgICAgICAgaW50IGMzID0gaWR4ICYgMTsKICAgICAgICAgICAgICAgIGlmICgoY2EgPiAwIHx8IGMxKSAmJiAoY2IgPiAwIHx8IGMyKSAmJiAoY2MgPiAwIHx8IGMzKSkgewogICAgICAgICAgICAgICAgICAgIGF1dG8gJnYgPSB2MltpZHhdOwogICAgICAgICAgICAgICAgICAgIGlmICh2LmVtcHR5KCkpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIGF1dG8gaXQgPSBsb3dlcl9ib3VuZCh2LmJlZ2luKCksIHYuZW5kKCksIC1kMSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ICE9IHYuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYW5zID0gbWluKGFucywgbGxhYnMoZDEgKyAqaXQpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ICE9IHYuYmVnaW4oKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpdC0tOwogICAgICAgICAgICAgICAgICAgICAgICBhbnMgPSBtaW4oYW5zLCBsbGFicyhkMSArICppdCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gYW5zOwogICAgfQp9CgpuYW1lc3BhY2Ugc3ViMyB7CiAgICBjb25zdCBpbnQgTUFYUyA9IDJlMyArIDMzOwogICAgbGwgY2FsYygpIHsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgc3VtICs9IGFbaV07CiAgICAgICAgfQogICAgICAgIGludCBzMSA9IDIgKiBzdW0gKyAxLCBzMiA9IHN1bTsKICAgICAgICBiaXRzZXQ8OD4gcHZbTUFYU10sIGN1cltNQVhTXTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMxOyBpKyspIHB2W2ldLnJlc2V0KCk7CiAgICAgICAgcHZbczJdLnNldCgwKTsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzMTsgaisrKSB7CiAgICAgICAgICAgICAgICBjdXJbal0ucmVzZXQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbnQgdiA9IGFbaV07CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgczE7IGorKykgewogICAgICAgICAgICAgICAgZm9yIChpbnQgbSA9IDA7IG0gPCA4OyBtKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXB2W2pdLnRlc3QobSkpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIGludCBubTsKICAgICAgICAgICAgICAgICAgICBubSA9IG0gfCAxOwogICAgICAgICAgICAgICAgICAgIGlmIChqICsgdiA8IHMxKSBjdXJbaiArIHZdLnNldChubSk7CiAgICAgICAgICAgICAgICAgICAgbm0gPSBtIHwgMjsKICAgICAgICAgICAgICAgICAgICBjdXJbal0uc2V0KG5tKTsKICAgICAgICAgICAgICAgICAgICBubSA9IG0gfCA0OwogICAgICAgICAgICAgICAgICAgIGlmIChqID49IHYpIGN1cltqIC0gdl0uc2V0KG5tKTsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc3dhcChwdiwgY3VyKTsKICAgICAgICBsbCBhbnMgPSBJTkZMTDsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHMxOyBqKyspIHsKICAgICAgICAgICAgaWYgKHB2W2pdLnRlc3QoNykpIHsKICAgICAgICAgICAgICAgIGxsIGQgPSBsbGFicyhqIC0gczIpOwogICAgICAgICAgICAgICAgaWYgKGQgPCBhbnMpIGFucyA9IGQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFuczsKICAgIH0KfQoKCnNpZ25lZCBtYWluKCkgewogICAgCn0=