#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int T;
const int N = 310;
vector <int> st[N];
struct node{
	int w;
	int a1,a2;
};
vector <node> ans;
int up[N],dn[N];

int main(){
	freopen("meow.in","r",stdin);
	freopen("meow.out","w",stdout);
	scanf("%d",&T);
	if(T % 10 == 1){
		for(int ii = 1;ii <= T;ii++){
			scanf("%d%d%d",&n,&m,&k);
			for(int i = 1;i <= n;i++) st[i].clear();
			
			int num = 1;
			ans.clear();
			memset(up,0,sizeof(up));
			memset(dn,0,sizeof(dn));
			for(int i = 1;i <= m;i++){
				int x;
				scanf("%d",&x);
				if(up[x] == 0 && dn[x] == 0){
					node u;
					if(st[num].size() == 0){
						st[num].push_back(x);
						dn[x] = up[x] = 1;
						u.w = 1;
						u.a1 = num;
					}
					else{
						up[st[num][st[num].size() - 1]]--;
						st[num].push_back(x);
						up[x]++;
						u.w = 1;
						u.a1 = num;
					}
					ans.push_back(u);
					num = -1;
					for(int i = 1;i < n;i++){
						if(st[i].size() == 0){
							num = i;
							break;
						}
					}
					if(num == -1){
						for(int i = 1;i < n;i++){
							if(st[i].size() == 1){
								num = i;
								break;
							}
						}
					}
					if(num == -1) num = 1;
				}
				else{
					if(up[x] != 0){
						for(int t = 1;t < n;t++){
							if(st[t].size() != 0)
							if(st[t][st[t].size() - 1] == x){
								node u;
								u.w = 1;
								u.a1 = t;
								ans.push_back(u);
								if(st[t].size() == 1){
									dn[x]--;
									up[x]--;
									num = t;
									st[t].pop_back();
								}
								else{
									up[x]--;
									st[t].pop_back();
									up[st[t][st[t].size() - 1]]++;
								}
								break;
							}
						}
					}
					else if(dn[x] != 0){
						for(int t = 1;t < n;t++){
							int it = st[t][0];
							if(it == x){
								node u;
								u.w = 1;
								u.a1 = n;
								ans.push_back(u);
								u.w = 2;
								u.a2 = t;
								ans.push_back(u);
								if(st[t].size() == 1){
									dn[x]--;
									up[x]--;
									num = t;
									st[t].pop_back();
								}
								else{
									dn[x]--;
									st[t].erase(st[t].begin());
									dn[st[t][0]]++;
								}
							}
						}
					}
				}
			}
			printf("%d\n",ans.size());
			for(int i = 0;i < ans.size();i++){
				if(ans[i].w == 1){
					printf("1 %d\n",ans[i].a1);
				}
				else{
					printf("2 %d %d\n",ans[i].a2,ans[i].a1);
				}
			}
		}
		return 0;
	}
	if(n == 2){
		for(int ii = 1;ii <= T;ii++){
			scanf("%d%d%d",&n,&m,&k);
			for(int i = 1;i <= n;i++) st[i].clear();
			for(int i = 1;i <= m;i++){
				int x;
				scanf("%d",&x);
				
			}
		}
		
	}
	
	return 0;
}
