수열 만들기

시간 제한1초메모리 제한128 MB

문제

두 사람이 삼차원판 틱택토를 둔다. 두 사람은 정육면체 모양의 판에 공을 떨어뜨리며, 같은 색 공을 정해진 길이만큼 한 줄로 이어 놓으려 한다. 각 경기의 기록을 시뮬레이션하여 승자를 판정하는 프로그램을 작성하는 것이 과제이다.

경기는 두 매개변수로 정해진다. 판의 크기 $n$ 과 목표 수열 길이 $m$ 이다.

정확한 규칙은 다음과 같다.

  1. 두 사람이 번갈아 두며, 흑이 먼저 둔다.
  2. 세로 막대(peg)가 $n \times n$ 개 있고, 각 막대에는 공을 최대 $n$ 개까지 쌓을 수 있다. 막대는 $x$, $y$ 좌표로 지정하며 ($1 \le x, y \le n$), 막대 위의 공은 $z$ 좌표로 지정한다 ($1 \le z \le n$). 경기 시작 시 모든 막대는 비어 있다.
  3. 자기 차례에 한 사람은 $n \times n$ 개의 막대 중 하나를 골라 자기 색 공을 떨어뜨린다. 공은 중력을 따른다. 즉, 그 막대에 이미 쌓인 가장 높은 공 바로 위에 놓이며, 막대가 비어 있으면 바닥에 놓인다. 다시 말해 두는 사람은 공의 $x$, $y$ 좌표만 정할 수 있고 $z$ 좌표는 정할 수 없다.
  4. 목표는 $m$-수열을 만드는 것이다. $m$-수열이란 같은 색 공 $m$ 개가 한 직선 위에 연속으로 놓인 것을 말한다. 길이가 $m$ 이상인 줄을 먼저 만든 사람이 즉시 이긴다. 예를 들어 $(5, 1, 2)$, $(5, 2, 2)$, $(5, 3, 2)$ 에 놓인 흑 공은 3-수열을 이룬다.

수열은 축 방향이나 대각선 방향으로 뻗을 수 있다. 서로 반대 방향은 같은 방향으로 보므로, 서로 다른 방향은 정확히 13가지이다.

  • 축 방향 (3가지). 예: $(3, 1, 2)$, $(4, 1, 2)$, $(5, 1, 2)$.
  • 이차원 대각선 (6가지). 예: $(2, 3, 1)$, $(3, 3, 2)$, $(4, 3, 3)$.
  • 삼차원 대각선 (4가지). 예: $(5, 1, 3)$, $(4, 2, 4)$, $(3, 3, 5)$.

각 경기의 기록이 주어지며, 승자를 판정해야 한다.

삼차원 줄은 사람 눈으로 알아채기 어렵기 때문에, 이미 승부가 난 뒤에도 계속 두는 경우가 있다. 승자가 정해진 뒤에 둔 수는 모두 무시해야 한다. 즉 맨 처음 만들어진 $m$-수열만 유효하며, 그 뒤에 만들어진 수열은 승자를 바꾸지 못한다.

경기가 반드시 승리로 끝나는 것은 아니다. 공을 더 놓을 수 있는 막대가 하나도 없으면 무승부이다. 또한 $m$-수열이 하나도 만들어지기 전에 경기를 그만두는 경우도 있는데, 이 역시 무승부이다.

입력

입력은 여러 개의 데이터셋으로 이루어지며, 각 데이터셋은 한 경기의 기록이다.

각 데이터셋은 공백 하나로 구분된 세 양의 정수 $n$, $m$, $p$ 가 적힌 줄로 시작한다. 여기서 $3 \le m \le n \le 7$, $1 \le p \le n^3$ 이다. $n$ 과 $m$ 은 판의 크기와 수열 길이이고, $p$ 는 둔 수의 개수이다.

이어지는 $p$ 개의 줄에는 각각 두 양의 정수 $x$, $y$ ($1 \le x, y \le n$) 가 있다. 차례인 사람이 막대 $(x, y)$ 에 공을 떨어뜨린다는 뜻이다. 한 경기 동안 어떤 막대에도 공이 $n$ 개를 넘게 놓이는 일은 없다.

입력의 끝은 세 개의 0 이 적힌 줄 0 0 0 으로 나타낸다. 이 줄은 데이터셋에 포함되지 않는다.

출력

각 데이터셋마다 정확히 한 줄을 출력한다.

한쪽이 이기면 승자(Black 또는 White), 공백 하나, 그리고 승부가 결정된 수의 번호를 출력한다. 무승부이면 Draw 를 출력한다. 그 밖의 다른 문자는 출력하지 않는다.