思路貌似是对的,最后一个样例第一组过不去
#include<bits/stdc++.h>
#define LL long long
#define F(x,s,t) for(int x=s;x<=t;x++)
using namespace std;
int read(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
const int N = 3e5 + 10;
int n;
LL a[N];
int main(){
//freopen("card.in","r",stdin);
//freopen("card.out","w",stdout);
int T = read();
while(T -- ){
n = read();
F(i, 1, n)a[i] = read();
LL cnt = 0;
F(i, 1, n){
cnt += a[i] / 3;
a[i] %= 3;
}
LL ans = cnt;
F(i ,1, n){
if(cnt < 1)break;
if(a[i] == 1){
cnt -- ;
a[i] = 0;
}
}
F(i, 1, n){
if(cnt < 1)break;
if(a[i] == 2){
if(cnt == 1){
cnt --;
a[i] = 1;
}else{
cnt -= 2;
a[i] = 0;
}
}
}
F(i, 1, n){
if(a[i])ans ++ ;
}
if(cnt){
ans -= cnt;
ans += (cnt) / 4 * 3;
cnt %= 4;
if(cnt <= 2)ans += 2;
if(cnt == 3)ans += 3;
}
printf("%lld\n", ans);
}
return 0;
}