#include<bits/stdc++.h>
using namespace std;

struct node{
	int id;
	int s1,s2;
};

struct ed{
	bool v;
	int site;
	int num;
}visc[601];

struct e{
	int top;
	int back;
}viss[301];

int n,m,k;
int a[2000200];

queue<node>ans;
queue<int>st0;
queue<int>st1;


inline int r(){
    int x=0,k='1';
    char ch=getchar();
    while(ch<'0'||ch>'9'){
	    if(ch=='-')
			k=-1;
	    ch=getchar();
	}
	while(ch>='0'||ch<='9'){
	   x=(x<<1)+(x<<3)+(ch^48);
	   ch=getchar();
	}
	return x*k;
}

void init(){
	for(int i=1;i<=k;i++){
		visc[i].num=0;
		visc[i].site=0;
		visc[i].v=0;
	}
	for(int i=1;i<=n;i++){
		viss[i].top=0;
		viss[i].back=0;
		st0.push(i);
	}
}

void solve(){
	for(int i=1;i<=m;i++){
		if(visc[a[i]].v==0){
			if(!st1.empty()){
				int x=st1.front();
				viss[x].back=a[i];
				visc[a[i]].v=1;
				visc[a[i]].site=2;
				visc[a[i]].num=x;
				st1.pop();
				node y;
				y.id=1;
				y.s1=x;
				ans.push(y);
			}
			else{
				int x=st0.front();
				viss[x].top=a[i];
				visc[a[i]].v=1;
				visc[a[i]].site=1;
				visc[a[i]].num=x;
				st0.pop();
				st1.push(x);
				node y;
				y.id=1;
				y.s1=x;
				ans.push(y);
			}
		}
		else if(visc[a[i]].v==1){
			if(visc[a[i]].site==2){
				node y;
				y.id=1;
//				cout<<visc[a[i]].site<<"  *  \n";
				y.s1=visc[a[i]].num;
				ans.push(y);
				viss[visc[a[i]].num].back=0;
				visc[a[i]].v=0;
				st1.push(y.s1);
			}
			else{
				node y;
				y.id=1;
				y.s1=st0.front();
				ans.push(y);
				y.id=2;
				y.s1=visc[a[i]].num;
				y.s2=st0.front();
				ans.push(y);
				visc[a[i]].v=0;
				viss[visc[a[i]].num].top=viss[visc[a[i]].num].back;
				viss[visc[a[i]].num].back=0;
				visc[viss[visc[a[i]].num].top].site=1;
				int x=visc[a[i]].num;
				if(viss[x].top=0)
					st0.push(x);
				else
					st1.push(x);
			}
		}
	}
	printf("%d\n",ans.size());
	while(!ans.empty()){
		node x=ans.front();
		ans.pop();
		if(x.id==1)
			printf("%d %d\n",x.id,x.s1);
		else
			printf("%d %d %d\n",x.id,x.s1,x.s2);
	}
}



int main(){
	freopen("meow.in","r",stdin);
	freopen("meow.out","w",stdout);
	int T;
	cin>>T;
	while(T--){
		cin>>n>>m>>k;
		for(int i=1;i<=m;i++)
			cin>>a[i];
		init();
		solve();
	}
	return 0;
}
















