#include <cstdio> #include <cstring> #include <iostream> #include <vector> #include <algorithm> #include <cctype> #include <set> using namespace std; #define rep(i,b,c) for(int (i)=(b); (i)<=(c) ; (++i) ) const int maxn = 22; long long maze[maxn][maxn][maxn],mat[maxn][maxn],A,B,C,Help[maxn]; int main() { memset(maze,0,sizeof(maze)); memset(mat,0,sizeof(mat)); int T; scanf("%d",&T); while(T--){ scanf("%lld %lld %lld",&A,&B,&C); for(int i=1;i<=A;i++){ for(int j=1;j<=B;j++) for(int k=1;k<=C;k++) { scanf("%lld",&maze[i][j][k]); maze[i][j][k]+=maze[i-1][j][k]; } } long long res; bool flag=false; rep(f1,1,A) rep(f2,f1,A){ rep(i,1,B) rep(j,1,C){ mat[i][j] = maze[f2][i][j] - maze[f1-1][i][j]; } rep(i,1,B) rep(j,1,C){ mat[i][j] += mat[i-1][j]; } rep(s1,1,B) rep(s2,s1,B){ long long M = 0; Help[0] =0 ; for(int i=1;i<=C;i++){ Help[i] = mat[s2][i]-mat[s1-1][i]+Help[i-1]; if(!flag) {flag=true; res = Help[i] - M;} else res = max(res,Help[i]-M); M = min(M,Help[i]); } } } printf("%lld\n",res); if(T) printf("\n"); } return 0; }