#include<bits/stdc++.h>
using namespace std;
const int M=2e6+5;
//10:14 le cai kai shi di er ti,da bei
//guan zhu fulgur ovid xie xie miao
//??zhe ge shu ju fan wei??
//qian liang ti shu ju fan wen dou hao xiao,qi guai
//o na shi zhan shu,ji
//wo qu
//zuo bu chu lai le
//er du fa dian,wo shi han mo la bi
//wo da yu hao zen me mei pan duan a shen me wan yi
int t,n,m,k,a[M];
deque<int> q[305];
bool in[M];
int line[605],tot=0,cnt=0;
struct out{
	int op,f,s;
}opt[M<<1];
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>>a[i];
			if(!in[a[i]]){
				q[1].push_back(a[i]);
				opt[++cnt].op=1;
				opt[cnt].f=1;
				opt[cnt].s=0;
				tot++;
				line[a[i]]=tot;
				in[a[i]]=1;
//				cout<<a[i]<<" "<<line[a[i]]<<endl;
			}
			else{
				if(q[1].back()==a[i]){
//					cout<<"xiao zhan ding:"<<a[i]<<endl;;
					opt[++cnt].op=1;
					opt[cnt].f=1;
					opt[cnt].s=0;
					q[1].pop_back();
					in[a[i]]=0;
				}
				else if(q[1].front()==a[i]){
//					cout<<"xiao zhan di:"<<a[i]<<endl;
					opt[++cnt].op=1;
					opt[cnt].f=n;
					opt[cnt].s=0;
					opt[++cnt].op=2;
					opt[cnt].f=1;
					opt[cnt].s=n;
					q[1].pop_front();
					in[a[i]]=0;
				}
				else{
					for(int j=2;j<=n;j++){
						if(q[j].empty()){
//							cout<<"ru kong lie:"<<a[i]<<endl;
							opt[++cnt].op=1;
							opt[cnt].f=j;
							opt[cnt].s=0;
							q[j].push_back(a[i]);
							break;
						}
						else{
							int last=q[j].back();
//							cout<<"zhe yi ge zhan de shang yi ge yuan su:"<<last<<endl;
							if(line[a[i]]>=line[last]){
//								cout<<"ru tong yi lie:"<<a[i]<<endl;
								opt[++cnt].op=1;
								opt[cnt].f=j;
								opt[cnt].s=0;
								q[j].push_back(a[i]);
								break;
							}
						}
					}
				}
			}
		}
//		while(!q[1].empty()){
//			cout<<q[1].front()<<" ";
//			q[1].pop_front();
//		}
//		while(!q[2].empty()){
//			cout<<q[2].front()<<" ";
//			q[2].pop_front();
//		}
		while(!q[1].empty()){
			for(int i=2;i<=n;i++){
				if(q[i].front()==q[1].front()){
					opt[++cnt].op=2;
					opt[cnt].f=1;
					opt[cnt].s=i;
					q[1].pop_front();
					q[i].pop_front();
					in[a[i]]=0;
				}
			}
		}
		printf("%d\n",cnt);
		for(int i=1;i<=cnt;i++){
			if(opt[i].op==1) printf("%d %d\n",opt[i].op,opt[i].f);
			else if(opt[i].op==2) printf("%d %d %d\n",opt[i].op,opt[i].f,opt[i].s);
		}
//		for(int i=1;i<=n;i++){
//			cout<<q[i].empty()<<endl;
//		}
	}
	return 0;
}
//wo wan dan le