#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline int read(){
	int p=0,o=1;char c=getchar();
	while(c>'9'||c<'0'){if(c=='-')o=-1;c=getchar();}
	while(c<='9'&&c>='0'){p=p*10+c-'0';c=getchar();}
	return p*o;
}
struct data{int q,w,e;}ans[4000005];
int mtf,a,s,d,f[2000005],tt,yg[2000005][2];
int kkl[305],dl[605],scp[305][2];

int main(){
	freopen("meow.in","r",stdin);
	freopen("meow.out","w",stdout);
	mtf=read();
	while(mtf--){
		a=read(),s=read(),d=read();tt=0;
		for(int i=1;i<=s;i++)f[i]=read();
//		if(d==2*a-2){
			int mn=0;memset(kkl,0,sizeof(kkl));
			memset(dl,0,sizeof(dl));memset(scp,0,sizeof(scp));
			for(int i=1;i<a;i++)dl[i*2-1]=dl[i*2]=i;
			int lk=0;
			for(int i=1;i<=s;i++){
				if(!kkl[f[i]]){
					kkl[f[i]]=dl[++lk];
					if(scp[kkl[f[i]]][0]>0)scp[kkl[f[i]]][1]=f[i];
					else scp[kkl[f[i]]][0]=f[i];
					ans[++tt].q=1;ans[tt].w=kkl[f[i]];
				}
				else{
					dl[--lk]=kkl[f[i]];
					if(scp[kkl[f[i]]][0]==f[i]){
						ans[++tt].q=1;ans[tt].w=a;
						ans[++tt].q=2;ans[tt].w=a;ans[tt].e=kkl[f[i]];
						scp[kkl[f[i]]][0]=scp[kkl[f[i]]][1];
						scp[kkl[f[i]]][1]=0;kkl[f[i]]=0;
					}
					else{
						ans[++tt].q=1;ans[tt].w=kkl[f[i]];
						scp[kkl[f[i]]][1]=0;kkl[f[i]]=0;
					}
				}
			}
//		}
//		else{
//			memset(kkl,0,sizeof(kkl));memset(yg,0,sizeof(yg));
//			for(int i=1;i<=s;i++){
//				if(kkl[f[i]])yg[kkl[f[i]]][1]=i,yg[i][0]=kkl[f[i]];
//				kkl[f[i]]=i;
//			}
//			int rr=0;
//			//for(int i=1;i<=s;i++){
//			//	if()
//			//	int z=qiuqiu(f[i]);
//			//	if(z>rr)rr=z;
//				
//			//}
//		}
		printf("%d\n",tt);for(int i=1;i<=tt;i++)
		if(ans[i].q==1)printf("1 %d\n",ans[i].w);
		else printf("2 %d %d\n",ans[i].w,ans[i].e);
	}
	return 0;
}
/*
1
2 4 2
1 2 1 2
*/
/*
1
3 10 5
1 2 3 4 5 2 3 4 5 1
*/