#include<bits/stdc++.h>
using namespace std;
namespace __Plozia__
{
typedef long long ll;
typedef pair<int,int> pii;
constexpr int Max=305,Size=2e6+100;
int a[Max],b[Max],c[Max],d[Max],f[Max],g[Max],id[Max],n,m,k,p[Size];
int opt[Size*2],u[Size*2],v[Size*2];
void solve()
{
	cin>>n>>m>>k;
	for(int i=1;i<=m;++i)
		cin>>p[i];
	for(int i=1;i<=n;++i)
		id[i]=i;
	int o=1,x,cnt=0;
	while(o<=m)
	{
		x=p[o];
		bool flag=false;
		for(int i=1;i<n;++i)
			if(b[i]&&b[i]==x)
			{
				b[i]=0;
				++cnt;
				opt[cnt]=1,u[cnt]=id[i];
				flag=true;
				break;
			}
		if(flag)
		{
			++o;
			continue;
		}
		for(int i=1;i<n;++i)
			if(a[i]&&a[i]==x)
			{
				a[i]=b[i],b[i]=0;
				++cnt;
				opt[cnt]=1,u[cnt]=id[n];
				++cnt;
				opt[cnt]=2,u[cnt]=id[i],v[cnt]=id[n];
				flag=true;
				break;
			}
		if(flag)
		{
			++o;
			continue;
		}
		for(int i=1;i<n;++i)
			if(!a[i])
			{
				a[i]=x;
				++cnt;
				opt[cnt]=1,u[cnt]=id[i];
				flag=true;
				break;
			}
		if(flag)
		{
			++o;
			continue;
		}
		for(int i=1;i<n;++i)
			if(!b[i])
			{
				b[i]=x;
				++cnt;
				opt[cnt]=1,u[cnt]=id[i];
				flag=true;
				break;
			}
		if(flag)
		{
			++o;
			continue;
		}
		a[n]=x;
		int o1=o+1,pos=0;
		while(true)
		{
			bool f=false;
			for(int i=1;i<=n;++i)
				if(a[i]==p[o1])
				{
					f=true;
					pos=i;
					break;
				}
			if(f)
				break;
			++o1;
		}
		for(int i=1;i<=n;++i)
			f[i]=c[i]=a[i],g[i]=d[i]=b[i];
		for(int k=o+1;k<o1;++k)
			for(int i=1;i<=n;++i)
				if(g[i]==p[k])
				{
					d[i]=d[i]?0:g[i];
					break;
				}
		if(pos==n)
		{
			++cnt;
			opt[cnt]=1,u[cnt]=id[n];
		}
		else
		{
			if(d[pos])
			{
				++cnt;
				opt[cnt]=1,u[cnt]=id[pos];
				a[pos]=b[pos],b[pos]=x;
			}
			else
			{
				++cnt;
				opt[cnt]=1,u[cnt]=id[n];
			}
		}
		for(int k=o+1;k<o1;++k)
			for(int i=1;i<=n;++i)
				if(g[i]==p[k])
				{
					if(b[i]!=x)
						b[i]=b[i]?0:g[i];
					++cnt;
					opt[cnt]=1,u[cnt]=id[i];
					break;
				}
		if(pos==n)
		{
			++cnt;
			opt[cnt]=1,u[cnt]=id[n];
		}
		else
		{
			if(d[pos])
			{
				++cnt;
				opt[cnt]=1,u[cnt]=id[n];
				++cnt;
				opt[cnt]=2,u[cnt]=id[pos],v[cnt]=id[n];
			}
			else
			{
				++cnt;
				opt[cnt]=1,u[cnt]=id[pos];
				swap(id[pos],id[n]);
				swap(a[pos],a[n]);
			}
		}
		o=o1+1;
	}
	cout<<cnt<<"\n";
	for(int i=1;i<=cnt;++i)
	{
		cout<<opt[i]<<" "<<u[i];
		if(opt[i]==2)
			cout<<" "<<v[i];
		cout<<"\n";
	}
}
void clear()
{
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
}
signed plozia_main()
{
	int t;
	cin>>t;
	while(t--)
		solve(),clear();
	return 0;
}
}
signed main()
{
	freopen("meow.in","r",stdin),freopen("meow.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(nullptr),cout.tie(nullptr);
	__Plozia__::plozia_main();
	return 0;
}