#include <iostream>
#include <cmath>
#include <string.h>
using namespace std;
int main()
{
int n,k=0;
cin >> n;
while(n--)
{
k++;
char str[20][20],str1[441],str2[441];
int r,c,count=0;
cin >> r >> c;
//nhap ma tran
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
cin >> str[i][j];
//xu ly ma tran xoay oc
//chuyen cac ki tu dang xoay oc vao 1 xau khac
int gt=0,t=0,d=r-1,e=c-1;
while(gt<r*c)
{
for(int i=t;i<=e;i++) //duyet tu trai sang phai
{
str1[gt]=str[t][i];
gt++;
}
for(int i=t+1;i<=d;i++) //tu tren xuong duoi
{
str1[gt]=str[i][e];
gt++;
}
for(int i=e-1;i>=t;i--) //tu phai sang trai
{
str1[gt]=str[d][i];
gt++;
}
for(int i=d-1;i>t;i--) //duoi len tren
{
str1[gt]=str[i][t];
gt++;
}
t++;d--;e--; //thu nho ma tran
}
//xu ly chuyen 5 bit thanh so tuong ung
for(int i=0;i<r*c;i++)
{
int f=0;
int o=4;
if((4+i)>r*c-1) break;
for(int j=i;j<=i+4;j++)
{
f+=(str1[j]-'0')*pow(2,o);
o--;
}
if(f==0) str2[count]=32; //neu f=0 thi cho thanh ki tu khoang trang
else if(f>0)
str2[count]=f+64;
i+=4;
count++;
}
cout << k << " ";
for(int i=0;i<count;i++)
cout << str2[i];
cout << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAppbnQgbWFpbigpCnsKICAgIGludCBuLGs9MDsKICAgIGNpbiA+PiBuOwogICAgd2hpbGUobi0tKQogICAgewogICAgICAgIGsrKzsKICAgICAgICBjaGFyIHN0clsyMF1bMjBdLHN0cjFbNDQxXSxzdHIyWzQ0MV07CiAgICAgICAgaW50IHIsYyxjb3VudD0wOwogICAgICAgIGNpbiA+PiByID4+IGM7CiAgICAgICAgLy9uaGFwIG1hIHRyYW4KICAgICAgICBmb3IoaW50IGk9MDtpPHI7aSsrKQogICAgICAgICAgICBmb3IoaW50IGo9MDtqPGM7aisrKQogICAgICAgICAgICAgICAgY2luID4+IHN0cltpXVtqXTsKICAgICAgICAvL3h1IGx5IG1hIHRyYW4geG9heSBvYwogICAgICAgIC8vY2h1eWVuIGNhYyBraSB0dSBkYW5nIHhvYXkgb2MgdmFvIDEgeGF1IGtoYWMKICAgICAgICBpbnQgZ3Q9MCx0PTAsZD1yLTEsZT1jLTE7CiAgICAgICAgd2hpbGUoZ3Q8cipjKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBpPXQ7aTw9ZTtpKyspICAvL2R1eWV0IHR1IHRyYWkgc2FuZyBwaGFpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cjFbZ3RdPXN0clt0XVtpXTsKICAgICAgICAgICAgICAgIGd0Kys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yKGludCBpPXQrMTtpPD1kO2krKykgLy90dSB0cmVuIHh1b25nIGR1b2kKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc3RyMVtndF09c3RyW2ldW2VdOwogICAgICAgICAgICAgICAgZ3QrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IoaW50IGk9ZS0xO2k+PXQ7aS0tKSAgLy90dSBwaGFpIHNhbmcgdHJhaQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHIxW2d0XT1zdHJbZF1baV07CiAgICAgICAgICAgICAgICBndCsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcihpbnQgaT1kLTE7aT50O2ktLSkgIC8vZHVvaSBsZW4gdHJlbgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHIxW2d0XT1zdHJbaV1bdF07CiAgICAgICAgICAgICAgICBndCsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHQrKztkLS07ZS0tOyAgLy90aHUgbmhvIG1hIHRyYW4KICAgICAgICB9CiAgICAgICAgICAgIC8veHUgbHkgY2h1eWVuIDUgYml0IHRoYW5oIHNvIHR1b25nIHVuZwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPHIqYztpKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGludCBmPTA7CiAgICAgICAgICAgICAgICBpbnQgbz00OwogICAgICAgICAgICAgICAgaWYoKDQraSk+cipjLTEpICBicmVhazsKICAgICAgICAgICAgICAgIGZvcihpbnQgaj1pO2o8PWkrNDtqKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZis9KHN0cjFbal0tJzAnKSpwb3coMixvKTsKICAgICAgICAgICAgICAgICAgICBvLS07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZihmPT0wKSBzdHIyW2NvdW50XT0zMjsgIC8vbmV1IGY9MCB0aGkgY2hvIHRoYW5oIGtpIHR1IGtob2FuZyB0cmFuZwogICAgICAgICAgICAgICAgZWxzZSBpZihmPjApCiAgICAgICAgICAgICAgICAgICAgc3RyMltjb3VudF09Zis2NDsKICAgICAgICAgICAgICAgIGkrPTQ7CiAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICB9CiAgICAgICAgICBjb3V0IDw8IGsgPDwgIiAiOwogICAgICAgICAgZm9yKGludCBpPTA7aTxjb3VudDtpKyspCiAgICAgICAgICAgIGNvdXQgPDwgc3RyMltpXTsKICAgICAgICAgIGNvdXQgPDwgZW5kbDsKIAogICAgfQp9