#include<bits/stdc++.h>
using namespace std;
int ansop[4000010],ansx[4000010],ansy[4000010];
int f[1010],n,m,k,tot,a[4000010],flag;
deque<int>ss[5];
bool check(){
	for(int i=1;i<=3;i++){
		if(!ss[i].empty())return false;
	}
	return true;
}
void dfs(int x){
	if(flag)return;
	if(x>m){
		if(check()){
			flag=true;
		}
		return;
	}
	for(int i=1;i<=3;i++){
		deque<int>sss[5];
		sss[1]=ss[1];
		sss[2]=ss[2];
		sss[3]=ss[3];
		int dd=0;
		if(!ss[i].empty()&&ss[i].back()==a[x]){
			ansop[++tot]=1;
			ansx[tot]=i;
			ss[i].pop_back();
		}
		else{
			ansop[++tot]=1;
			ansx[tot]=i;
			ss[i].push_back(a[x]);
		}
		if(ss[i].size()==1){
			for(int j=1;j<=3;j++){
				if(i==j)continue;
				if(ss[j].size()&&ss[j].front()==a[x]){
					dd=1;
					ansop[++tot]=2;
					ansx[tot]=j;
					ansy[tot]=i;
					ss[i].pop_front();
					ss[j].pop_front();
				}
			}
		}
		dfs(x+1);
		if(flag)return;
		tot--;
		if(dd)tot--;
		ss[1]=sss[1];
		ss[2]=sss[2];
		ss[3]=sss[3];
	}
	return;
}
int main(){
	freopen("meow.in","r",stdin);
	freopen("meow.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	int T;
	cin>>T;
	int opp=T%10;
	while(T--){
		flag=false;
		tot=0;
		cin>>n>>m>>k;
		for(int i=1;i<=m;i++){
			cin>>a[i];
		}
		if(opp==1){
			for(int i=1;i<=m;i++){
				int x=(a[i]-1)/2+1,y=a[i]%2+1;
				if(y==2){
					if(f[x]==1||f[x]==0){
						ansop[++tot]=1;
						ansx[tot]=x;
						if(f[x]==1)f[x]=3;
						else f[x]=2;
					}
					else if(f[x]==2||f[x]==3){
						ansop[++tot]=1;
						ansx[tot]=x;
						if(f[x]==2)f[x]=0;
						else f[x]=1;
					}
					else{
						ansop[++tot]=1;
						ansx[tot]=n;
						ansop[++tot]=2;
						ansx[tot]=n;
						ansy[tot]=x;
						f[x]=1;
					}					
				}
				else{
					if(f[x]==2||f[x]==0){
						ansop[++tot]=1;
						ansx[tot]=x;
						if(f[x]==2)f[x]=4;
						else f[x]=1;
					}
					else if(f[x]==1||f[x]==4){
						ansop[++tot]=1;
						ansx[tot]=x;
						if(f[x]==1)f[x]=0;
						else f[x]=2;
					}
					else{
						ansop[++tot]=1;
						ansx[tot]=n;
						ansop[++tot]=2;
						ansx[tot]=n;
						ansy[tot]=x;
						f[x]=2;
					}
				}
			}
		}
		else dfs(1);
		cout<<tot<<"\n";
		for(int i=1;i<=tot;i++){
			cout<<ansop[i]<<" ";
			if(ansop[i]==1)cout<<ansx[i]<<"\n";
			else cout<<ansx[i]<<" "<<ansy[i]<<"\n";
		}
	}
	return 0;
}
