import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Stack;
public class Main {
static ArrayList<Integer> [] arr;
static int visited [];
static Stack<Integer> a = new Stack<Integer>();
static boolean flag=false;
public static void graphcheck(int node){ //method to check if there is a cycle in the graph
visited[node] = 2;
for(int i=0;i<arr[node].size();i++){
int u =arr[node].get(i);
if(visited[u]==0){
graphcheck(u);
}else if(visited[u]==2){
flag=true;
return;
}
}
visited[node] = 1;
}
public static void dfs2(int node){ //method to get one possible topological sort which I want to extend to get all posibilites
visited[node] = 1;
for(int i=0;i<arr[node].size();i++){
int u =arr[node].get(i);
if(visited[u]==0){
dfs2(u);
}
}
a.push(node);
}
int tc
= Integer.
parseInt(br.
readLine()); for(int k=0;k<tc;k++){
br.readLine();
String h
[]= br.
readLine().
split(" "); int n= h.length;
visited = new int[n];
for( int i = 0; i < n; i++) {
arr[ i] = new ArrayList<Integer>();
}
String q
[]=br.
readLine().
split(" "); int y=q.length;
for(int i=0;i<y;i++){
int x=0;
int z=0;
for(int j=0;j<n;j++){
if(q[i].charAt(0)==h[j].charAt(0)){
x=j;
}else if(q[i].charAt(2)==h[j].charAt(0)){
z=j;
}
}
if(q[i].charAt(1)=='<'){
// System.out.println(q[i].charAt(0)-'A'+" "+(q[i].charAt(2)-'A'));
arr[x].add(z);
}
}
for(int i=0;i<n;i++){
if(visited[i]==0)
graphcheck(i);
}
if(flag){
}else{
a.clear();
for(int i=0;i<n;i++){
if(visited[i]==0){
dfs2(i);
}
}
int z= a.size();
for(int i=0;i<z;i++){
int x =a.pop();
}
}
}
}
}
CgppbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsKaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CmltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyOwppbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CmltcG9ydCBqYXZhLnV0aWwuU3RhY2s7CgpwdWJsaWMgY2xhc3MgTWFpbiB7CgkKCglzdGF0aWMgQXJyYXlMaXN0PEludGVnZXI+IFtdIGFycjsgIAoJc3RhdGljIGludCB2aXNpdGVkIFtdOwoJc3RhdGljIFN0YWNrPEludGVnZXI+IGEgPSBuZXcgU3RhY2s8SW50ZWdlcj4oKTsKCXN0YXRpYyBib29sZWFuIGZsYWc9ZmFsc2U7CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBncmFwaGNoZWNrKGludCBub2RlKXsgIC8vbWV0aG9kIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGEgY3ljbGUgaW4gdGhlIGdyYXBoCgkJdmlzaXRlZFtub2RlXSA9IDI7CgkJZm9yKGludCBpPTA7aTxhcnJbbm9kZV0uc2l6ZSgpO2krKyl7CgkJCWludCB1ID1hcnJbbm9kZV0uZ2V0KGkpOwoJCQlpZih2aXNpdGVkW3VdPT0wKXsKCQkJCWdyYXBoY2hlY2sodSk7CgkJCX1lbHNlIGlmKHZpc2l0ZWRbdV09PTIpewoJCQkJCWZsYWc9dHJ1ZTsKCQkJCQlyZXR1cm47CQoJCQkJfQoJCX0KCQl2aXNpdGVkW25vZGVdID0gMTsKCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIGRmczIoaW50IG5vZGUpeyAgICAgICAgICAgIC8vbWV0aG9kIHRvIGdldCBvbmUgcG9zc2libGUgdG9wb2xvZ2ljYWwgc29ydCB3aGljaCBJIHdhbnQgdG8gZXh0ZW5kIHRvIGdldCBhbGwgcG9zaWJpbGl0ZXMKCQl2aXNpdGVkW25vZGVdID0gMTsKCQlmb3IoaW50IGk9MDtpPGFycltub2RlXS5zaXplKCk7aSsrKXsKCQkJaW50IHUgPWFycltub2RlXS5nZXQoaSk7CgkJCWlmKHZpc2l0ZWRbdV09PTApewoJCQkJZGZzMih1KTsKCQkJfQkKCQl9CgkJYS5wdXNoKG5vZGUpOwoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgTnVtYmVyRm9ybWF0RXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CgkJQnVmZmVyZWRSZWFkZXIgYnIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwoJCWludCB0YyA9IEludGVnZXIucGFyc2VJbnQoYnIucmVhZExpbmUoKSk7CgkJZm9yKGludCBrPTA7azx0YztrKyspewoJCQlici5yZWFkTGluZSgpOwoJCQkKCQkJU3RyaW5nIGhbXT0gYnIucmVhZExpbmUoKS5zcGxpdCgiICIpOwoJCQlpbnQgbj0gaC5sZW5ndGg7CgkJCWFycj1uZXcgQXJyYXlMaXN0W25dOwoJCQl2aXNpdGVkID0gbmV3IGludFtuXTsKCQkJZm9yKCBpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQkJICAgIGFyclsgaV0gPSBuZXcgQXJyYXlMaXN0PEludGVnZXI+KCk7CgkJCX0KCQkJU3RyaW5nIHFbXT1ici5yZWFkTGluZSgpLnNwbGl0KCIgIik7CgkJCWludCB5PXEubGVuZ3RoOwoJCQlmb3IoaW50IGk9MDtpPHk7aSsrKXsKCQkJCWludCB4PTA7CgkJCQlpbnQgej0wOwoJCQkJZm9yKGludCBqPTA7ajxuO2orKyl7CgkJCQkJaWYocVtpXS5jaGFyQXQoMCk9PWhbal0uY2hhckF0KDApKXsKCQkJCQkJeD1qOwoJCQkJCX1lbHNlIGlmKHFbaV0uY2hhckF0KDIpPT1oW2pdLmNoYXJBdCgwKSl7CgkJCQkJCXo9ajsKCQkJCQl9CgkJCQl9CgkJCQlpZihxW2ldLmNoYXJBdCgxKT09JzwnKXsKLy8JCQkJCVN5c3RlbS5vdXQucHJpbnRsbihxW2ldLmNoYXJBdCgwKS0nQScrIiAgIisocVtpXS5jaGFyQXQoMiktJ0EnKSk7CgkJCQkJYXJyW3hdLmFkZCh6KTsKCQkJCX0KCQkJfQoJCQlmb3IoaW50IGk9MDtpPG47aSsrKXsKCQkJCWlmKHZpc2l0ZWRbaV09PTApCgkJCQkJZ3JhcGhjaGVjayhpKTsKCQkJfQoJCQlpZihmbGFnKXsKCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiTk8iKTsKCQkJfWVsc2V7CgkJCWEuY2xlYXIoKTsKCQkJQXJyYXlzLmZpbGwodmlzaXRlZCwgMCk7CgkJCWZvcihpbnQgaT0wO2k8bjtpKyspewoJCQkJaWYodmlzaXRlZFtpXT09MCl7CgkJCQkJZGZzMihpKTsKCQkJCX0JCgkJCX0KCQkJaW50IHo9IGEuc2l6ZSgpOwoJCQlmb3IoaW50IGk9MDtpPHo7aSsrKXsKCQkJCWludCB4ID1hLnBvcCgpOwoJCQkJU3lzdGVtLm91dC5wcmludChoW3hdKyIgIik7CgkJCX0KCQkJU3lzdGVtLm91dC5wcmludGxuKCk7CgkJfQoJCgoJfQoJfQp9Cg==