#include<bits/stdc++.h>
#define ll long long

using namespace std;

const int N=310;
const int M=1e5+10;
int n,m,k;
int debug=0;
struct opt
{
	int op;
	int s1,s2;
} st[M<<2];
opt nst(int _,int __,int ___)
{
	opt xx;
	xx.op=_;
	xx.s1=__;
	xx.s2=___;
	return xx;
}
int top=0;
struct dq
{
	int a[M];
	int l=0,r=0;
	inline int front()
	{
		return a[l];
	}
	inline int back()
	{
		return a[r];
	}
	inline bool empty()
	{
		return l==r;
	}
	inline void push_back(int in)
	{
		a[++r]=in;
	}
	inline void push_front(int in)
	{
		a[--l]=in;
	}
	inline void pop_back()
	{
		r--;
	}
	inline void pop_front()
	{
		l++;
	}
} q[N];
int a[M];
int de[N];
void re()
{
	for(int i=1;i<=n;i++)
	{
		q[i].l-=de[i];
	}
}
void dfs(int d)
{
	if(d==m+1)
	{

		if(debug)	printf("find %d\n",top);
		if(debug)
			for(int i=1; i<=top; i++)
			{
				printf("%d %d",st[i].op,st[i].s1 );
				if(st[i].op==2)
					printf("%d",st[i].s2);
				puts("");
			}
		memset(de,0,sizeof(de));
		for(int i=1; i<=n; i++)
		{
			if(q[i].empty()) continue;
			for(int j=1; j<=n; j++)
			{
				if(q[j].empty()) continue;
				if(i==j) continue;
				while(!q[j].empty()&&!q[i].empty()&&q[i].front()==q[j].front())
				{
					if(debug) puts("2");
					q[i].pop_front();
					q[j].pop_front();
					de[i]++;
					de[j]++;
					st[++top]=nst(2,i,j);
				}
			}
		}
		for(int i=1; i<=n; i++)
		{
			if(!q[i].empty()) 
			{
				re();
				return ;
			}
		}
		if(top>=m&&top<=2*m)
		{

			for(int i=1; i<=top; i++)
			{
				printf("%d %d ",st[i].op,st[i].s1 );
				if(st[i].op==2)
					printf("%d",st[i].s2);
				puts("");
			}
			exit(0);
		}
		else
		{
			re();
			return;
		}
	}
	for(int i=1; i<=n; i++)
	{
		if(!q[i].empty()&&q[i].back()==a[d])
		{
			st[++top]=nst(1,i,0);
			q[i].pop_back();
			dfs(d+1);
			top--;
			q[i].push_back(a[d]);
		}
	}
	for(int i=1; i<=n; i++)
	{
		if(q[i].empty()||q[i].back()!=a[d])
		{
			st[++top]=nst(1,i,0);
			q[i].push_back(a[d]);
			dfs(d+1);
			top--;
			q[i].pop_back();
		}
	}

}

int mian()
{
	top=0;

	scanf("%d%d%d",&n,&m,&k);
	for(int i=1; i<=m; i++)
	{
		scanf("%d",&a[i]);
	}
	dfs(1);
	return 0;
}

int main()
{
	freopen("meow.in","r",stdin);
	freopen("meow.out","w",stdout);
	srand(114);
	int t;
	scanf("%d",&t);
	while(t--)
	{
		mian();
	}



	return 0;
}
