//----->|try=0; while(!success) try++;|<------
//----->|Belief Yourself,Respect Yourself|<----
//----->|Be Proud Of Yourself,You're Doing Your best|<-----
#include<bits/stdc++.h>
using namespace std;
#define uniq(x) x.erase(unique(x.begin(),x.end()), x.end()) //Unique value find from vector
#define upper(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr //Upper value search;
#define lower(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr //Lower value search;
#define max3(a,b,c) max(max(a,b),c)//maximum value find three value;
#define min3(a,b,c) min(min(a,b),c)//minimum value find three value;
#define PI acos(-1.0)//PI Calculation
#define LL long long
#define AND(a,b) ((a) & (b))
#define OR(a,b) ((a)|(b))
#define XOR(a,b) ((a) ^ (b))
#define mp make_pair
#define sqr(x) ((x)*(x))
#define sqrt(x) sqrt(1.0*(x))
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define MX 1000005
#define MOD 1000000007
template<typename T> T POW(T b,T p) //Pow calculation
{
T r=1;
while(p) {
if(p&1)r=(r*b);
b=(b*b);
p>>=1;
}
return r;
}
template<typename T> T BigMod(T b,T p,T m) //BigMod Calculation
{
T r=1;
while(p) {
if(p&1)r=(r*b)%m;
b=(b*b)%m;
p>>=1;
}
return r;
}
//||--------------------------->||Main_Code_Start_Here||<---------------------------------||
int dp[100001],wt[100001];
int knapsack(int n,int w)
{
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
{
for(int j=w;j>0;j--)
{
if(wt[i]<=j)
{
dp[j]=max(dp[j],wt[i]+dp[j-wt[i]]);
}
}
}
return dp[w];
}
int main()
{
//freopen("a.in", "r", stdin);
//freopen("a.out", "w", stdout);
int test,n;
cin>>test;
while(test--)
{
cin>>n;
int sum=0;
for(int i=1;i<=n;i++)
{
cin>>wt[i];
sum+=wt[i];
}
cout<<sum-2*knapsack(n,sum/2)<<endl;
}
}
Ly8tLS0tLT58dHJ5PTA7IHdoaWxlKCFzdWNjZXNzKSB0cnkrKzt8PC0tLS0tLQovLy0tLS0tPnxCZWxpZWYgWW91cnNlbGYsUmVzcGVjdCBZb3Vyc2VsZnw8LS0tLQovLy0tLS0tPnxCZSBQcm91ZCBPZiBZb3Vyc2VsZixZb3UncmUgRG9pbmcgWW91ciBiZXN0fDwtLS0tLQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIHVuaXEoeCkgIHguZXJhc2UodW5pcXVlKHguYmVnaW4oKSx4LmVuZCgpKSwgeC5lbmQoKSkgLy9VbmlxdWUgdmFsdWUgZmluZCBmcm9tIHZlY3RvcgojZGVmaW5lIHVwcGVyKGFycixuLGZpeGVkKSB1cHBlcl9ib3VuZChhcnIsYXJyK24sZml4ZWQpLWFyciAgLy9VcHBlciB2YWx1ZSBzZWFyY2g7CiNkZWZpbmUgbG93ZXIoYXJyLG4sZml4ZWQpIHVwcGVyX2JvdW5kKGFycixhcnIrbixmaXhlZCktYXJyICAvL0xvd2VyIHZhbHVlIHNlYXJjaDsKI2RlZmluZSBtYXgzKGEsYixjKSBtYXgobWF4KGEsYiksYykvL21heGltdW0gdmFsdWUgZmluZCB0aHJlZSB2YWx1ZTsKI2RlZmluZSBtaW4zKGEsYixjKSBtaW4obWluKGEsYiksYykvL21pbmltdW0gdmFsdWUgZmluZCB0aHJlZSB2YWx1ZTsKI2RlZmluZSBQSSBhY29zKC0xLjApLy9QSSBDYWxjdWxhdGlvbgojZGVmaW5lIExMIGxvbmcgbG9uZwojZGVmaW5lIEFORChhLGIpICgoYSkgJiAoYikpCiNkZWZpbmUgT1IoYSxiKSAoKGEpfChiKSkKI2RlZmluZSBYT1IoYSxiKSAoKGEpIF4gKGIpKQojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHNxcih4KSAoKHgpKih4KSkKI2RlZmluZSBzcXJ0KHgpIHNxcnQoMS4wKih4KSkKI2RlZmluZSBJTkZfTUFYIDIxNDc0ODM2NDcKI2RlZmluZSBJTkZfTUlOIC0yMTQ3NDgzNjQ3CiNkZWZpbmUgTVggMTAwMDAwNQojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgUE9XKFQgYixUIHApICAgICAgICAgIC8vUG93IGNhbGN1bGF0aW9uCiB7CiAgICBUIHI9MTsKICAgIHdoaWxlKHApIHsKICAgICAgICBpZihwJjEpcj0ocipiKTsKICAgICAgICBiPShiKmIpOwogICAgICAgIHA+Pj0xOwogICAgfQogICAgcmV0dXJuIHI7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgQmlnTW9kKFQgYixUIHAsVCBtKSAvL0JpZ01vZCBDYWxjdWxhdGlvbgp7CiAgICBUIHI9MTsKICAgIHdoaWxlKHApIHsKICAgICAgICBpZihwJjEpcj0ocipiKSVtOwogICAgICAgIGI9KGIqYiklbTsKICAgICAgICBwPj49MTsKICAgIH0KICAgIHJldHVybiByOwp9CgovL3x8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPnx8TWFpbl9Db2RlX1N0YXJ0X0hlcmV8fDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18fAppbnQgZHBbMTAwMDAxXSx3dFsxMDAwMDFdOwppbnQga25hcHNhY2soaW50IG4saW50IHcpCnsKICAgIG1lbXNldChkcCwwLHNpemVvZihkcCkpOwoKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgewogICAgICAgIGZvcihpbnQgaj13O2o+MDtqLS0pCiAgICAgICAgewogICAgICAgICAgICBpZih3dFtpXTw9aikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZHBbal09bWF4KGRwW2pdLHd0W2ldK2RwW2otd3RbaV1dKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBkcFt3XTsKfQppbnQgbWFpbigpCnsKICAgIC8vZnJlb3BlbigiYS5pbiIsICJyIiwgc3RkaW4pOwogICAgLy9mcmVvcGVuKCJhLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIGludCB0ZXN0LG47CiAgICBjaW4+PnRlc3Q7CiAgICB3aGlsZSh0ZXN0LS0pCiAgICB7CiAgICAgICAgY2luPj5uOwogICAgICAgIGludCBzdW09MDsKICAgICAgICBmb3IoaW50IGk9MTtpPD1uO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGNpbj4+d3RbaV07CiAgICAgICAgICAgIHN1bSs9d3RbaV07CiAgICAgICAgfQoKICAgICAgICBjb3V0PDxzdW0tMiprbmFwc2FjayhuLHN1bS8yKTw8ZW5kbDsKICAgIH0KfQ==