ソース
int ba[7][7][7];
int n, m;
int d[13][3] = {{1,0,0},{0,1,0},{0,0,1},
{1,1,0},{0,1,1},{1,0,1},{1,-1,0},{0,1,-1},{-1,0,1},
{1,1,1},{1,1,-1},{1,-1,1},{-1,1,1}};
bool judge(vector<int> p, int c) {
vector<int> a(3);
REP(i, 13) {
int cnt = 0;
for (int k=-10; k<=10; ++k) {
bool f = 0;
REP(j, 3) {
a[j] = p[j] + d[i][j] * k;
if (a[j] < 0 || a[j] >= n) f = 1;
}
if (f) continue;
if (ba[a[0]][a[1]][a[2]] == c) cnt++;
else cnt = 0;
if (cnt == m) return 1;
}
}
return 0;
}
int main() {
int p;
string ans[2] = {"Black", "White"};
while(cin>>n>>m>>p, n||m||p) {
memset(ba, 0, sizeof (ba));
int num[n][n];
memset(num, 0, sizeof(num));
int x[p], y[p], z[p];
REP(i, p) {
cin >> x[i] >> y[i];
x[i]--; y[i]--;
z[i] = num[x[i]][y[i]]++;
}
bool f = 0;
REP(i, p) {
ba[x[i]][y[i]][z[i]] = i%2 + 1;
vector<int> v(3);
v[0] = x[i]; v[1] = y[i]; v[2] = z[i];
if (judge(v,i%2 + 1)) {
cout << ans[i%2] << " " << i+1 << endl;
f = 1;
break;
}
}
if (!f) {
cout << "Draw" << endl;
}
}
}