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

int T,n,m,k,cnt,a[20005],di[305],gao[305],card[305][20005];

void check1()
{
	for(int i=1;i<=n;i++)
	{
		for(int j=i+1;j<=n;j++)
		{
			if(card[i][di[i]]==card[j][di[j]] and card[i][di[i]]!=0)
			{
				cnt++;
				card[i][di[i]]=card[j][di[j]]=0;
				di[i]++;
				di[j]++;
			}
		}
	}
	
	return;
}

void solve1(int yang)
{
	for(int i=1;i<=n;i++)
	{
		if(card[i][gao[i]]==yang)
		{
			cnt++;
			card[i][gao[i]]=0;
			gao[i]--;
			return;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(gao[i]-di[i]==0)
		{
			cnt++;
			if(gao[i]==0) di[i]=1;
			gao[i]++;
			card[i][gao[i]]=yang;
			check1();
			return;
		}
	}
	cnt++;
	gao[1]++;
	card[1][gao[1]]=yang;

	return;
}

void check2()
{
	for(int i=1;i<=n;i++)
	{
		for(int j=i+1;j<=n;j++)
		{
			if(card[i][di[i]]==card[j][di[j]] and card[i][di[i]]!=0)
			{
				printf("2 %d %d\n",i,j);
				card[i][di[i]]=card[j][di[j]]=0;
				di[i]++;
				di[j]++;
			}
		}
	}
	
	return;
}

void solve2(int yang)
{
	for(int i=1;i<=n;i++)
	{
		if(card[i][gao[i]]==yang)
		{
			printf("1 %d\n",i);
			card[i][gao[i]]=0;
			gao[i]--;
			return;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(gao[i]-di[i]==0)
		{
			printf("1 %d\n",i);
			if(gao[i]==0) di[i]=1;
			gao[i]++;
			card[i][gao[i]]=yang;
			check2();
			return;
		}
	}
	printf("1 1\n");
	gao[1]++;
	card[1][gao[1]]=yang;

	return;
}

int main()
{
	
	freopen("meow.in","r",stdin);
	freopen("meow.out","w",stdout);
	
	scanf("%d",&T);
	
	while(T--)
	{
		cnt=0;
		scanf("%d%d%d",&n,&m,&k);
		for(int i=1;i<=m;i++) scanf("%d",&a[i]);
		for(int i=1;i<=m;i++) solve1(a[i]);
		printf("%d\n",cnt);
		for(int i=1;i<=n;i++) gao[i]=di[i]=0;
		for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) card[i][j]=0;
		for(int i=1;i<=m;i++) solve2(a[i]);
		for(int i=1;i<=n;i++) gao[i]=di[i]=0;
		for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) card[i][j]=0;
	}
	
	
	return 0;
	
}
