#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int t_c,k;
char b[10000],a[25][25];
int xx[]={0,0,-1,-1,-1,1,1,1};
int yy[]={1,-1,0,1,-1,0,1,-1};
struct TT
{
char ck[1000];
}ch[1000];
int comp(TT a,TT b)
{
if(strlen(a.ck)<strlen(b.ck))
return 1;
else if(strlen(a.ck)>strlen(b.ck))
return 0;
else
return strcmp(a.ck,b.ck)<0;
}
int is_safe(int c,int d)
{
if(c<0||c>=t_c||d<0||d>=t_c)
return 0;
else return 1;
}
int backtrack(int x,int y,int l)
{
int c,d,i,f1;
if(l>=3)
{
f1=0;
for(i=0;i<k;i++)
if(!strcmp(ch[i].ck,b))
f1=1;
if(!f1)
{
strcpy(ch[k].ck,b);
//printf("%s\n",ch[k].ck);
k++;
}
}
for(i=0;i<8;i++)
{
c=x+xx[i];
d=y+yy[i];
if(is_safe(c,d)&&a[c][d]>a[x][y])
{
b[l]=a[c][d];
backtrack(c,d,l+1);
}
}
b[l-1]='\0';
return 0;
}
int main()
{
int t,i,j,f=0;
//freopen("output.txt","w",stdout);
scanf("%d",&t);
while(t--)
{
if(f)
printf("\n");
f=1;
k=0;
scanf("%d",&t_c);
getchar();
for(i=0;i<t_c;i++)
scanf("%s",&a[i]);
for(i=0;i<t_c;i++)
for(j=0;j<t_c;j++)
{
b[0]=a[i][j];
backtrack(i,j,1);
}
sort(ch,ch+k,comp);
for(i=0;i<k;i++)
printf("%s\n",ch[i].ck);
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CiNpbmNsdWRlPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCB0X2MsazsKY2hhciBiWzEwMDAwXSxhWzI1XVsyNV07CmludCB4eFtdPXswLDAsLTEsLTEsLTEsMSwxLDF9OwppbnQgeXlbXT17MSwtMSwwLDEsLTEsMCwxLC0xfTsKc3RydWN0IFRUCnsKICAgIGNoYXIgY2tbMTAwMF07Cn1jaFsxMDAwXTsKCmludCBjb21wKFRUIGEsVFQgYikKewogICAgaWYoc3RybGVuKGEuY2spPHN0cmxlbihiLmNrKSkKICAgIHJldHVybiAxOwogICAgZWxzZSBpZihzdHJsZW4oYS5jayk+c3RybGVuKGIuY2spKQogICAgcmV0dXJuIDA7CiAgICBlbHNlCiAgICByZXR1cm4gc3RyY21wKGEuY2ssYi5jayk8MDsKfQoKaW50IGlzX3NhZmUoaW50IGMsaW50IGQpCnsKICAgIGlmKGM8MHx8Yz49dF9jfHxkPDB8fGQ+PXRfYykKICAgIHJldHVybiAwOwogICAgZWxzZSByZXR1cm4gMTsKfQppbnQgYmFja3RyYWNrKGludCB4LGludCB5LGludCBsKQp7CiAgICBpbnQgYyxkLGksZjE7CiAgICBpZihsPj0zKQogICAgewogICAgICAgIGYxPTA7CiAgICAgICAgZm9yKGk9MDtpPGs7aSsrKQogICAgICAgIGlmKCFzdHJjbXAoY2hbaV0uY2ssYikpCiAgICAgICAgZjE9MTsKICAgICAgICBpZighZjEpCiAgICAgICAgewogICAgICAgICAgICBzdHJjcHkoY2hba10uY2ssYik7CiAgICAgICAgICAgIC8vcHJpbnRmKCIlc1xuIixjaFtrXS5jayk7CiAgICAgICAgICAgIGsrKzsKICAgICAgICB9CiAgICB9CiAgICBmb3IoaT0wO2k8ODtpKyspCiAgICB7CiAgICAgICAgYz14K3h4W2ldOwogICAgICAgIGQ9eSt5eVtpXTsKICAgICAgICBpZihpc19zYWZlKGMsZCkmJmFbY11bZF0+YVt4XVt5XSkKICAgICAgICB7CiAgICAgICAgICAgIGJbbF09YVtjXVtkXTsKCiAgICAgICAgICAgIGJhY2t0cmFjayhjLGQsbCsxKTsKICAgICAgICB9CiAgICB9CgliW2wtMV09J1wwJzsKICAgIHJldHVybiAwOwp9CgoKaW50IG1haW4oKQp7CiAgICBpbnQgdCxpLGosZj0wOwogICAgLy9mcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKICAgIHNjYW5mKCIlZCIsJnQpOwogICAgd2hpbGUodC0tKQogICAgewogICAgICAgIGlmKGYpCiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgIGY9MTsKICAgICAgICBrPTA7CiAgICAgICAgc2NhbmYoIiVkIiwmdF9jKTsKICAgICAgICBnZXRjaGFyKCk7CiAgICAgICAgZm9yKGk9MDtpPHRfYztpKyspCiAgICAgICAgc2NhbmYoIiVzIiwmYVtpXSk7CiAgICAgICAgZm9yKGk9MDtpPHRfYztpKyspCiAgICAgICAgZm9yKGo9MDtqPHRfYztqKyspCiAgICAgICAgewogICAgICAgICAgICBiWzBdPWFbaV1bal07CgogICAgICAgICAgICBiYWNrdHJhY2soaSxqLDEpOwogICAgICAgIH0KICAgICAgICBzb3J0KGNoLGNoK2ssY29tcCk7CiAgICAgICAgZm9yKGk9MDtpPGs7aSsrKQogICAgICAgIHByaW50ZigiJXNcbiIsY2hbaV0uY2spOwogICAgfQoJcmV0dXJuIDA7Cn0K