#include<bits/stdc++.h> usingnamespace std; #define int long long #define rep(i,l,r) for(int i = l;i<=r;i++) #define per(i,r,l) for(int i = r;i>=l;i--) voidsolve(){ int n; cin>>n; vector<int > vec(n+5);//血量数组 int sum = 0; for(int i = 1;i<=n;i++){ scanf("%lld",&vec[i]); sum += vec[i]; } sort(vec.begin()+1,vec.begin()+1+n); int x = 0; int ans = 0; for(int l = 1,r = n;l<=r;){//l,r双指针 if(x + sum >= 2 * vec[r]){//如果杀死小怪能够获得足够的连击值 while(x < vec[r]){//杀死小怪,直到够杀死大怪 x += vec[l]; ans += vec[l]; sum -= vec[l]; l++; } if(x != vec[r]) {//如果普攻砍多了 l--; vec[l] = x - vec[r]; ans -= vec[l]; sum += vec[l]; } x = 0; ans++; sum -= vec[r]; r--; } else { while(l<r){//不够的话,先普攻杀死其他所有的小怪 x += vec[l]; ans += vec[l]; l ++; } int t = (vec[r] + x) / 2;//找到斩杀线 ans += vec[r] - t; if(t != 0) ans++; break; } } cout<<ans<<endl; } signedmain(){ int T; cin>>T; while(T--){ solve(); } return0; }