시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
데이브와 할이 카드로 게임을 한다. 데이브에게는 카드가 N장 있고, N은 3의 배수(N=3K)이며, 카드에는 1부터 N까지의 번호가 적혀 있다.
각 카드의 양면에는 같은 번호가 적혀 있고, 서로 같은 번호를 가진 카드는 없으며, 카드는 처음에 번호 오름차순으로 정렬되어 있다.
먼저 할이 집합 {1,2,…,N} 중에서 수 하나를 마음속으로 정한다.
그다음 데이브가 모든 카드를 앞면이 보이도록 K개의 행과 3개의 열로 이루어진 격자에 놓는다. 배치는 행 단위로 이루어진다. 첫 번째 행에는 왼쪽에서 오른쪽으로 카드 1, 카드 2, 카드 3을 놓고, 다음 세 장으로 두 번째 행을 채우며, 이런 식으로 마지막 카드가 마지막 행을 채울 때까지 계속한다.
그러면 할은 자신이 정한 수가 적힌 카드가 지금 몇 번째 열(첫째, 둘째, 셋째)에 있는지 데이브에게 말한다.
데이브는 카드를 열 단위로 모은다. 먼저 첫째 열 전체를 위에서 아래로(행 1, 행 2, ..., 행 K) 걷고, 이어서 둘째 열을 같은 방식으로, 마지막으로 셋째 열을 걷는다. 섞지 않고, 이렇게 모은 더미를 앞에서와 똑같이 행 단위로 다시 탁자 위에 배치한다.
이 과정을 반복한다. 데이브가 배치를 끝낼 때마다 할은 자신의 카드가 있는 열을 다시 알려 준다. 할의 모든 대답이 끝난 뒤에도 여러 수가 그가 말한 모든 내용과 여전히 일치할 수 있다.
할의 대답을 이용하여 할이 정한 수의 후보가 될 수 있는 수들의 가장 작은 집합을 구하는 프로그램을 작성하시오.
첫째 줄에 카드의 수 N이 주어진다 (3≤N≤999, N은 3의 배수).
둘째 줄에 배치 횟수, 즉 할의 대답 횟수 D가 주어진다 (1≤D≤10).
이어지는 D개의 줄에는 각 배치에 대한 할의 대답이 순서대로 주어지며, 각 줄에는 first, second, third 중 하나의 단어가 있다.
할이 정한 수의 후보가 될 수 있는 모든 수를 오름차순으로, 공백 하나로 구분하여 한 줄에 출력한다.