rt
#include<bits/stdc++.h>
using namespace std;
int t,n,d[26],cnt1,cnt2;
bool vis[26];
vector<int>G[26];
string s;
void dfs(int u){
vis[u]=0;
for(int i=0;i<G[u].size();i++){
int v=G[u][i];
if(!vis[v]) continue;
dfs(v);
}
}
int main(){
cin>>t;
while(t--){
memset(vis,0,sizeof vis);
memset(d,0,sizeof d);
cnt1=0,cnt2=0;
cin>>n;
for(int i=1;i<=n;i++){
cin>>s;
G[s[0]-'a'].push_back(s[s.size()-1]-'a');
G[s[s.size()-1]-'a'].push_back(s[0]-'a');
vis[s[0]-'a']=1;
vis[s[s.size()-1]-'a']=1;
d[s[0]-'a']--;
d[s[s.size()-1]-'a']++;
}
dfs(s[0]-'a');
for(int i=0;i<26;i++){
if(d[i]==1) cnt1++;
else if(d[i]==-1) cnt2++;
else if(d[i]){
cout<<"The door cannot be opened.\n";
goto T2;
}
if(vis[i]){
cout<<"The door cannot be opened.\n";
goto T2;
}
}
if(cnt1>1||cnt2>1){
cout<<"The door cannot be opened.\n";
goto T2;
}
cout<<"Ordering is possible.\n";
T2:;
}
}