//poj 1386 Play on Words 欧拉回路
/*
注意连通性,为此WA了很多次哎。。。
*/
#include <iostream>
#include <algorithm>
using namespace std;
const int inf = 1<<28;
int n,m;
int in[26],out[26],con[26][26],mark[26];
char input[1010];
void dfs(int v)
{
mark[v]=1;
for (int i=0;i<26;i++)
if (!mark[i] && (con[v][i] || con[i][v]))
dfs(i);
}
bool connect(int v)
{
memset(mark,0,sizeof(mark));
dfs(v);
for (int i=0;i<26;i++)
if ( (in[i] || out[i]) && !mark[i])
return false;
return true;
}
int main()
{
int t,l;scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
memset(in,0,sizeof(in));
memset(out,0,sizeof(out));
memset(con,0,sizeof(con));
for (int i=0;i<n;i++)
{
scanf("%s",input);
l=strlen(input);
out[input[0]-'a']++;
in[input[l-1]-'a']++;
con[input[0]-'a'][input[l-1]-'a']=1;
}
//任意找一个有输入的点进行连通性检测
for (l=0;l<26;l++)
if (in[l] || out[l]) break;
if (!connect(l))
{
printf("The door cannot be opened./n");
continue;
}
//检测出入度,仅允许出度与入度相差一的点各一个
int ind=0,outd=0,i;
for (i=0;i<26;i++)
{
if (in[i]-out[i]==1) ind++;
else if (in[i]-out[i]==-1) outd++;
if (abs(in[i]-out[i])>1 || ind>1 || outd>1) break;
}
if (i>=26) printf("Ordering is possible./n");
else printf("The door cannot be opened./n");
}
system("pause");
return 0;
}