/*
. . . . .
. @ @ @ .
. @ x @ .
. @ @ @ .
. . . . .
*/
#include<bits/stdc++.h>
using namespace std;
int t;
int flag[1005][1005]={0};
int n,m;
int ans=0;
int ma=0;
int c[1005][1005];
int dx[8]={-1,-1,-1,0,1,1,1,0};
int dy[8]={-1,0,1,1,1,0,-1,-1};
int check(int a,int b)
{
if(a<1||a>n||b<1||b>m)
return 0;
return 1;
}
int is_true(int x,int y,int a,int b)
{
for(int i=0;i<8;i++)
{
int nx=x+dx[i];
int ny=y+dy[i];
if(nx==a&&ny==b)
return 0;
}
return 1;
}
void dfs(int a,int b)
{
if(a==n)
return;
for(int i=0;i<8;i++)
{
int nx=a+dx[i];
int ny=b+dy[i];
if(check(nx,ny)&&is_true(nx,ny,a,b))
{
flag[a][b]=1;
ans+=c[a][b];
dfs(nx,ny);
flag[a][b]=0;
}
}
}
int main()
{
cin>>t;
for(int i=1;i<=t;i++)
{
cin>>n>>m;
for(int j=1;j<=n;j++)
for(int k=1;k<=m;k++)
{
cin>>c[j][k];
}
for(int l=1;l<=n;l++)
for(int f=1;f<=m;f++)
{
memset(flag,0,sizeof(flag));
dfs(l,f);
if(ans>ma)
ma=ans,ans=0;
}
}
cout<<ma;
return 0;
}