#include<bits/stdc++.h>
using namespace std;
inline int read()
{
    char c=getchar();
    int x=0;
    while(!isdigit(c)) c=getchar();
    while(isdigit(c)) x=x*10+(c&15),c=getchar();
    return x;
}
int id[603],a[2000003],fi[303],se[303],pos[603];
bool vis[603];
int op[4000003],x[4000003],y[4000003];
int n,m,k,z,cnt;
inline void solve(int i)
{
	int o=id[a[i]];
	if(!fi[o])
		// puts("A"),
		op[++cnt]=1,x[cnt]=o,fi[o]=a[i],pos[a[i]]=1;
	else if(!se[o]&&fi[o]==a[i])
		// puts("B"),
		op[++cnt]=1,x[cnt]=o,fi[o]=0,pos[a[i]]=0;
	else if(!se[o])
		// puts("C"),
		op[++cnt]=1,x[cnt]=o,se[o]=a[i],pos[a[i]]=2;
	else if(se[o]==a[i])
		// puts("D"),
		op[++cnt]=1,x[cnt]=o,se[o]=0,pos[a[i]]=0;
	else
#ifdef local
		assert(fi[o]==a[i]),
#endif
		op[++cnt]=1,x[cnt]=z,
		op[++cnt]=2,x[cnt]=o,y[cnt]=z,
		pos[fi[o]]=0,pos[se[o]]=1,
		fi[o]=se[o],se[o]=0;
}
signed main()
{
#ifndef local
    freopen("meow.in","r",stdin),
    freopen("meow.out","w",stdout);
#endif
    for(int T=read(); T--;)
    {
        n=read(),m=read(),k=(n<<1)-1,z=n,read(),id[k]=cnt=0;
        for(int i=1; i<=n; ++i) fi[i]=se[i]=0;
		for(int i=1; i<=k; ++i) pos[i]=0;
        for(int i=1; i<=k; ++i) id[i]=(i+1)>>1;
        for(int i=1; i<=m; ++i) a[i]=read();
        for(int i=1; i<=m; ++i)
            if(id[a[i]]!=z) solve(i);
            else
            {
				memset(vis,0,sizeof(vis));
                for(int j=1; j<=k; ++j)
					if(j!=a[i]&&!pos[j]) swap(id[j],id[a[i]]);
				if(id[a[i]]!=z) solve(i);
				else
				{
					int kk=k;
					int k=i+1;
					bool flg=1;
					while(a[k]!=a[i])
					{
						if(pos[a[k]]==2) vis[id[a[k]]]=1;
						else
						{
							flg=0;
							if(vis[id[a[k]]])
							{
								// puts("Case1");
								for(int l=i; l<=k; ++l) solve(l);
								z=id[a[k]],id[a[k]]=id[a[i]];
								// for(int i=1; i<=kk; ++i)
								// 	printf("%d ",id[i]);
								// puts("");
								i=k;
							}
							else
							{
								// puts("Case2");
								op[++cnt]=1,x[cnt]=id[a[k]];
								for(int l=i+1; l<=k; ++l) solve(l);
								pos[a[i]]=2,se[id[a[k]]]=a[i],
								swap(id[a[k]],id[a[i]]),i=k;
								// for(int i=1; i<=kk; ++i)
								// 	printf("%d ",id[i]);
								// puts("");
							}
							break;
						}
						++k;
					}
					if(flg)
					{
						for(int j=i; j<=k; ++j) solve(j);
						i=k;
					}
				}
            }
        printf("%d\n",cnt);
        for(int i=1; i<=cnt; ++i)
            if(op[i]==1) printf("1 %d\n",x[i]);
            else printf("2 %d %d\n",x[i],y[i]);
    }
    return 0;
}