#include<bits/stdc++.h>usingnamespace std;char s[5];int in[50];int vis[50][50];
vector<int>cot;
vector<int>G[50];
vector<pair<int,int>>ans;voidbfs(int u){
queue<int>q;
q.push(u);while(!q.empty()){int x = q.front(); q.pop();for(int i =0; i <(int)G[x].size(); i++){int y = G[x][i];
cot.push_back(y);
q.push(y);}}}intmain(){int tt =1;int t, n, x, y;scanf("%d",&t);while(t--){
ans.clear();memset(in,0,sizeof(in));memset(vis,0,sizeof(vis));for(int i =0; i <50; i++) G[i].clear();scanf("%d",&n);for(int i =0; i < n; i++){scanf("%s", s);
x = s[0]-'A';
y = s[2]-'A';
vis[x][y]= vis[y][x]=1;if(s[1]=='<'){
in[y]++;
G[x].push_back(y);}else{
in[x]++;
G[y].push_back(x);}}
queue<int>q;for(int i =0; i <26; i++){if(in[i]==0) q.push(i);}while(!q.empty()){int u = q.front(); q.pop();
cot.clear();bfs(u);for(int i =0; i <(int)cot.size(); i++){int v = cot[i];if(!vis[u][v]&&!vis[v][u]){
vis[u][v]= vis[v][u]=1;
ans.push_back(make_pair(u,v));}}for(int i =0; i <(int)G[u].size(); i++){int v = G[u][i];
in[v]--;if(in[v]==0){
q.push(v);}}}printf("Case %d:\n", tt++);if((int)ans.size()==0){puts("NONE");}else{sort(ans.begin(), ans.end());for(int i =0; i <(int)ans.size(); i++){printf("%c<%c\n", ans[i].first+'A', ans[i].second+'A');}}}return0;}