포커에서 각 플레이어는 5장의 카드를 손에 듭니다. 마지막 라운드가 끝나면 모든 플레이어가 자신의 카드를 공개하고, 가장 가치가 높은 패를 가진 플레이어가 승리합니다. 여러분의 과제는 각 플레이어의 포커 패를 읽어 상대적인 가치에 따라 순위를 매기고, 가장 가치가 높은 패부터 낮은 패 순서로 출력하는 것입니다.
포커는 4개의 무늬로 균등하게 나눈 52장의 카드로 진행합니다: 하트(♥), 스페이드(♠), 다이아몬드(♦), 클럽(♣). 각 무늬는 13장의 카드를 가지며, 각 카드에는 가치를 결정하는 랭크가 있습니다. 높은 것부터 낮은 것까지 순서는 다음과 같습니다: 에이스(높음), 킹, 퀸, 잭, 10, 9, 8, 7, 6, 5, 4, 3, 2, 에이스(낮음). 각 무늬에는 에이스가 한 장뿐이고 보통 가장 높은 카드로 취급되지만, 어떤 경우에는 에이스가 가장 낮은 카드로 취급됩니다. 무늬 자체는 카드의 가치에 영향을 주지 않으며, 오직 그 패가 플러시나 스트레이트 플러시에 해당하는지를 판정하는 데만 사용됩니다(아래 참고).
모든 포커 패는 그 안에 포함된 카드 조합에 따라 아홉 가지 등급 중 정확히 하나로 분류됩니다. 등급이 높은 패는 개별 카드의 랭크와 무관하게 항상 등급이 낮은 패를 이깁니다. 두 패가 같은 등급이면 개별 카드의 랭크로 우열을 가리며, 각 등급마다 고유한 동점 처리 규칙이 있습니다. 패 안에서 카드가 놓인 순서는 등급에 영향을 주지 않습니다. 등급은 가장 가치가 높은 것부터 낮은 것까지 아래와 같습니다.
첫 번째 줄에는 데이터 집합의 개수를 나타내는 정수 N(1 ≤ N ≤ 100)이 주어집니다. 각 데이터 집합은 그 집합에 포함된 포커 패의 개수를 나타내는 정수 M(1 ≤ M ≤ 100)이 적힌 줄로 시작합니다. 이어지는 M개의 줄에는 각각 하나의 패가 주어지며, 한 패는 공백으로 구분된 두 글자짜리 카드 다섯 장으로 이루어집니다.
A, K, Q, J 는 각각 에이스, 킹, 퀸, 잭을 의미하고, 0(숫자 0)은 10을, 2부터 9까지는 해당 숫자 랭크를 의미합니다.H, S, D, C 는 각각 하트, 스페이드, 다이아몬드, 클럽을 의미합니다.한 패 안에서 같은 카드(랭크와 무늬가 모두 같은 카드)가 두 번 이상 나타나는 일은 없습니다.
각 데이터 집합에 대해 먼저 Data Set #k 라는 제목 줄을 출력합니다. 여기서 k는 첫 번째 데이터 집합이면 1, 두 번째면 2와 같이 이어집니다. 제목 다음에는 그 데이터 집합의 패들을 가장 가치가 높은 것부터 낮은 것 순서로 한 줄에 하나씩 출력합니다. 각 패 안의 카드는 입력에서 읽은 순서 그대로 출력해야 합니다. 한 데이터 집합 안의 어떤 두 패도 가치가 같지 않으므로, 정렬 순서는 항상 유일하게 정해집니다.