// Java solution for problem K // Author: Grzegorz Guspiel import java.io.*; import java.util.*; public class k { static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); final int INF = 1100100100; int n = 26; boolean[][] adj = new boolean[n][]; { for (int i = 0; i < n; i++) adj[i] = new boolean[n]; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) adj[i][j] = true; } int[] v = new int[n]; { for (int i = 0; i < n; i++) v[i] = 0; } int[] d = new int[n]; int[] go = new int[n]; void dfs(int a) { v[a] = 1; d[a] = 0; for (int i = 0; i < n; i++) if (adj[a][i]) { if (v[i] == 0) { dfs(i); } else if (v[i] == 1) { d[a] = INF; go[a] = i; } if (d[i] + 1 > d[a]) { d[a] = d[i] + 1; go[a] = i; } } v[a] = 2; } void solve() throws IOException { int cnt = Integer.parseInt(reader.readLine()); for (int i = 0; i < cnt; i++) { String digraph = reader.readLine(); adj[digraph.charAt(0) - 'a'][digraph.charAt(1) - 'a'] = false; } for (int i = 0; i < n; i++) if (v[i] == 0) dfs(i); int s = 0; for (int i = 0; i < n; i++) if (d[i] > d[s]) s = i; String r = ""; int letters = d[s] + 1; if (letters % 2 == 0) letters--; letters = Math.min(letters, 20 * 2 - 1); for (int i = 0; i < letters; i++) { r += (char)('a' + s); s = go[s]; } int k = r.length() / 2 + 1; for (int i = 0; i < k; i++) { StringBuilder line = new StringBuilder(); for (int j = 0; j < k; j++) line.append(r.charAt(i + j)); System.out.println(line.toString()); } } public static void main(String[] args) throws IOException { int z = Integer.parseInt(reader.readLine()); for (int zz = 0; zz < z; zz++) { new k().solve(); } } }