오디세우스는 호메로스의 서사시에 나오는 그리스 영웅이다. 트로이 전쟁이 끝난 뒤 그는 여러 해 동안 바다를 떠돌며 배가 부서지고 괴물과 싸웠다. 그 여정에서 널리 알려진 대목 하나가 세이렌의 섬을 지나는 장면이다. 세이렌의 노래를 들은 뱃사람은 예외 없이 바위 쪽으로 배를 돌렸고, 배는 바위에 부딪혀 가라앉았다. 키르케에게 경고를 들었지만 오디세우스는 그 노래가 궁금했다. 그래서 부하들에게 자신을 돛대에 단단히 묶게 하고, 부하들의 귀는 밀랍으로 막게 하고, 무슨 일이 있어도 자신을 풀어 주지 말라고 일렀다.
오디세우스가 세이렌의 노래를 그토록 듣고 싶어 한 이유 중 하나는 그 선율의 조성을 분석하고 싶었기 때문일 것이다. 음의 나열이 어느 조에 가장 잘 맞는지 찾는 프로그램을 써서 그를 돕자. 각 조에서 각 음이 얼마나 어울리는지를 벌점으로 나타낸 표가 주어진다. 이어서 선율이 여러 개 주어지고, 선율마다 가장 잘 맞는 조를 정해야 한다.
12개의 음은 순서대로 C, C#, D, D#, E, F, F#, G, G#, A, A#, B이다. 음마다 장조와 단조가 있고 선법도 있는데, 선법은 오디세우스의 시대에 더 흔했을 것이다. 조는 오로지 벌점 표로만 주어지므로 장조나 단조가 보통 어떤 모양인지 알 필요는 없다.
선율의 누적 벌점은 선율에 등장하는 음의 벌점을 등장 순서대로 모두 더한 값이다. 같은 음이 여러 번 나오면 나온 횟수만큼 더한다.
실제라면 곡 전체와 중간의 전조까지 함께 살펴야 하지만, 여기서는 그렇게까지 하지 않는다.
첫 줄에 데이터 집합의 개수 K가 주어진다. 이어서 K개의 데이터 집합이 다음 형식으로 주어진다.
데이터 집합의 첫 줄에는 두 정수 n과 m이 공백 하나로 구분되어 주어진다 (1≤n,m≤100). n은 고를 수 있는 조의 개수이고, m은 주어지는 선율의 개수이다.
다음 n개의 줄에는 조가 하나씩 주어진다. 각 줄에는 실수 12개가 주어지며, 순서대로 C, C#, D, D#, E, F, F#, G, G#, A, A#, B를 그 조에서 보았을 때의 벌점이다.
다음 m개의 줄에는 선율이 하나씩 주어진다. 선율은 길이가 100 이하인 문자열이고, 대문자와 # 기호로만 이루어진다. 공백은 없고, 위에서 말한 12개의 음만 나온다. 즉 E#이나 B# 같은 표기는 나오지 않는다.
각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력한다. x는 그 데이터 집합의 번호이고 1부터 센다.
그다음 선율마다 누적 벌점이 가장 작은 조의 번호를 한 줄에 하나씩, 입력에 주어진 순서대로 출력한다. 조의 번호는 입력에 나온 순서대로 1부터 n까지이다. 가장 잘 맞는 조가 둘 이상인 경우는 없으므로 답은 항상 유일하다.
각 데이터 집합의 출력 뒤에 빈 줄을 하나 출력한다.