#include<bits/stdc++.h>
using namespace std;
int n,m,t,k,a[1005],p,g[1005],l;
struct node{
int s,b;
}f[1005];
bool cmp(node a,node b)
{
return a.s<b.s;
}
int main()
{
cin>>t;
while(t--){
cin>>n;
m=0;
k=0;
l=0;
p=0;
memset(a,0,sizeof(a));
memset(g,0,sizeof(g));
for(int i=1;i<=n;i++)
{
cin>>a[i];
f[i].b=a[i];
f[i].s=1;
}
sort(1+a,1+a+n);
for(int i=1;i<=n;i++)
{
if(a[i]==a[i-1]){
f[i].s=f[i-1].s+1;
f[i-1].s=0;
}
}
sort(1+f,1+f+n,cmp);
if(n%2==1||f[n].s>n/2) {
cout<<-1<<endl;
continue;
}
m=f[n].s;
l=n;
cout<<m<<endl;
for(int i=m-1;i>=1;i--)
{
p=0;
for(int j=n;f[j].s>=1;j--)
{
g[p+1]=f[j].b;
f[j].s--;
p++;
if(p%2==0&&f[j-1].s!=f[n].s+1)
{
break;
}
}
l-=p;
cout<<p<<" ";
sort(1+g,1+g+p);
for(int j=1;j<=p;j++){
cout<<g[j]<<" ";
}
cout<<endl;
sort(1+f,1+f+n,cmp);
}
p=0;
cout<<l<<" ";
for(int j=n;f[j].s>=1;j--)
{
g[p+1]=f[j].b;
f[j].s--;
p++;
}
sort(1+g,1+g+p);
for(int j=1;j<=p;j++){
cout<<g[j]<<" ";
}
cout<<endl;
}
return 0;
}
```*~~$$~~*