import std.stdio;
import std.c.stdio;
import std.range;
import std.array;
import std.functional;
import std.algorithm;
import std.conv;
import std.container;
import std.math;
import std.numeric;
import std.string;
import std.c.string;
import std.regex;
import std.typecons;
 
void main() {
    int N, M, P;
    alias Tuple!(int, int) Pair;
    Pair[] Pos;

    bool input() {
        Pos = [];
        readf("%d %d %d\n", &N, &M, &P);
        if (N == 0 && M == 0 && P == 0) return false;
        for (int i = 0; i < P; i++) {
            int x, y; readf("%d %d\n", &x, &y);
            x--; y--;
            Pos ~= Pair(x, y);
        }
        return true;
    }

    void solve() {
        int[][][] F = new int[][][](N, N, N);

        void dump() {
            for (int z = 0; z < N; z++) {
                for (int x = 0; x < N; x++) {
                    for (int y = 0; y < N; y++) {
                        printf("%d ", F[x][y][z]);
                    }
                    printf("\n");
                }
                printf("\n");
            }
            printf("\n");
        }

        int Check() {
            const dx = [1, 0, 0, 1,  1, 1,  1, 0,  0, 1,  1,  1,  1],
                  dy = [0, 1, 0, 1, -1, 0,  0, 1,  1, 1, -1,  1, -1],
                  dz = [0, 0, 1, 0,  0, 1, -1, 1, -1, 1,  1, -1, -1];
            // 0 => Draw, 1 => Black, 2 => White
            for (int i = 0; i < N; i++) {
                for (int j = 0; j < N; j++) {
                    for (int k = 0; k < N; k++) {
                        int X = F[i][j][k];
                        if (X == 0) continue;
                        for (int a = 0; a < 13; a++) {
                            int Count = 0;
                            int x = i, y = j, z = k;
                            while (0 <= x && x < N &&
                                   0 <= y && y < N &&
                                   0 <= z && z < N && F[x][y][z] == X) {
                                Count++;
                                x += dx[a];
                                y += dy[a];
                                z += dz[a];
                            }
                            if (Count >= M) {
                                return X;
                            }
                        }
                    }
                }
            }
            return 0;
        }

        for (int i = 0; i < P; i++) {
            int bw = i % 2 + 1; // 1 => Black, 2 => White
            int x = Pos[i][0], y = Pos[i][1];
            for (int j = 0; ; j++) {
                if (F[x][y][j] == 0) {
                    F[x][y][j] = bw;
                    break;
                }
            }
            int Winner = Check();
            if (Winner == 1) {
                printf("Black %d\n", i + 1);
                return;
            } else if (Winner == 2) {
                printf("White %d\n", i + 1);
                return;
            }
        }
        printf("Draw\n");
    }

    while (input()) solve();
}