#include #include int n, m, p; int board[7][7][7]; int height[7][7]; int win_black, move_black; int win_white, move_white; int place(int x, int y, int player) { board[x][y][height[x][y]] = player; height[x][y]++; } int inner(int x, int y, int z) { if (x < 0 || y < 0 || z < 0 || x >= n || y >= n || z >= n) { return 0; } return 1; } int check(int x, int y, int z) { int dx, dy, dz, i, found; for (dz = 0; dz <= 1; dz++) { for (dy = ((dz==0)?0:-1); dy <= 1; dy++) { for (dx = ((dz==0&&dy==0)?0:-1); dx <= 1; dx++) { if (dx == 0 && dy == 0 && dz == 0) { continue; } if (board[x][y][z] <= -1) { continue; } if (!inner(x+dx*(m-1), y+dy*(m-1), z+dz*(m-1))) { continue; } found = 1; for (i = 1; i < m; i++) { if (board[x+dx*i][y+dy*i][z+dz*i] != board[x][y][z]) { found = 0; break; } } if (found) { return board[x][y][z]; } } } } return -1; } int check_all() { int x, y, z, result; for (x = 0; x < n; x++) { for (y = 0; y < n; y++) { for (z = 0; z < n; z++) { if ((result = check(x, y, z)) >= 0) { return result; } } } } return -1; } int main() { int i, j, k; int move, x, y, z, result; while (1) { scanf("%d%d%d", &n, &m, &p); if (m == 0 && n == 0 && p == 0) { break; } for (x = 0; x < 7; x++) { for (y = 0; y < 7; y++) { for (z = 0; z < 7; z++) { board[x][y][z] = -1; } height[x][y] = 0; } } win_black = win_white = 0; move_black = move_white = INT_MAX; for (move = 0; move < p; move++) { scanf("%d%d", &x, &y); place(x-1, y-1, move%2); if (!win_black && !win_white && (result = check_all()) >= 0) { if (result == 0) { win_black = 1; if (move_black > move) { move_black = move+1; } } if (result == 1) { win_white = 1; if (move_white > move) { move_white = move+1; } } } } if ((win_black && win_white) || (!win_black && !win_white)) { printf("Draw\n"); } else if (win_black) { printf("Black %d\n", move_black); } else if (win_white) { printf("White %d\n", move_white); } } return 0; }