#include<bits/stdc++.h>
using namespace std;
#define siz(x) (int)(x).size()
#define int long long
typedef pair<int,int> Pii;
const int N=305,M=2e6+5;
int n,m,k;
int a[M];
struct OP{
    int opt,s1,s2;
};vector<OP>Ans;
deque<int>st[N];
bool Flag=0;
inline void print()
{
    for(int i=1;i<=n;i++)
        if(!st[i].empty())return;
    cout<<Ans.size()<<'\n';
    for(OP x:Ans)
        if(x.opt==1)cout<<x.opt<<' '<<x.s1<<'\n';
        else cout<<x.opt<<' '<<x.s1<<' '<<x.s2<<'\n';
    Flag=1;
}
inline void dfs(int dep)
{
    if(Flag)return;
    if(dep==m+1)return print(),void ();
    // for(int i=1;i<=n;i++)
    // {
    //     cerr<<i<<": ";
    //     for(int x:st[i])cerr<<x<<' ';
    //     cerr<<'\n';
    // }
    for(int i=1;i<=n;i++)
        if(!st[i].empty()&&a[dep]==st[i].back())
        {
            st[i].pop_back(),Ans.push_back({1,i});
            dfs(dep+1);
            Ans.pop_back(),st[i].emplace_back(a[dep]);
        }
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            if(!st[i].empty()&&!st[j].empty()&&st[i].front()==st[j].front())
            {
                int x=st[i].front();
                st[i].pop_front(),st[j].pop_front();
                Ans.push_back({2,i,j});
                dfs(dep);
                Ans.pop_back();
                st[i].emplace_front(x),st[j].emplace_front(x);
            }
    for(int i=1;i<=n;i++)
        if(st[i].empty()||a[dep]!=st[i].back())
        {
            st[i].emplace_back(a[dep]),Ans.push_back({1,i});
            dfs(dep+1);
            Ans.pop_back(),st[i].pop_back();
        }
}

// namespace Sub1{
//     int cnt[N];
//     int pos[N<<1];
//     inline void main()
//     {
//         for(int i=1;i<=m;i++)cnt[a[i]]++;
//         for(int i=1;i<n;i++)pos[i]=i;
//         for(int i=1;i<=m;i++)
//         {
//             if(cnt[a[i]])
//             {
//                 if(!pos[a[i]])
//                 {
//                     for(int j=1;j<n;j++)
//                         if(!cnt[j]){pos[a[i]]=j;break;}
//                 }
//                 int p=(pos[a[i]]?pos[a[i]]:n);
//                 st[p].emplace_back(a[i]),Ans.push_back({1,p});
//             }
//         }
//     }
// }

inline void solve()
{
    cin>>n>>m>>k;
    for(int i=1;i<=m;i++)cin>>a[i];
    // if(k==2*n-2)return Sub1::main(),void ();
    Flag=0,dfs(1);
}
inline void clear()
{
    Ans.clear();
    for(int i=1;i<=n;i++)
        st[i].clear();
}
signed main()
{
    freopen("meow.in","r",stdin);
    freopen("meow.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int T;cin>>T;
    while(T--)solve(),clear();
    return 0;
}