#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, sum, a[10000 + 97];
void sub1(){
int ans = LLONG_MAX;
for(int i = 1; i < 1 << n; i++){
int res = 0;
for(int j = 0; j < n; j++)
if (i >> j & 1)
res += a[j];
if (res << 1 <= sum)
ans = min(ans, sum - (res << 1));
}
cout << ans;
}
void sub2(){
vector <bool> dp((sum >> 1) + 1);
dp[0] = true;
for(int i = 0; i < n; i++)
for(int j = sum >> 1; j >= a[i]; j--)
dp[j] = dp[j] || dp[j - a[i]];
for(int i = sum >> 1; i >= 0; i--)
if (dp[i]){
cout << sum - (i << 1);
return;
}
}
void sub3(){
int ans = LLONG_MAX;
int m = n >> 1; // 0 -> mid
vector <int> tmp(1 << m);
for(int i = 1; i < 1 << m; i++)
for(int j = 0; j < m; j++)
if (i >> j & 1)
tmp[i] += a[j];
sort(tmp.begin(), tmp.end());
n -= m; // mid -> n
for(int i = 1; i < 1 << n; i++){
int res = 0;
for(int j = 0; j < n; j++)
if (i >> j & 1)
res += a[j + m];
int id = upper_bound(tmp.begin(), tmp.end(), (sum >> 1) - res) - tmp.begin();
if (id > 0)
ans = min(ans, sum - ((res + tmp[id - 1]) << 1));
}
cout << ans;
}
void sub4(){
bitset <600000 + 97> dp;
dp[0] = true;
for(int i = 0; i < n; i++)
dp |= dp << a[i];
for(int i = sum >> 1; i >= 0; i--)
if (dp[i]){
cout << sum - (i << 1);
return;
}
}
signed main(){
freopen("candy.inp", "r", stdin);
freopen("candy.out", "w", stdout);
ios_base::sync_with_stdio(NULL);
cin.tie(NULL); cin.tie(NULL);
cin >> n;
for(int i = 0; i < n; i++){
cin >> a[i];
sum += a[i];
}
if (n <= 20) sub1(); else
if (n <= 40) sub3(); else
if (n <= 1e3) sub2(); else sub4();
}