#include<stdio.h>
int map[10][10],max;
bool mark[10][10];
int n,m;
bool check(int x,int y){
return mark[x-1][y]&&mark[x][y]&&
mark[x+1][y]&&mark[x-1][y-1]&&
mark[x][y-1]&&mark[x+1][y-1]&&
mark[x-1][y+1]&&mark[x][y+1]&&
mark[x+1][y+1];
}
void dfs(int x,int y,int sum){
if(x>=n+1)max=(max>sum?max:sum);
if(check(x,y)){
mark[x-1][y]=mark[x][y]=mark[x+1][y]=
mark[x-1][y-1]=mark[x][y-1]=mark[x+1][y-1]=
mark[x-1][y+1]=mark[x][y+1]=mark[x+1][y+1]=
false;
if(y==m)dfs(x+1,y,sum+map[x][y]);
else dfs(x,y+1,sum+map[x][y]);
mark[x-1][y]=mark[x][y]=mark[x+1][y]=
mark[x-1][y-1]=mark[x][y-1]=mark[x+1][y-1]=
mark[x-1][y+1]=mark[x][y+1]=mark[x+1][y+1]=
true;
}
if(y==m)dfs(x+1,y,sum);
else dfs(x,y+1,sum);
}
int main(){
int T;scanf("%d",&T);
for(int t=0;t<T;++t){
scanf("%d %d",&n,&m);
for(int i=0;i<10;++i)for(int j=0;j<10;++j)
map[i][j]=0,mark[i][j]=true;
max=0;
for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)
scanf("%d",&map[i][j]);
dfs(1,1,0);
printf("%d",max);
}
return 0;
}