#include<bits/stdc++.h>

using namespace std;
const int N=310,M=2e4+10;
struct node{
	int l,n;
}g[N][N*2];
struct data{
	int op,a,b;
};
int T,n,m,k,tans;
int a[M],top[N],under[N],num[N];
queue<int> e;
vector<data> ans;

void check(){
	for(int i=1;i<=n;i++){
		if(!num[i]) continue;
		for(int j=1;j<=n;j++)
			if(i==j||!num[j]) continue;
			else{
				if(under[i]==under[j]){
					int a=under[i],b=under[j];
					data res={2,i,j};
					ans.push_back(res);tans++;
					num[i]--,num[j]--;
					under[i]=g[i][under[i]].n;
					under[j]=g[j][under[j]].n;
					if(!num[i]) e.push(i);
					if(!num[j]) e.push(j);
				}
			}
	}
}

int main(){
	freopen("meow.in","r",stdin);
	freopen("meow.out","w",stdout);
	scanf("%d",&T);
	while(T--){
		tans=0;
		scanf("%d%d%d",&n,&m,&k);
		for(int i=1;i<=m;i++) scanf("%d",&a[i]);
		data res={1,1,0};tans++;
		ans.push_back(res);
		top[1]=under[1]=1;num[1]++;
		for(int i=2;i<=n;i++) e.push(i);
		for(int i=2;i<=m;i++){
			check();
			bool has_ans=false;
			for(int j=1;j<=n;j++){
				if(!num[j]) continue;
				if(top[j]==a[i]){
					data res={1,j,0};
					ans.push_back(res);tans++;
					num[j]--;
					top[j]=g[j][top[j]].l;
					if(!num[j]) e.push(j);
					has_ans=true;
					break;
				}
			}
			if(has_ans) continue;
			for(int j=1;j<=n;j++){
				if(!num[j]) continue;
				if(under[j]==a[i]&&e.size()){
					int t=e.front();
					data res={1,t,0};
					ans.push_back(res);
					res={2,j,t};
					ans.push_back(res);tans+=2;
					num[j]--;
					under[j]=g[j][under[j]].n;
					if(!num[j]) e.push(j);
					has_ans=true;
					break;
				}
			}
			if(has_ans){
				check();
				continue;
			}
			for(int j=1;j<=n;j++)
				if(num[j]&&top[j]<a[i]){
					g[j][a[i]].l=top[j];
					g[j][top[j]].n=a[i];
					top[j]=a[i];
					num[j]++;
					data res={1,j,0};
					ans.push_back(res);
					tans++;
					has_ans=true;
					break;
				}
			if(!has_ans){
				int t=e.front();e.pop();
				data res={1,t,0};
				ans.push_back(res);
				tans++;
				top[t]=under[t]=a[i];
				num[t]++;
			}
		}
		for(int i=1;i<=n;i++) if(num[i]!=0) check();
		printf("%d\n",tans);
		for(int i=0;i<ans.size();i++){
			if(!ans[i].b) printf("%d %d\n",ans[i].op,ans[i].a);
			else printf("%d %d %d\n",ans[i].op,ans[i].a,ans[i].b);
		}
	}
	return 0;
}