#include <bits/stdc++.h> // Damn ....
using namespace std;
#define int long long
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(),v.rend()
#define pq_min priority_queue<int, vector<int>, greater<int>>
typedef long long ll;
typedef long double ld;
const int MOD = 1e9 + 7;
const ll OO = 2e18;
const int oo = 1e9;
const int sz = 1e5+5;
////////////////////////////////////////////////////////////////////////////////////////
int n; int arr[105]; int dp[105][55555];
int go(int i, int val) {
if (i >= n) return abs(val);;
if (dp[i][val] != -1)
return dp[i][val];
int a= go(i+1,val+arr[i]);
int b= go(i+1,val-arr[i]);
return dp[i][val] = min(a, b);
}
//////////////////////////////////////////////////////////////////////////////////////
void _3OMDA() {
cin>>n;
for (int i = 0; i < n; i++) cin>>arr[i];
memset(dp,-1,sizeof(dp));
cout << go(0,0) << endl;
}
/////////////////////////////////////////////////////////////////////////////////////
signed main() {
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
int t = 1;
cin >> t;
for (int i = 0; i < t; i++) {
_3OMDA();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+ICAvLyBEYW1uIC4uLi4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSwgdi5lbmQoKQojZGVmaW5lIHJhbGwodikgdi5yYmVnaW4oKSx2LnJlbmQoKQojZGVmaW5lIHBxX21pbiBwcmlvcml0eV9xdWV1ZTxpbnQsIHZlY3RvcjxpbnQ+LCBncmVhdGVyPGludD4+CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKY29uc3QgbGwgT08gPSAyZTE4Owpjb25zdCBpbnQgb28gPSAxZTk7CmNvbnN0IGludCBzeiA9IDFlNSs1OwovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmludCBuOyBpbnQgYXJyWzEwNV07IGludCBkcFsxMDVdWzU1NTU1XTsKaW50IGdvKGludCBpLCBpbnQgdmFsKSB7CiAgICBpZiAoaSA+PSBuKSByZXR1cm4gYWJzKHZhbCk7OwogICAgaWYgKGRwW2ldW3ZhbF0gIT0gLTEpCiAgICAgICAgcmV0dXJuIGRwW2ldW3ZhbF07CiAgICBpbnQgYT0gZ28oaSsxLHZhbCthcnJbaV0pOwogICAgaW50IGI9IGdvKGkrMSx2YWwtYXJyW2ldKTsKICAgIHJldHVybiBkcFtpXVt2YWxdID0gbWluKGEsIGIpOwp9Ci8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCnZvaWQgXzNPTURBKCkgewogICAgY2luPj5uOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNpbj4+YXJyW2ldOwogICAgbWVtc2V0KGRwLC0xLHNpemVvZihkcCkpOwogICAgY291dCA8PCBnbygwLDApIDw8IGVuZGw7Cn0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpzaWduZWQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICAvL2ZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgLy9mcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwogICAgaW50IHQgPSAxOwogICAgY2luID4+IHQ7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHQ7IGkrKykgewogICAgICAgIF8zT01EQSgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=