#include<bits/stdc++.h>
using namespace std;
#define int long long
int T;
signed main(){
cin>>T;
while(T--){
int n;
cin>>n;
vector<int> odd,even;
int maxn=0;
for(int i=1;i<=n;i++){
int x;
cin>>x;
if(x%2==1)
{
maxn=max(maxn,x);
odd.push_back(x);
}
else even.push_back(x);
}
sort(odd.begin(),odd.end(),greater<int>());
sort(even.begin(),even.end(),greater<int>());
vector<int> sum(even.size()+10,0);
for(int i=1;i<=(int)even.size();i++){
sum[i]=sum[i-1]+even[i-1];
}
if(odd.size()==0){
for(int i=1;i<=n;i++){
cout<<0<<" ";
}
cout<<endl;
continue;
}
for(int k=1;k<=n;k++){
int r=min((int)even.size(),k-1);
if(r<0)
{
cout<<0<<" ";
continue;
}
int last=k-1-r;
int ans=0,ok=0;
if(last%2==0){
if(last<=(int)odd.size()-1){
ans=maxn+sum[r];
ok=1;
}
}
else{
if(r<=(int)even.size()-1 && last<=(int)odd.size()){
ans=maxn+sum[r];
ok=1;
}
}
if(ok){
cout<<ans<<" ";
}
else{
r-=1;
if(r<0){
cout<<0<<" ";
continue;
}
last=k-1-r;
if(last%2==0){
if(last<=(int)odd.size()-1){
ans=maxn+sum[r];
ok=1;
}
}
else{
if(r<=(int)even.size()-1 && last<=(int)odd.size()){
ans=maxn+sum[r];
ok=1;
}
}
cout<<ans<<" ";
}
}
cout<<endl;
}
return 0;
}



