#include <stdio.h>#include <string.h>int m[27][27], f[27][27]; int mar_m[27], mar_f[27]; int ch_m[27], ch_f[27], n; int better_m(int x, int g){ int i, j; for(i = 0; i < n; i++)if(x == f[g][i]) break; for(j = 0; j < n; j++)if(ch_f[g] == f[g][j]) break; if(i < j) return 1; else return 0;}int main(void){ int T, i, j, tf, sign; char tch[35]; scanf("%d", &T); while(T--) {for(i = 0; i < 27; i++){ mar_m[i] = mar_f[i] = 1; ch_m[i] = -1;}scanf("%d", &n);for(i = 0; i < n; i++){ scanf("%s", tch); mar_m[tch[0] - 'a'] = 0;}for(i = 0; i < n; i++){ scanf("%s", tch); mar_f[tch[0] - 'A'] = 0;}for(i = 0; i < n; i++){ scanf("%s", tch); for(j = 0; j < n; j++)m[tch[0]-'a'][j] = tch[2+j] - 'A';}for(i = 0; i < n; i++){ scanf("%s", tch); for(j = 0; j < n; j++)f[tch[0]-'A'][j] = tch[2+j] - 'a';}sign = 1;while(sign){ sign = 0; for(i = 0; i < 27; i++) {while(mar_m[i] == 0){ ch_m[i]++; tf = m[i][ch_m[i]]; if(mar_f[tf] == 0) {mar_f[tf] = 2;ch_f[tf] = i;mar_m[i] = 2;sign = 1; } else if(mar_f[tf] == 2 && better_m(i, tf)) {mar_m[ch_f[tf]] = 0;ch_f[tf] = i;mar_m[i] = 2;sign = 1; }} }}for(i = 0; i < 27; i++){ if(mar_m[i] == 2)printf("%c %cn", i+'a', m[i][ch_m[i]]+'A');}if(T) printf("n"); } return 0;}