#include<bits/stdc++.h>
using namespace std;

char infile[100], outfile[100];
// ÁÖ»çÀ§ 1: À­¸é 2345 : ¿·¸é 6 ¿øÇü ÆÈÂî

int A[1010][10];
int B[10][10][1100][1100];
int C[10], D[10];
int n, m;
int f(int e, int k, int t, int s){
	if(B[e][k][t][s]>=0) return B[e][k][t][s];
	if(t == n){
		if(A[t][k]==e){
			if(s >= m-1) return 1;
			else return 0;
		}else if(e == k){
			if(s >= m) return 1;
			else return 0;
		}else {
			return 0;
		}
	}
	return B[e][k][t][s] = (f(e, k, t+1,s) + f(e, A[t][k],t+1,s+1))%1000000007;
}

int main(){
	int i, j, t, a1,a2, a3, a4, a5, a6, k, aa,bb, T, I,ii,jj,kk,tt;
	scanf("%d",&T);
	srand(time(NULL));
	for(I=1;I<=T;I++){
        sprintf(infile, ".%d.in", I);
        freopen(infile, "w", stdout);
		scanf("%d %d",&n, &m);
		printf("%d %d\n",n, m);
		for(ii=0;ii<7;ii++) for(jj=0; jj<7;jj++) for(kk=0;kk<1010;kk++) for(tt=0;tt<1010;tt++) B[ii][jj][kk][tt]=-1;
        for(i=1;i<=n;i++){
			for(j=1;j<7;j++) C[j] = j;
			bb = 6;
			for(j=1;j<7;j++){
				aa = rand()%bb+1;
				D[j] = C[aa];
				C[aa] = C[bb];
				bb--;
			}
			printf("%d %d %d %d %d %d\n", D[1], D[2], D[3], D[4], D[5], D[6]);
			A[i][D[1]]=D[6]; A[i][D[2]]=D[4]; A[i][D[3]]=D[5]; A[i][D[4]]=D[2]; A[i][D[5]]=D[3]; A[i][D[6]]=D[1];
		}
		int ans = 0;
		for(i=1;i<7;i++){
			int s = f(i,i,1,0);
			ans = (ans + s)%1000000007;
		}
		sprintf(outfile, ".%d.out", I);
        freopen(outfile, "w", stdout);
		printf("%d\n",ans);
	}
}
