#include <bits/stdc++.h>
using namespace std;
const int N=2e6+5;
int l[N],r[N],n,m,k,mk1[N],mk2[N],ck[N],a[N];
set <int> st;
void erase_r(int x)
{
	r[x]=0;
	st.insert(x);
}
void erase_l(int x)
{
	if(r[x]) st.insert(x);
	r[x]=l[x];
	l[x]=0;
}
void add(int x,int t)
{
	ck[t]=1;
	mk1[t]=x;
	if(l[x])
	{
		st.erase(x);
		r[x]=t;
		mk2[t]=1;
	}
	else l[x]=t,mk2[t]=0;
}
void slv()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d%d",&n,&m,&k);
		for(int i=1;i<=m;i++)
		{
			scanf("%d",&a[i]);
		}
		st.clear();
		for(int i=1;i<n;i++)
		{
			l[i]=r[i]=0;
			st.insert(i);
		}
		for(int i=1;i<=k;i++)
		{
			ck[i]=0;
		}
		int id=1,nw=0;
		while(id<=m)
		{
			if(ck[a[id]])
			{
				if(mk2[a[id]]==1)
				{
					printf("1 %d\n",mk1[a[id]]);
					erase_r(mk1[a[id]]);
				}
				else
				{
					printf("1 %d\n",n);
					printf("2 %d %d\n",mk1[a[id]],n);
					erase_l(mk1[a[id]]);
				}
				ck[a[id]]=0;
				id++;
			}
			else
			{
				int x=(*st.begin());
				add(x,a[id]);
				printf("1 %d\n",x);
				id++;
			}
		}
	}
}
int main()
{
	freopen("meow.in","r",stdin);
	freopen("meow.out","w",stdout);
	slv();
	fclose(stdin);
	fclose(stdout);
	return 0;
}
/*
#include <bits/stdc++.h>
using namespace std;
const int N=;
int mk[2000005][5];
void dfs(int id,int A,int B,int C,int cnt)
{
	if(id>n) return ;
	while(id<=n)
	{
		if(s[A][0]&&s[A][0]==a[id])
		{
			printf("1 %d\n",C);
			printf("2 %d %d\n",A,C);
			s[A][0]=s[A][1];
			s[A][1]=0;
			cnt--;
			id++;
		}
		else if(s[A][1]&&s[A][1]==a[id])
		{
			printf("1 %d\n",A);
			s[A][1]=0;
			cnt--;
			id++;
		}
		else if(s[B][0]&&s[B][0]==a[id])
		{
			printf("1 %d\n",B);
			s[B][0]=0;
			cnt--;
			id++;
		}
		else if(!s[A][0])
		{
			printf("1 %d\n",A);
			s[A][0]=a[id];
			cnt++;
			id++;
		}
		else if(!s[A][1])
		{
			printf("1 %d\n",A);
			s[A][1]=a[id];
			cnt++;
			id++;
		}
		else if(!s[B][0])
		{
			printf("1 %d\n",B);
			s[B][0]=a[id];
			cnt++;
			id++;
		}
		else
		{
			for(int j=1;j<=4;j++)
			{
				mk[id][j]=0;
			}
			ck[s[A][0]]=ck[s[A][1]]=ck[s[B][0]]=1;
			for(int j=1;j<=5;j++)
			{
				ls[j]=0;
			}
			int c=3,j;
			for(j=id+1;;j++)
			{
				if(ck[a[j]])
				{
					ck[a[j]]=0;
					c++;
				}
				else
				{
					ck[a[j]]=1;
					c--;
				}
				if(ls[a[j]]) ls[a[j]]=0;
				else ls[a[j]]=j;
				if(c==3) break;
			}
			for(int j=1;j<=5;j++)
			{
				mk[j]={ls[j],j};
			}
			sort(mk+1,mk+6);
			if(!mk[5].first) 
			if(mk[5].second)
			for(int i=id;i<=j;i++)
			{
				
			}
		}
	}
	if(id>n) return ;
}
void slv40()
{
	dfs(1,1,2,3);
}
void slv()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d%d",&n,&m,&k);
		for(int i=1;i<=m;i++)
		{
			scanf("%d",&a[i]);
		}
		if(n==3)
		{
			slv40();
			continue;
		}
	}
}
int main()
{
//	freopen("meow.in","r",stdin);
//	freopen("meow.out","w",stdout);
	slv();
	fclose(stdin);
	fclose(stdout);
	return 0;
}
a b
c

d e a
*/
