#include<bits/stdc++.h>
using namespace std;
const int MAXM=301;
int n,m,k,op,t,temp;
int p1,p2,b1,b2;
int p[MAXM];
int a[5][MAXM];
int ans[MAXM*2][5];
int ans1[MAXM*2][5];
bool flag=false;
void dfs(int cnt,int step){
	flag=false;
	if(cnt==m&&p1==b1&&p2==b2){
		if(op>step){
			op=step;
			for(int i=1;i<=temp;i++){
				for(int j=1;j<=3;j++){
					ans1[i][j]=ans[i][j];
				}
			}
		}
	}
	else return;
	if(step>=op) return;
	if(a[0][b1]==a[1][b2]){
		step++;
		b1++;b2++;
		ans[0][temp]=2;
		ans[1][temp]=1;
		ans[2][temp++]=2;
		flag=true;
	}
	else if(a[0][p1]==p[cnt+1]){
		ans[0][temp]=1;ans[1][temp++]=1;
		p1--;
		flag=true;
	}
	else if(a[1][p2]==p[cnt+1]){
		ans[0][temp]=1;ans[1][temp++]=2;
		p2--;
		flag=true;
	}
	for(int i=1;i<=2;i++){
		if(!flag){
			a[i-1][(i==1?p1:p2)++]=p[cnt];
			ans[i-1][temp]=1;ans[i-1][temp++]=i;
		}
		dfs(cnt+1,step+1);
		temp--;
		(i==1?p1:p2)--;
	}
}
int main(){
	freopen("meow.in","r",stdin);
	freopen("meow.out","w",stdout);
	scanf("%d",&t);
	while(t--){
		scanf("%d%d%d",&n,&m,&k);
		for(int i=1;i<=m;i++) cin>>p[i];
		dfs(0,0);
		printf("%d\n",op);
		for(int i=1;i<=op;i++){
			if(a[0][i]==1)
				printf("%d %d\n",a[0][i],a[1][i]);
			else
				printf("%d %d %d\n",a[0][i],a[1][i],a[2][i]);
		}
	}
	return 0;
}