import java.io.*;
public class Main {
	/**
	 * 不足しているカードの発見
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//カードの枚数を入力
		int n = Integer.parseInt(br.readLine());
		//トランプ全てのの配列
		String[] strs = new String[52];
		//カードの有無の配列
		Boolean[] judes = new Boolean[52];
		//スートの配列
		String[] suit = {"S","H","C","D"};
		//有無の配列にまず全て無い状態にする
		for(int i = 0; i < suit.length; i++){
			for(int l = 1; l <= 13; l++){
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			}//for
		}//for
		//入力されたカードを有る状態に刷る
		for(int i = 0; i < n; i++){
			String str = br.readLine();
			for(int l = 0; l < strs.length; l++){
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			}//for
		}//for
		//無いカードを表示する
		for(int i = 0; i < judes.length; i++){
			if(!judes[i]){
				System.out.println(strs[i]);
			}//if
		}//for
	}
} import java.io.*; io.* java public class Main {
	/**
	 * 不足しているカードの発見
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//カードの枚数を入力
		int n = Integer.parseInt(br.readLine());
		//トランプ全てのの配列
		String[] strs = new String[52];
		//カードの有無の配列
		Boolean[] judes = new Boolean[52];
		//スートの配列
		String[] suit = {"S","H","C","D"};
		//有無の配列にまず全て無い状態にする
		for(int i = 0; i < suit.length; i++){
			for(int l = 1; l <= 13; l++){
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			}//for
		}//for
		//入力されたカードを有る状態に刷る
		for(int i = 0; i < n; i++){
			String str = br.readLine();
			for(int l = 0; l < strs.length; l++){
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			}//for
		}//for
		//無いカードを表示する
		for(int i = 0; i < judes.length; i++){
			if(!judes[i]){
				System.out.println(strs[i]);
			}//if
		}//for
	}
} Main /**
	 * 不足しているカードの発見
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//カードの枚数を入力
		int n = Integer.parseInt(br.readLine());
		//トランプ全てのの配列
		String[] strs = new String[52];
		//カードの有無の配列
		Boolean[] judes = new Boolean[52];
		//スートの配列
		String[] suit = {"S","H","C","D"};
		//有無の配列にまず全て無い状態にする
		for(int i = 0; i < suit.length; i++){
			for(int l = 1; l <= 13; l++){
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			}//for
		}//for
		//入力されたカードを有る状態に刷る
		for(int i = 0; i < n; i++){
			String str = br.readLine();
			for(int l = 0; l < strs.length; l++){
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			}//for
		}//for
		//無いカードを表示する
		for(int i = 0; i < judes.length; i++){
			if(!judes[i]){
				System.out.println(strs[i]);
			}//if
		}//for
	} main {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//カードの枚数を入力
		int n = Integer.parseInt(br.readLine());
		//トランプ全てのの配列
		String[] strs = new String[52];
		//カードの有無の配列
		Boolean[] judes = new Boolean[52];
		//スートの配列
		String[] suit = {"S","H","C","D"};
		//有無の配列にまず全て無い状態にする
		for(int i = 0; i < suit.length; i++){
			for(int l = 1; l <= 13; l++){
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			}//for
		}//for
		//入力されたカードを有る状態に刷る
		for(int i = 0; i < n; i++){
			String str = br.readLine();
			for(int l = 0; l < strs.length; l++){
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			}//for
		}//for
		//無いカードを表示する
		for(int i = 0; i < judes.length; i++){
			if(!judes[i]){
				System.out.println(strs[i]);
			}//if
		}//for
	} BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br new BufferedReader(new InputStreamReader(System.in)) int n = Integer.parseInt(br.readLine()); n Integer.parseInt(br.readLine()) Integer.parseInt Integer br.readLine() br.readLine br String[] strs = new String[52]; strs new String[52] 52 Boolean[] judes = new Boolean[52]; judes new Boolean[52] 52 String[] suit = {"S","H","C","D"}; suit {"S","H","C","D"} "S" "H" "C" "D" for(int i = 0; i < suit.length; i++){
			for(int l = 1; l <= 13; l++){
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			}//for
		}//for int i = 0; int i = 0; i 0 i < suit.length i suit.length suit suit.length i++ i++ i {
			for(int l = 1; l <= 13; l++){
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			}//for
		}//for {
			for(int l = 1; l <= 13; l++){
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			}//for
		} for(int l = 1; l <= 13; l++){
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			}//for int l = 1; int l = 1; l 1 l <= 13 l 13 l++ l++ l {
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			}//for {
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			} strs[i * 13 + l - 1] = suit[i] + " " + l strs[i * 13 + l - 1] strs i * 13 + l - 1 i * 13 + l i * 13 i 13 l 1 suit[i] + " " + l suit[i] + " " + l suit[i] suit i " " l judes[i * 13 + l - 1] = false judes[i * 13 + l - 1] judes i * 13 + l - 1 i * 13 + l i * 13 i 13 l 1 false for(int i = 0; i < n; i++){
			String str = br.readLine();
			for(int l = 0; l < strs.length; l++){
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			}//for
		}//for int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			String str = br.readLine();
			for(int l = 0; l < strs.length; l++){
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			}//for
		}//for {
			String str = br.readLine();
			for(int l = 0; l < strs.length; l++){
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			}//for
		} String str = br.readLine(); str br.readLine() br.readLine br for(int l = 0; l < strs.length; l++){
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			}//for int l = 0; int l = 0; l 0 l < strs.length l strs.length strs strs.length l++ l++ l {
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			}//for {
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			} if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if str.equals(strs[l]) str.equals str strs[l] strs l {
					judes[l] = true;
					break;
				} judes[l] = true judes[l] judes l true break; for(int i = 0; i < judes.length; i++){
			if(!judes[i]){
				System.out.println(strs[i]);
			}//if
		}//for int i = 0; int i = 0; i 0 i < judes.length i judes.length judes judes.length i++ i++ i {
			if(!judes[i]){
				System.out.println(strs[i]);
			}//if
		}//for {
			if(!judes[i]){
				System.out.println(strs[i]);
			}//if
		} if(!judes[i]){
				System.out.println(strs[i]);
			}//if !judes[i] judes[i] judes i {
				System.out.println(strs[i]);
			} System.out.println(strs[i]) System.out.println System.out System System.out strs[i] strs i String[] args args public class Main {
	/**
	 * 不足しているカードの発見
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//カードの枚数を入力
		int n = Integer.parseInt(br.readLine());
		//トランプ全てのの配列
		String[] strs = new String[52];
		//カードの有無の配列
		Boolean[] judes = new Boolean[52];
		//スートの配列
		String[] suit = {"S","H","C","D"};
		//有無の配列にまず全て無い状態にする
		for(int i = 0; i < suit.length; i++){
			for(int l = 1; l <= 13; l++){
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			}//for
		}//for
		//入力されたカードを有る状態に刷る
		for(int i = 0; i < n; i++){
			String str = br.readLine();
			for(int l = 0; l < strs.length; l++){
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			}//for
		}//for
		//無いカードを表示する
		for(int i = 0; i < judes.length; i++){
			if(!judes[i]){
				System.out.println(strs[i]);
			}//if
		}//for
	}
} public class Main {
	/**
	 * 不足しているカードの発見
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//カードの枚数を入力
		int n = Integer.parseInt(br.readLine());
		//トランプ全てのの配列
		String[] strs = new String[52];
		//カードの有無の配列
		Boolean[] judes = new Boolean[52];
		//スートの配列
		String[] suit = {"S","H","C","D"};
		//有無の配列にまず全て無い状態にする
		for(int i = 0; i < suit.length; i++){
			for(int l = 1; l <= 13; l++){
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			}//for
		}//for
		//入力されたカードを有る状態に刷る
		for(int i = 0; i < n; i++){
			String str = br.readLine();
			for(int l = 0; l < strs.length; l++){
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			}//for
		}//for
		//無いカードを表示する
		for(int i = 0; i < judes.length; i++){
			if(!judes[i]){
				System.out.println(strs[i]);
			}//if
		}//for
	}
} Main
import java.io.*;
public class Main {
	/**
	 * 不足しているカードの発見
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//カードの枚数を入力
		int n = Integer.parseInt(br.readLine());
		//トランプ全てのの配列
		String[] strs = new String[52];
		//カードの有無の配列
		Boolean[] judes = new Boolean[52];
		//スートの配列
		String[] suit = {"S","H","C","D"};
		//有無の配列にまず全て無い状態にする
		for(int i = 0; i < suit.length; i++){
			for(int l = 1; l <= 13; l++){
				strs[i * 13 + l - 1] = suit[i] + " " + l;
				judes[i * 13 + l - 1] = false;
			}//for
		}//for
		//入力されたカードを有る状態に刷る
		for(int i = 0; i < n; i++){
			String str = br.readLine();
			for(int l = 0; l < strs.length; l++){
				if(str.equals(strs[l])){
					judes[l] = true;
					break;
				}//if
			}//for
		}//for
		//無いカードを表示する
		for(int i = 0; i < judes.length; i++){
			if(!judes[i]){
				System.out.println(strs[i]);
			}//if
		}//for
	}
}