#include <bits/stdc++.h>
using namespace std;

int A[1000100][4];
vector <pair <int, int> > V, W;
int B[1000100];
int C[1000100];
char infile[100], outfile[100];
int D[1000100];
int E[5000100];
void g(int n){
	while(n<100001){
		B[n]++;
		n = n + (n&(-n));
	}
}
int f(int n){
	int s=0;
	while(n){
		s = s+ B[n];
		n = n - (n&(-n));
	}
	return s;
}
int main(){
	int n, m, a, k=0, i, s, e, j,a1,a2, T, aa, bb, mm, n1, m1, I,nn;
	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);
		a1 = a2 =0;
		for(i=0;i<=n;i++) B[i] = 0;
		V.clear();
		W.clear();
		for(i=1;i<=n;i++) D[i] = i;
		nn = n;
		for(i=1;i<=n;i++) E[i] = E[i-1]+ 1;
		mm = n;
		for(i=0;i<n+m;i++){
			aa = rand()%2+1;
			if(aa==1 or a1==0){
				a1++;
				aa = 1;
				if(a1>n) aa = 2, a1 = n;
			}else{
				a2++;
				if(a2>m) aa = 1;
			}
			// Ã¹¹øÂ° µî·Ï1, °æÇ° 2
			// 1ÀÏ ¶§ µÎ¹øÂ°´Â ¹øÈ£¿Í ¼ö·®
			// 2ÀÏ ¶§ nµîÀÎ »ç¶÷ °æÇ° ,°æÇ° ¹Þ´Â »ç¶÷ Ãâ·Â  
			a = aa;
			printf("%d ", a);
			
			A[i][0]=a;
			
			if(a==1){
				n1 = rand()%nn+1;
				A[i][1] = D[n1];
				D[n1]=D[nn];
				nn--;
				m1 = rand()%mm+1; 
				A[i][2] = E[m1];
				E[m1] = E[mm];
				mm--;
				printf("%d %d\n", A[i][1], A[i][2]);
				V.push_back({A[i][2],i});
			}else{
				bb = (rand()%a1)+1;
				A[i][1]=bb;
				printf("%d\n", A[i][1]);
			}
		}
		sort(V.begin(), V.end());
		for(i=0;i<n;i++){
			W.push_back({V[i].second,i});
		}
		sort(W.begin(), W.end());
		for(i=0;i<n;i++){
			A[W[i].first][2]=n-W[i].second;
			C[n-W[i].second] = A[W[i].first][1];
		}
		// Ãâ·Â È®ÀÎ 
		/*
		for(i=0;i<n+m;i++){
			printf("%d ",A[i][0]);
			if(A[i][0]==1) printf("%d %d\n",A[i][1],A[i][2]);
			else printf("%d\n",A[i][1]);
		}
		*/
		sprintf(outfile, ".%d.out", I);
        freopen(outfile, "w", stdout);
		for(i=0;i<n+m;i++){
			if(A[i][0]==1){
				g(A[i][2]);
			}else{
				s = 1; 
				e = n;
				while(e - s >3){
					k = (s+e)/2;
					if(f(k)>= A[i][1]) e = k;
					else s = k;
				}
				//printf("%d %d %d: ",s, e, A[i][1]);
				for(j=s; j<=e;j++){				
					if(f(j) == A[i][1]){
						printf("%d\n", C[j]);
						j = e+2;
					}
				}
			}
		}
	}
}
/*
5 3
1 1 999
1 5 10000
2 2
1 4 1000
2 3
1 3 10
1 2 1
2 4
*/
