바둑은 2,000년도 더 전에 중국에서 시작된 두 사람이 겨루는 보드 게임이다. 규칙은 비교적 단순하지만 전략이 깊은 게임으로 알려져 있다.
두 사람은 가로 세로 N개의 선이 만드는 격자의 빈 교점에 검은 돌과 흰 돌을 번갈아 놓는다. 자기 돌로 상대보다 넓은 영역을 차지하는 것이 목표다.
가로선은 위에서 아래로 1부터 N까지 번호를 붙이고, 세로선은 왼쪽에서 오른쪽으로 1부터 N까지 번호를 붙인다.
두 교점 또는 두 돌이 위, 아래, 왼쪽, 오른쪽으로 맞닿아 있으면 인접하다고 한다. 어떤 집합의 임의의 두 원소가 그 집합 안의 인접한 교점 또는 돌만 거쳐 이어질 때, 이 집합을 연결 그룹이라고 한다.
빈 교점으로 이루어진 연결 그룹이나 돌로 이루어진 연결 그룹에 인접한 모든 교점이 어떤 색의 돌로 채워져 있으면, 그 그룹은 그 색에 둘러싸였다고 한다.
한 사람의 영역은 자기 돌이 놓인 교점 전부와, 자기 돌 색에 둘러싸인 빈 교점 연결 그룹 전부로 이루어진다.
간단하게 바꾼 규칙은 다음과 같다.
그룹에 인접한 교점이 아예 없을 수도 있다(N=1인 경우). 이때도 같은 정의를 그대로 적용한다. 인접한 빈 교점이 하나도 없는 돌 그룹은 잡히고, 인접한 돌이 하나도 없는 빈 교점 그룹은 어느 쪽의 영역도 아니다.
판의 크기와 수의 순서가 주어진다. 이 순서를 검사해서 잘못된 첫 번째 수의 번호를 출력한다. 번호는 1부터 시작한다. 이미 돌이 놓인 교점에 돌을 놓으려고 하는 수가 잘못된 수다. 모든 수가 올바르면 마지막 수를 둔 뒤 두 사람의 영역 크기를 출력한다.
첫째 줄에 테스트 케이스의 개수 T가 주어진다(1≤T≤100). 이어서 T개의 테스트 케이스가 주어진다.
각 테스트 케이스는 S+1개의 줄로 이루어진다. 첫째 줄에는 판의 크기 N과 검사할 수의 개수 S가 주어진다(1≤N≤20, 1≤S≤1000). 이어지는 S개의 줄에는 각각 두 정수가 주어진다. 두 정수가 모두 0이면 패스이고, 그렇지 않으면 그 수를 둔 가로선 번호 R과 세로선 번호 C다(1≤R,C≤N).
각 줄이 한 번의 차례에 해당한다. 패스도 차례를 소모하므로 첫째 줄은 흑, 둘째 줄은 백, 셋째 줄은 다시 흑의 차례다.
각 테스트 케이스마다 다음 두 가지 중 하나를 한 줄에 출력한다.
Invalid X를 출력한다. X는 가장 먼저 나오는 잘못된 수의 번호다. 차례를 상대에게 넘기는 패스는 수로 세지 않는다.B W를 출력한다. B와 W는 각각 흑과 백의 영역 크기다.N=4인 판을 생각해 보자. 흑이 (1, 2), 백이 (1, 1), 이어서 흑이 (2, 1)에 둔다. (1, 1)의 백돌에 인접한 교점은 (1, 2)와 (2, 1)뿐이고 둘 다 흑돌이므로 이 백돌은 잡힌다. 백은 (1, 1)에 다시 둘 수 있다. 그 교점이 비었으니 올바른 수지만, 놓는 순간 흑에게 둘러싸여 자살수로 제거된다. 다음으로 흑이 (2, 2)에 두면 판에는 흑돌 세 개가 남는다. 남은 빈 교점 열세 개는 두 그룹으로 나뉘고 두 그룹 모두 흑돌에만 인접하므로, 흑의 영역은 16, 백의 영역은 0이다.