//package main;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
class Main {
public static void main
(String[] args
) { run();
}
static void run() {
Scanner in
= new Scanner
(System.
in); int total_datasets;
total_datasets = in.nextInt();
in.nextLine();
int i;
for (i = 1; i <= total_datasets; i++) {
int total_numbers_in_data;
total_numbers_in_data = in.nextInt();
int count = 0;
Map
<String, Integer
> sorted_numbers
= new TreeMap
<>(); for (int j = 1; j <= total_numbers_in_data; j++) {
StringBuilder n = new StringBuilder(in.next());
update_number(n);
if (sorted_numbers.containsKey(n.toString())) {
int v = sorted_numbers.get(n.toString()) + 1;
sorted_numbers.remove(n.toString());
sorted_numbers.put(n.toString(), v);
count++;
}
else {
sorted_numbers.put(n.toString(), 1);
}
}
if (count == 0) {
System.
out.
println("No duplicates."); }
else {
for (Map.
Entry<String, Integer
> entry
: sorted_numbers.
entrySet()) { if (entry.getValue() > 1) {
System.
out.
println(entry.
getKey() + " " + entry.
getValue()); }
}
}
if (i != total_datasets) {
}
}
}
static void update_number(StringBuilder n) {
for (int i = 0; i < n.length(); i++) {
char c = n.charAt(i);
if (c == '-') {
n.deleteCharAt(i);
--i;
}
switch (c) {
case 'A':
case 'B':
case 'C':
n.replace(i, i + 1, "2");
break;
case 'D':
case 'E':
case 'F':
n.replace(i, i + 1, "3");
break;
case 'G':
case 'H':
case 'I':
n.replace(i, i + 1, "4");
break;
case 'J':
case 'K':
case 'L':
n.replace(i, i + 1, "5");
break;
case 'M':
case 'N':
case 'O':
n.replace(i, i + 1, "6");
break;
case 'P':
case 'R':
case 'S':
n.replace(i, i + 1, "7");
break;
case 'T':
case 'U':
case 'V':
n.replace(i, i + 1, "8");
break;
case 'W':
case 'X':
case 'Y':
n.replace(i, i + 1, "9");
break;
default:
break;
}
}
}
n.insert(3, '-');
}
}
Ly9wYWNrYWdlIG1haW47CgppbXBvcnQgamF2YS51dGlsLk1hcDsKaW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwppbXBvcnQgamF2YS51dGlsLlRyZWVNYXA7CgpjbGFzcyBNYWluIHsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgcnVuKCk7CiAgICB9CgogICAgc3RhdGljIHZvaWQgcnVuKCkgewogICAgICAgIFNjYW5uZXIgaW4gPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwogICAgICAgIGludCB0b3RhbF9kYXRhc2V0czsKICAgICAgICB0b3RhbF9kYXRhc2V0cyA9IGluLm5leHRJbnQoKTsKICAgICAgICBpbi5uZXh0TGluZSgpOwogICAgICAgIGludCBpOwogICAgICAgIGZvciAoaSA9IDE7IGkgPD0gdG90YWxfZGF0YXNldHM7IGkrKykgewogICAgICAgICAgICBpbnQgdG90YWxfbnVtYmVyc19pbl9kYXRhOwogICAgICAgICAgICB0b3RhbF9udW1iZXJzX2luX2RhdGEgPSBpbi5uZXh0SW50KCk7CiAgICAgICAgICAgIGludCBjb3VudCA9IDA7CiAgICAgICAgICAgIE1hcDxTdHJpbmcsIEludGVnZXI+IHNvcnRlZF9udW1iZXJzID0gbmV3IFRyZWVNYXA8PigpOwogICAgICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSB0b3RhbF9udW1iZXJzX2luX2RhdGE7IGorKykgewogICAgICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBuID0gbmV3IFN0cmluZ0J1aWxkZXIoaW4ubmV4dCgpKTsKICAgICAgICAgICAgICAgIHVwZGF0ZV9udW1iZXIobik7CiAgICAgICAgICAgICAgICBpZiAoc29ydGVkX251bWJlcnMuY29udGFpbnNLZXkobi50b1N0cmluZygpKSkgewogICAgICAgICAgICAgICAgICAgIGludCB2ID0gc29ydGVkX251bWJlcnMuZ2V0KG4udG9TdHJpbmcoKSkgKyAxOwogICAgICAgICAgICAgICAgICAgIHNvcnRlZF9udW1iZXJzLnJlbW92ZShuLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgIHNvcnRlZF9udW1iZXJzLnB1dChuLnRvU3RyaW5nKCksIHYpOwogICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBzb3J0ZWRfbnVtYmVycy5wdXQobi50b1N0cmluZygpLCAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoY291bnQgPT0gMCkgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJObyBkdXBsaWNhdGVzLiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZm9yIChNYXAuRW50cnk8U3RyaW5nLCBJbnRlZ2VyPiBlbnRyeSA6IHNvcnRlZF9udW1iZXJzLmVudHJ5U2V0KCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkuZ2V0VmFsdWUoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGVudHJ5LmdldEtleSgpICsgIiAiICsgZW50cnkuZ2V0VmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaSAhPSB0b3RhbF9kYXRhc2V0cykgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgc3RhdGljIHZvaWQgdXBkYXRlX251bWJlcihTdHJpbmdCdWlsZGVyIG4pIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG4ubGVuZ3RoKCk7IGkrKykgewogICAgICAgICAgICBjaGFyIGMgPSBuLmNoYXJBdChpKTsKICAgICAgICAgICAgaWYgKGMgPT0gJy0nKSB7CiAgICAgICAgICAgICAgICBuLmRlbGV0ZUNoYXJBdChpKTsKICAgICAgICAgICAgICAgIC0taTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChDaGFyYWN0ZXIuaXNVcHBlckNhc2UoYykpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0EnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0InOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0MnOgogICAgICAgICAgICAgICAgICAgICAgICBuLnJlcGxhY2UoaSwgaSArIDEsICIyIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0QnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0UnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YnOgogICAgICAgICAgICAgICAgICAgICAgICBuLnJlcGxhY2UoaSwgaSArIDEsICIzIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0cnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0gnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0knOgogICAgICAgICAgICAgICAgICAgICAgICBuLnJlcGxhY2UoaSwgaSArIDEsICI0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0onOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0snOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0wnOgogICAgICAgICAgICAgICAgICAgICAgICBuLnJlcGxhY2UoaSwgaSArIDEsICI1Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdNJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdOJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdPJzoKICAgICAgICAgICAgICAgICAgICAgICAgbi5yZXBsYWNlKGksIGkgKyAxLCAiNiIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdQJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdSJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdTJzoKICAgICAgICAgICAgICAgICAgICAgICAgbi5yZXBsYWNlKGksIGkgKyAxLCAiNyIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVCc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVSc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVic6CiAgICAgICAgICAgICAgICAgICAgICAgIG4ucmVwbGFjZShpLCBpICsgMSwgIjgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVyc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnWCc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnWSc6CiAgICAgICAgICAgICAgICAgICAgICAgIG4ucmVwbGFjZShpLCBpICsgMSwgIjkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIG4uaW5zZXJ0KDMsICctJyk7CiAgICB9Cn0K
MQoKMTIKNDg3MzI3OQpJVFMtRUFTWQo4ODgtNDU2NwozLTEwLTEwLTEwCjg4OC1HTE9QClRVVC1HTE9QCjk2Ny0xMS0xMQozMTAtR0lOTwpGMTAxMDEwCjg4OC0xMjAwCi00LTgtNy0zLTItNy05LQo0ODctMzI3OQ==
1
12
4873279
ITS-EASY
888-4567
3-10-10-10
888-GLOP
TUT-GLOP
967-11-11
310-GINO
F101010
888-1200
-4-8-7-3-2-7-9-
487-3279