/**
 * ????¶???????????????????????????????

???????????±?????¨?????????????????????????????????????????¨????????¨?????????52?????????????????????????????? n
???????????????????????????????????????????????????????????? n
????????????????????\?????¨??????????¶??????????????????????????????????????????°?????????????????????????????????

???????????????????????£?????????????????????????????§??????????????????52?????????????????§??????

52??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????13??????????????????????????????

Input
?????????????????????????????£??????????????????????????° n (n ??? 52)????????????????????????

?¶??????? n
??????????????????????????????????????????????????????????????????????????????????????§???????????????????????¨??´??°??§??????????????????????????????????????¨?????????????????????'S'???????????????'H'???????????????'C'???????????????'D'??§??¨???????????????????????´??°??????????????????????????????(1
??? 13)?????¨??????????????????

Output
?¶??????????????????????????????????1???????????????????????????????????????????????\?????¨????§?????????????????????§???????????????????????¨??´??°??§?????????????????????????????????????????\????????¨????????¨????????????

????????????????????????????????????????????????????????????????????§???????????????????????????
?????????????????´??????????????????????°????????????????????????????
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
 */

#include <iostream>
#include <sstream>
#include <vector>
#include <unordered_map>

int main(int argc, char const *argv[]) {
  unsigned int n = 1;
  std::string Param;
  std::unordered_map<std::string, unsigned int> SuiteTable = {{"S", 0}, {"H", 1}, {"C", 2}, {"D", 3}};
  std::unordered_map<unsigned int, std::string> SuiteTableR;
  for (const auto& m : SuiteTable) {
    SuiteTableR.emplace(m.second, m.first);
  }

  while (true) {

    getline(std::cin, Param);
    std::istringstream iss(Param);
    iss >> n;

    if (n < 1 || n > 52) {
      std::cout << "Error: 1 <= n <= 52" << std::endl;
    } else {
      break;
    }
  }

  std::vector<std::vector<unsigned int>> Cards(
      4, std::vector<unsigned int>(13, 0));
  std::string Suite;
  unsigned int Number;
  size_t Count = n;
  unsigned int SuiteIndex;

  while (Count) {
    getline(std::cin, Param);
    std::istringstream iss(Param);
    iss >> Suite >> Number;

    if (!(Suite == "S" || Suite == "H" || Suite == "C" || Suite == "D") ||
        Number > 13 || Number == 0) {
      std::cout << "Error: Suite == S, H, C, D 1 <= Number <= 13" << std::endl;
    } else {
      Count--;
      auto itr = SuiteTable.find(Suite);
      SuiteIndex = itr->second;
      Cards[SuiteIndex][Number - 1] = 1;
    }
  }
  for (size_t i = 0; i < 4; i++) {
    for (size_t j = 0; j < 13; j++) {
      if (Cards[i][j] == 0) {
        auto itr = SuiteTableR.find(i);
        Suite = itr->second;
        Number = j + 1;
        std::cout << Suite << " " << Number << std::endl;
      }
    }
  }

  return 0;
}

Measured memory_bytes: 3164