#include<bits/stdc++.h>
using namespace std;
const int N=2010;
int a[N],b[N],c[N];
int n,m;
map<pair<int,int>,bool> st;
struct P{
int x,y;
bool operator < (const P & t) const{
return a[x]+b[y]>a[t.x]+b[t.y];
}
};
void solve(){
priority_queue<P> q;
int cnt=0;
st.clear();
st[make_pair(0,0)]=true;
P t={0,0};
q.push(t);
for(int i=0;i<n;i++){
P k=q.top();
c[i]=a[k.x]+b[k.y];
q.pop();
if(!st[make_pair(k.x+1,k.y)]){
t={k.x+1,k.y};
q.push(t);
st[make_pair(k.x+1,k.y)]=true;
}
if(!st[make_pair(k.x,k.y+1)]){
t={k.x,k.y+1};
q.push(t);
st[make_pair(k.x,k.y+1)]=true;
}
}
for(int i=0;i<n;i++) a[i]=c[i];
}
int main(){
int T;scanf("%d",&T);
while(T--){
scanf("%d%d",&m,&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);
m--;
while(m--){
for(int i=0;i<n;i++) scanf("%d",&b[i]);
sort(b,b+n);
solve();
}
for(int i=0;i<n;i++){
i==0?printf("%d",a[i]):printf(" %d",a[i]);
}
puts("");
}
return 0;
}