#include<bits/stdc++.h>
using namespace std;
int zhan[305][200005],tot[305],fro[305];
int us[2000010],usef[2000010],uses[2000010],cnt;
int a[2000010];
int n,m,k;
int read(){
	int f=1,l=0;
	char c=getchar();
	while(c<'0'||c>'9')
	{
		if(c=='-') f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		l=l*10+(c-'0');
		c=getchar();
	}
	return f*l;
}
bool dfs(int x)
{
	if(x>m){
		for(int i=1;i<=n;i++)
			if(fro[i]<=tot[i]) return 0;
		return 1;
	}
	for(int i=1;i<=n;i++)
		if(zhan[i][tot[i]]==a[x])
		{
			us[++cnt]=1;
			usef[cnt]=i;
			zhan[i][tot[i]]=0;
			tot[i]--;
			if(dfs(x+1)) return 1;
			cnt--;
		}
	for(int i=1;i<=n;i++)
		if(fro[i]>tot[i])
		{
			us[++cnt]=1;
			usef[cnt]=i;
			zhan[i][++tot[i]]=a[x];
			int l=0;
			for(int j=1;j<=n;j++)
				if(j!=i)
				if(zhan[j][fro[j]]==a[x])
				{
					us[++cnt]=2;
					usef[cnt]=i;
					uses[cnt]=j;
					if(i>j)
					{
						usef[cnt]=j;
						uses[cnt]=i;
					}
					fro[j]++;
					fro[i]++;
					l=j;
					break;
				}
			if(dfs(x+1)) return 1;
			if(us[cnt]==2)
			{
				fro[l]--;
				fro[i]--;
			}
			cnt--;
			zhan[i][tot[i]]=0;
			tot[i]--;
			break;
		}
	for(int i=1;i<=n;i++)
		if(fro[i]<=tot[i])
		{
			us[++cnt]=1;
			usef[cnt]=i;
			zhan[i][++tot[i]]=a[x];
			if(dfs(x+1)) return 1;
			cnt--;
			tot[i]--;
		}
	return 0;
}
int main()
{
	freopen("meow.in","r",stdin);
	freopen("meow.out","w",stdout);
	int t=read();
	while(t--)
	{
		n=read();
		m=read();
		k=read();
		for(int i=1;i<=m;i++)
			a[i]=read();
		for(int i=1;i<=n;i++)
		{
			tot[i]=0;
			fro[i]=1;
		}
		dfs(1);
		cout<<cnt<<'\n';
		for(int i=1;i<=cnt;i++)
		{
			if(us[i]==1)
			{
				cout<<"1 "<<usef[i]<<'\n';
			}
			else
			{
				cout<<"2 "<<usef[i]<<' '<<uses[i]<<'\n';
			}
		}
	}
	return 0;
}