#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <complex>
#include <cstring>
#include <cstdlib>
#include <string>
#include <cmath>
#include <queue>
#include <set>
#include <map>
using namespace std;

#define REP(i,n) for(int i=0;i<(int)n;++i)
#define FOR(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define ALL(c) (c).begin(), (c).end()
const int INF = 1<<29;

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) {
  // 1-D
  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 a[p], b[p];
    REP(i, p) {
      cin >> a[i] >> b[i];
      a[i]--; b[i]--;
    }
    bool f = 0;
    int num[n][n];
    memset(num, 0, sizeof(num));
    REP(i, p) {
      vector<int> v(3);
      v[0] = a[i]; v[1] = b[i]; v[2] = num[v[0]][v[1]]++;
      ba[v[0]][v[1]][v[2]] = i%2 + 1;
      if (judge(v,i%2 + 1)) {
        cout << ans[i%2] << " " << i+1 << endl;
        f = 1;
        break;
      }
    }
    if (!f) {
      cout << "Draw" << endl;
    }
  }
}