#include<stdio.h>
#include<string.h>
int cas,n,pre[30],vst[30],in[30],out[30];
struct point
{
int u,v;
}eg[100000];
int find(int w)
{
int now,root=w;
while(root!=pre[root])
root=pre[root];
while(pre[w]!=root)
{
now=pre[w];
pre[w]=root;
w=now;
}
return root;
}
int main()
{
scanf("%d",&cas);
while(cas--)
{
bool flag=true;
scanf("%d",&n);
for(int i=0;i<26;i++)
{
pre[i]=i;
vst[i]=0;
in[i]=0;
out[i]=0;
}
for(int i=0;i<n;i++)
{
char s[10000];
scanf("%s",s);
int u=s[0]-'a',v=s[strlen(s)-1]-'a';
eg[i].u=u;
eg[i].v=v;
out[u]++;
in[v]++;
vst[u]=1;
vst[v]=1;
int x=find(u),y=find(v);
if(x!=y)
pre[y]=x;
}
int k=0,o1=0,i1=0;
for(int i=0;i<26;i++)
if(vst[i]&&pre[i]==i)
if((++k)>1)
flag=false;
for(int i=0;i<26;i++)
if(vst[i])
{
if(out[i]-in[i]>1||in[i]-out[i]>1)
{
flag=false;
break;
}
if(out[i]-in[i]==1)
if((++o1)>1)
{
flag=false;
break;
}
if(in[i]-out[i]==1)
if((++i1)>1)
{
flag=false;
break;
}
}
if(flag)
printf("Ordering is possible.\n");
else
printf("The door cannot be opened.\n");
}
return 0;
}