#include <iostream>
using namespace std;
int seq[5002];
int pos[5002][2];//记录连续重复三次以上的数字的起始位置
char result[10008];
int result_index;
int getv(char a,char b)
{
int result=0;
if(b>=65)b-=55;
else b-=48;
if(a>=65)a-=55;
else a-=48;
return a*16+b;
}
void printex(int num)
{
char big=num/16;
char small=num%16;
if(big>=10)big+=55;
else big+=48;
if(small>=10)small+=55;
else small+=48;
result[result_index]=big;//将结果记录起来
result[result_index+1]=small;
result_index+=2;
//cout<<big<<small;
}
void print_non(int l,int r)
{
if(l>r)return;
while(r-l>=127)
{
printex(127);
for(int i =l;i<=l+127;i++)
printex(seq[i]);
l+=128;
}
printex(r-l);
for(int i =l;i<=r;i++)
printex(seq[i]);
}
int main()
{
int t,casenum,count,index;
char a,b;
cin>>t;
for (int kk=1;kk<=t;kk++)
{
cin>>casenum>>count;
index=0;result_index=0;
for(int i=0;i<count;i++)
{
cin>>a>>b;
seq[i]=getv(a,b);
}
for(int i=0;i<count;i++)
{
int j=i+1;
for(;seq[j]==seq[j-1]&&j<count&&(j-i<130);j++);
if(j-i>=3){
pos[index][0]=i;pos[index][1]=j;index++;i=j-1;
}
}
if(index==0)
{
print_non(0,count-1);
}
else
{
int start=0;
for(int i=0;i<index;i++)
{
print_non(start,pos[i][0]-1);
printex(128+pos[i][1]-pos[i][0]-3);
printex(seq[pos[i][0]]);
start=pos[i][1];
}
print_non(pos[index-1][1],count-1);
}
cout<<kk<<" "<<result_index/2<<endl;
for(int i=0;i<result_index;i++)
{
if(i>0&&i%80==0)cout<<endl;//没留意每行80个的要求,WA
cout<<result[i];
}
cout<<endl;
}
return 0;
}