#include <cstdio>
#include <iostream>
#include <string>
#include <sstream>
#include <stack>
#include <algorithm>
#include <cmath>
#include <queue>
#include <map>
#include <set>
#include <cstdlib>
#include <bitset>
#include <tuple>
#include <assert.h>
#include <deque>
#include <bitset>
#include <iomanip>
#include <limits>
#include <chrono>
#include <random>
#include <array>
#include <unordered_map>
#include <functional>
#include <complex>
#include <numeric>
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }

constexpr long long MAX = 5100000;
constexpr long long INF = 1LL << 60;
constexpr int inf = 1 << 28;
//constexpr long long mod = 1000000007LL;
//constexpr long long mod = 998244353LL;

using namespace std;
typedef unsigned long long ull;
typedef long long ll;

int dx[13] = { 1,0,0,1,1,1,1,0,0,1,1,1,1 };
int dy[13] = { 0,1,0,1,-1,0,0,1,1,1,1,-1,-1 };
int dz[13] = { 0,0,1,0,0,1,-1,1,-1,1,-1,1,-1 };

bool check(vector<vector<vector<ll>>>& b, int t, int M) {
	int n = b.size();
	for (int x = 0; x < n; x++) {
		for (int y = 0; y < n; y++) {
			for (int z = 0; z < n; z++) {
				if (b[x][y][z] != t) continue;
				for (int i = 0; i < 13; i++) {
					int cnt = 1;
					int nx = x;
					int ny = y;
					int nz = z;
					while (1) {
						nx = nx + dx[i];
						ny = ny + dy[i];
						nz = nz + dz[i];
						if (nx < 0 or nx >= n or ny < 0 or ny >= n or nz < 0 or nz >= n) break;
						if (b[nx][ny][nz] == t) cnt++;
						else break;
						if (cnt >= M) return true;
					}
				}
			}
		}
	}
	return false;
}

int main()
{
	/*
	cin.tie(nullptr);
	ios::sync_with_stdio(false);
	*/

	int kkt = 89;
	while (kkt) {
		ll n, m, p; scanf("%lld %lld %lld", &n, &m, &p); if (n == 0 and m == 0 and p == 0) break;
		vector<vector<vector<ll>>> board(n, vector<vector<ll>>(n, vector<ll>(n)));
		vector<vector<ll>> next(n, vector<ll>(n));
		vector<pair<ll, ll>> vp(p);;
		for (int i = 0; i < p; i++) {
			scanf("%lld %lld", &vp[i].first, &vp[i].second);
			vp[i].first--;
			vp[i].second--;
		}
		int win = 0;
		int res = 0;
		for (int i = 0; i < p; i++) {
			int x = vp[i].first;
			int y = vp[i].second;
			int t = (i % 2 == 0) ? 1 : 2;
			if (next[x][y] == n) {
				break;
			}
			board[x][y][next[x][y]] = t;
			next[x][y]++;
			if (check(board, t, m)) {
				win = t;
				res = i + 1;
				break;
			}
		}
		if (win == 0) puts("Draw");
		else if (win == 1) printf("Black %d\n",res);
		else printf("White %d\n",res);
	}
	return 0;

}

