#include<bits/stdc++.h>
using namespace std;
struct node{
int f,t;
};
int main()
{
int t;
cin>>t;
int dp_f[15][15],dp_t[15][15];
struct node a[15][15];
while(t--){
int n,m;
cin>>n>>m;
int temp;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
cin>>temp;
a[i][j].f = temp;
}
}
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
cin>>temp;
a[i][j].t = temp;
}
}
dp_f[1][1] = a[1][1].f;
dp_t[1][1] = a[1][1].t;
for(int i = 2;i <= m;i++){
dp_f[1][i] = a[1][i].f+dp_f[1][i-1];
dp_t[1][i] = a[1][i].t+dp_t[1][i-1];
}
for(int i = 2;i <= n;i++){
dp_f[i][1] = a[i][1].f+dp_f[i-1][1];
dp_t[i][1] = a[i][1].t+dp_t[i-1][1];
}
for(int i = 2;i <= n;i++){
for(int j = 2;j <= m;j++){
if(dp_f[i][j-1]==dp_f[i-1][j]){
if(dp_t[i-1][j] > dp_t[i][j-1]){
dp_t[i][j] = a[i][j].t+dp_t[i][j-1];
dp_f[i][j] = a[i][j].f+dp_f[i][j-1];
}
else{
dp_t[i][j] = a[i][j].t+dp_t[i-1][j];
dp_f[i][j] = a[i][j].f+dp_f[i-1][j];
}
}
else{
if(dp_f[i-1][j] > dp_f[i][j-1]){
dp_t[i][j] = a[i][j].t+dp_t[i][j-1];
dp_f[i][j] = a[i][j].f+dp_f[i][j-1];
}
else{
dp_t[i][j] = a[i][j].t+dp_t[i-1][j];
dp_f[i][j] = a[i][j].f+dp_f[i-1][j];
}
}
}
}
cout<<dp_f[n][m]<<" "<<dp_t[n][m]<<endl;
}
}