Problem description

Companies like to have memorable telephone numbers. One way to make a telephone number memorable is to have it spell a word or phrase that is easy to remember. For example, you can call the University of Waterloo by dialing the memorable TUTGLOP. Sometimes only part of the number is used to spell a word. When you get home tonight, you can order a pizza from Ginos by dialing 310GINO. Another way to make a telephone number memorable is to group the digits in a memorable way. You could order your pizza from Pizza Hut by calling their three tens number 3101010.

The standard form of a telephone number is seven decimal digits with a hyphen between the third and fourth digits (e.g. 5551212). The keypad of a phone supplies the mapping of letters to numbers, as shown: Note there is no mapping for Q or Z. Hyphens are not dialed, and can be added and removed as necessary. The standard form of TUTGLOP is 888 4567, the standard form of 310GINO is 3104466, and the standard form of 3101010 is 3101010. see image.

Two telephone numbers are equivalent if they have the same standard form, i.e., they dial the same number.

You have been asked to compile a directory of telephone numbers from local businesses. As part of the quality control process, you want to check that no two (or more) businesses in the directory have the same telephone number.

Input

The first line of the input contains the number of datasets in the input. A blank line follows. The first line of each dataset specifies the number of telephone numbers in the directory (up to 1000) as a positive integer alone on the line. The remaining lines list the telephone numbers in the directory, with each number alone on a line. Each telephone number consists of a string composed of decimal digits, uppercase letters (excluding Q and Z) and hyphens. Exactly seven of the characters in the string will be digits or letters. Theres a blank line between datasets.

Output

Generate a line of output for each telephone number that appears more than once in any form. The line should give the telephone number in standard form, followed by a space, followed by the number of times the telephone number appears in the directory. Arrange the output lines by telephone number in ascending lexicographical order. If there are no duplicates in the input print the line:

No duplicates.

Print a blank line between the output of consecutive datasets.

Sample Input

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

Sample Output

310-1010 2
487-3279 4
888-4567 3

Requirements

  • Use a structure that stores the following data:
    • The Phone number (in standard form)
    • A Count of the number of times this number appears in the directory.
  • The name of the input file must be specified at the command line, e.g.
$ ./pa09 directory.txt
  • This program is all about specifications. Read carefully.
  • This program should be written clearly and well documented.
Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.