#include<bits/stdc++.h>
using namespace std;
const int N=610,M=2000010;

int n,m,k,x;
vector <int> a[N];
stack <int> v[N];
int b[N],c[M],vv[N];//,pa[M];
bool bo,bo1[N],bo2[N];

int main()
{
	int T;
	scanf("%d",&T);
	while (T--)
	{
		scanf("%d%d%d",&n,&m,&k);
		for (int i=1;i<=m;i++)
		{
			scanf("%d",&c[i]);
			a[c[i]].push_back(i);
		}
		for (int i=1;i<=k;i++)
		{
			b[i]=0;
		}
//		printf("%d\n",m);
		for (int i=1;i<=m;i++)
		{
//			cout<<i<<endl;
			b[c[i]]++;
			if (b[c[i]]%2==1)
			{
				bo=0;
				for (int j=1;j<=n;j++)
				{
					if (vv[j])
					{
						x=v[j].top();
						if (a[x][b[x]]>a[c[i]][b[c[i]]])
						{
							bo=1;
							v[j].push(c[i]);
//							pa[i]=j;
//							pa.push_back(j);
							printf("1 %d\n",j);
							vv[j]++;
							break;
						}
					}
				}
				if (!bo)
				{
					for (int j=1;j<=n;j++)
					{
						if (!vv[j])
						{
//							pa.push_back(j);
							printf("1 %d\n",j);
							v[j].push(c[i]);
							vv[j]++;
							break;
						}
					}
				}
			}
			else
			{
				for (int j=1;j<=n;j++)
				{
//					cout<<vv[j]<<endl;
					if (vv[j]&&v[j].top()==c[i])
					{
						printf("1 %d\n",j);
						v[j].pop();
						vv[j]--;
						break;
					}
				}
			}
		}
	}
	return 0;
}