#include<bits/stdc++.h>
using namespace std;
int t,xx[7],yy[7],data[21][21];
int sum=0;
int xxx[8]={-1,-1,-1,0,0,1,1,1};
int yyy[8]={-1,0,1,-1,1,1,0,-1};
int vist[21][21]={0};
void dfs(int number,int x,int y,int ct){
sum=max(sum,ct);
if(y==yy[number]+1){
dfs(number,x+1,1,ct);
return ;
}
if(x==xx[number]+1){
sum=max(ct,sum);
return ;
}
dfs(number,x,y+1,ct);
int flag=0;
for(int i=0;i<8;i++){
int dx=x+xxx[i];
int dy=y+yyy[i];
if(vist[dx][dy]==1&&dx>=1&&dx<=xx[number]&&dy>=1&&dy<=yy[number]){
flag=1;
break;
}
}
if(flag==0){
for(int i=0;i<8;i++){
int dx=x+xxx[i];
int dy=y+yyy[i];
if(dx>=1&&dx<=xx[number]&&dy>=1&&dy<=yy[number]){
vist[dx][dy]=1;
}
}
ct=ct+data[x][y];
dfs(number,x,y+1,ct);
for(int i=0;i<8;i++){
int dx=x+xxx[i];
int dy=y+yyy[i];
if(dx>=1&&dx<=xx[number]&&dy>=1&&dy<=yy[number]){
vist[dx][dy]=0;
}
}
ct=ct-data[x][y];
}
}
int main(){
cin>>t;
for(int i=1;i<=t;i++){
cin>>xx[i]>>yy[i];
memset(data,0,sizeof(data));
memset(vist,0,sizeof(vist));
sum=0;
for(int j=1;j<=xx[i];j++){
for(int k=1;k<=yy[i];k++){
cin>>data[j][k];
}
}
dfs(i,1,1,0);
cout<<sum<<endl;
}
return 0;
}