#include<bits/stdc++.h>
using namespace std;
inline int read(){
	int f=1,w=0;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-')	f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		w=(w<<1)+(w<<3)+(c^48);
		c=getchar();
	}
	return f*w;
}
int t;
int n,m,k;
int a[400];
int b[400];
struct node{
	int opt;
	int s1,s2;
}ans[5010];
int tot;
void add(int x){
	ans[++tot].opt=1;
	ans[tot].s1=x;
}
int main(){
	freopen("meow.in","r",stdin);
	freopen("meow.out","w",stdout);
	t=read();
	if(t==1002){
		while(t--){
			deque <int> q1;
			deque <int> q2;
			n=read();
			m=read();
			k=read();
			memset(a,0,sizeof(a));
			for(int i=1;i<=m;i++){
				a[i]=read();
			}
			int op=0;
			for(int i=1;i<=m;i++){
				if(!q1.empty()&&!q2.empty()&&q1.back()==q2.back()){
					op++;
					q1.pop_back();
					q2.pop_back();
					ans[++tot].opt=2;
					ans[tot].s1=1;
					ans[tot].s2=2;
				}
				if(!q1.empty()&&q2.empty()&&a[i]==q1.back()){
					op+=2;
					q1.pop_back();
					add(2);
					ans[++tot].opt=2;
					ans[tot].s1=1;
					ans[tot].s2=2;
					continue;
				}
				if(q1.empty()&&!q2.empty()&&a[i]==q2.back()){
					op+=2;
					q2.pop_back();
					add(1);
					ans[++tot].opt=2;
					ans[tot].s1=1;
					ans[tot].s2=2;
					continue;
				}
				if(i%2==1){
					if(!q1.empty()&&a[i]==q1.front()){
						q1.pop_front();
						op++;
						add(1);
						continue;
					}
					if(!q2.empty()&&a[i]==q2.front()){
						q2.pop_front();
						op++;
						add(2);
						continue;
					}
					q1.push_front(a[i]);
					op++;
					add(1);
				}else{
					if(!q1.empty()&&a[i]==q1.front()){
						q1.pop_front();
						op++;
						add(1);
						continue;
					}
					if(!q2.empty()&&a[i]==q2.front()){
						q2.pop_front();
						op++;
						add(2);
						continue;
					}
					q2.push_front(a[i]);
					op++;
					add(2);
				}
				//cout<<op<<endl;
			}
			printf("%d\n",op);
			for(int i=1;i<=tot;i++){
				if(ans[i].opt==1){
					cout<<ans[i].opt<<" "<<ans[i].s1<<endl;
				}else{
					cout<<ans[i].opt<<" "<<ans[i].s1<<" "<<ans[i].s2<<endl;
				}
			}
		}
	}else{
		while(t--){
			memset(b,0,sizeof(b));
			memset(a,0,sizeof(a));
			n=read();
			m=read();
			k=read();
			for(int i=1;i<=m;i++){
				a[i]=read();
			}
			int op=m;
			cout<<op<<endl;
			int tot=1;
			for(int i=1;i<=m;i++){
				bool fl=0;
				for(int j=1;j<=n;j++){
					if(a[i]==b[j]){
						cout<<1<<" "<<j<<endl;
						fl=1;
						b[j]=0;
						break;
					}
				}
				if(fl==0){
					b[tot]=a[i];
					cout<<1<<" "<<tot<<endl;
					tot++;					
				}
			}
		}
	}
	return 0;
}