Problem:
Finding Missing Cards

Taro is going to play a card game. However, now he has only n cards, even though there should be 52 cards (he has no Jokers).

The 52 cards include 13 ranks of each of the four suits: spade, heart, club and diamond.

Input

In the first line, the number of cards n (n ≤ 52) is given.

In the following n lines, data of the n cards are given. Each card is given by a pair of a character and an integer which represent its suit and rank respectively. A suit is represented by 'S', 'H', 'C' and 'D' for spades, hearts, clubs and diamonds respectively. A rank is represented by an integer from 1 to 13.

Output

Print the missing cards. The same as the input format, each card should be printed with a character and an integer separated by a space character in a line.
Arrange the missing cards in the following priorities:

Print cards of spades, hearts, clubs and diamonds in this order.

If the suits are equal, print cards with lower ranks first.

Sample Input

47
S 10
S 11
S 12
S 13
H 1
H 2
S 6
S 7
S 8
S 9
H 6
H 8
H 9
H 10
H 11
H 4
H 5
S 2
S 3
S 4
S 5
H 12
H 13
C 1
C 2
D 1
D 2
D 3
D 4
D 5
D 6
D 7
C 3
C 4
C 5
C 6
C 7
C 8
C 9
C 10
C 11
C 13
D 9
D 10
D 11
D 12
D 13

Sample Output

S 1
H 3
H 7
C 12
D 8

Note

      解説

Solution in JAVA (judge verdict: Wrong Answer)



import java.util.*;

public class Main {
	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int n, count, i;
		i = 0;
		String str;
		str = "S";// ???????????????????????±
		count = 0;// for?????§?????¨
		n = scan.nextInt();
		StringBuilder sb = new StringBuilder();
		List<String> list = new ArrayList<String>();
		List<Integer> list2 = new ArrayList<Integer>();
		// ??????????????°??????????????????????????????
		List<Integer> list3 = new ArrayList<Integer>();

		// ??????????????????????????±?????\???
		for (; count < n; count++) {
			list.add(scan.next());// ??????
			list2.add(scan.nextInt());// ??°???
		}

		// list3????????????????¨????
		for (; i < 13; i++) {
			list3.add(i);
		}

		count = 0;// ????????????????????????
		i = 0;// list3??¨???????????????????????????

		for (int c = 0; c < 4; c++) {

			switch (str) {
			case "S":// S(??????????????????????´¢??????
				for (; count < n; count++) {// ?????°???for???????????????
					if (list.get(count).equals("S")) {// S?????¨????????????????????????
						// list3??¨????????????????????????????????°list3?????????0?????????
						for (; i < 13; i++) {
							if (list2.get(count) == list3.get(i)) {
								list3.set(i, 0);// ????????????????´????0?????????
							}
						}
						i = 0; // list3??¨???????????????????????????
						// ?????????3??????????????????0??§???????????????????????¨????????????
						for (; i < 13; i++) {
							if (list3.get(i) != 0) {
								sb.append("S");
								sb.append("???");
								sb.append(list3.get(i));
								sb.append("\n");
							}
						}
					}
				}
				// list3????????????????¨????
				i = 0;// list3??¨???????????????????????????
				for (; i < 13; i++) {
					list3.add(i);
				}
				str = "H";//?¬?????????????
			case "H":
				for (; count < n; count++) {// ?????°???for???????????????
					if (list.get(count).equals("H")) {// S?????¨????????????????????????
						// list3??¨????????????????????????????????°list3?????????0?????????
						for (; i < 13; i++) {
							if (list2.get(count) == list3.get(i)) {
								list3.set(i, 0);// ????????????????´????0?????????
							}
						}
						i = 0; // list3??¨???????????????????????????
						// ?????????3??????????????????0??§???????????????????????¨????????????
						for (; i < 13; i++) {
							if (list3.get(i) != 0) {
								sb.append("H");
								sb.append("???");
								sb.append(list3.get(i));
								sb.append("\n");
							}
						}
					}
				}
				// list3????????????????¨????
				i = 0;// list3??¨???????????????????????????
				for (; i < 13; i++) {
					list3.add(i);
				}
				str = "C";//?¬?????????????
			case "C":
				for (; count < n; count++) {// ?????°???for???????????????
					if (list.get(count).equals("C")) {// S?????¨????????????????????????
						// list3??¨????????????????????????????????°list3?????????0?????????
						for (; i < 13; i++) {
							if (list2.get(count) == list3.get(i)) {
								list3.set(i, 0);// ????????????????´????0?????????
							}
						}
						i = 0; // list3??¨???????????????????????????
						// ?????????3??????????????????0??§???????????????????????¨????????????
						for (; i < 13; i++) {
							if (list3.get(i) != 0) {
								sb.append("C");
								sb.append("???");
								sb.append(list3.get(i));
								sb.append("\n");
							}
						}
					}
				}
				// list3????????????????¨????
				i = 0;// list3??¨???????????????????????????
				for (; i < 13; i++) {
					list3.add(i);
				}
				str = "D";//?¬?????????????
			case "D":
				for (; count < n; count++) {// ?????°???for???????????????
					if (list.get(count).equals("D")) {// S?????¨????????????????????????
						// list3??¨????????????????????????????????°list3?????????0?????????
						for (; i < 13; i++) {
							if (list2.get(count) == list3.get(i)) {
								list3.set(i, 0);// ????????????????´????0?????????
							}
						}
						i = 0; // list3??¨???????????????????????????
						// ?????????3??????????????????0??§???????????????????????¨????????????
						for (; i < 13; i++) {
							if (list3.get(i) != 0) {
								sb.append("D");
								sb.append("???");
								sb.append(list3.get(i));
								sb.append("\n");
							}
						}
					}
				}
				// list3????????????????¨????
				i = 0;// list3??¨???????????????????????????
				for (; i < 13; i++) {
					list3.add(i);
				}
				str = "";//????????????
			}
		}
		System.out.println(new String(sb));

	}
}