#include #include #define BLACK (-1) #define NONE (0) #define WHITE (1) using namespace std; bool is_winning_move(int x, int y, int z, int c[9][9][9], int m) { int move = c[x][y][z]; for(int dz = -1; dz <= +1; dz++) { for(int dy = -1; dy <= +1; dy++) { for(int dx = -1; dx <= +1; dx++) { if(dx == 0 && dy == 0 && dz == 0) continue; int xx = x; int yy = y; int zz = z; while(c[xx-dx][yy-dy][zz-dz] == move) { xx -= dx; yy -= dy; zz -= dz; } int l = 0; while(c[xx][yy][zz] == move) { ++l; xx += dx; yy += dy; zz += dz; } if(l >= m) return true; } } } return false; } int main(void) { ifstream cin("B.txt"); int n, m, p; int c[9][9][9]; while(cin >> n >> m >> p) { if(n == 0 && m == 0 && p == 0) break; for(int x = 0; x < 9; x++) { for(int y = 0; y < 9; y++) { for(int z = 0; z < 9; z++) { c[x][y][z] = NONE; } } } int winner = NONE; int where; int move = BLACK; for(int i = 1; i <= p; i++) { int x, y, z; cin >> x >> y; for(z = 1; c[x][y][z] != NONE; z++) ; c[x][y][z] = move; if(winner == NONE) { if(is_winning_move(x, y, z, c, m)) { winner = move; where = i; } } move = -move; } switch(winner) { case BLACK: cout << "Black " << where << endl; break; case NONE: cout << "Draw" << endl; break; case WHITE: cout << "White " << where << endl; break; } } return 0; }