import java.util.*;
import java.io.*;
public class Main{
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
static int[][] map;
static int[][] judge;
static int M,N,result,answer;
static int[] X = new int[] {-1,1,0,0,-1,-1,1,1};
static int[] Y = new int[] {0,0,-1,1,-1,1,-1,1};
public static void main(String[] args) throws IOException {
int T = Integer.parseInt(br.readLine());
String[] S;
for(int i = 0 ; i < T ; i++) {
result = 0;
answer = 0;
S = br.readLine().split(" ");
N = Integer.parseInt(S[0]);
M = Integer.parseInt(S[1]);
map = new int[N][M];
judge = new int[N][M];
for(int j = 0 ; j < N ; j++) {
S = br.readLine().split(" ");
for(int k = 0 ; k < S.length ; k++) {
map[j][k] = Integer.parseInt(S[k]);
}
}
DFS(0,0);
out.write(result + "\n");
}
out.flush();
out.close();
br.close();
}
private static void DFS(int x , int y) {
if(y == M) {
DFS(x+1,0);
return ;
}
if(x == N) {
result = Math.max(result , answer);
return ;
}
DFS(x,y+1);
if(judge[x][y] == 0) {
answer += map[x][y];
for(int i = 0 ; i < 8 ; i++) {
int a = X[i];
int b = Y[i];
if(x + a >= 0 && x + a < N && y + b >= 0 && y + b < M) {
judge[x+a][y+b]++;
}
}
DFS(x,y+1);
for(int i = 0 ; i < 8 ; i++) {
int a = X[i];
int b = Y[i];
if(x + a >= 0 && x + a < N && y + b >= 0 && y + b < M) {
judge[x+a][y+b]--;
}
}
answer -= map[x][y];
}
}
}
简单的一道DFS