#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cctype>
#include<math.h>
#include<string>
#include<string.h>
#include<stack>
#include<queue>
#include<vector>
#include<utility>
#include<set>
#include<map>
#include<stdlib.h>
#include<iomanip>

using namespace std;

#define ll long long
#define ld long double
#define EPS 0.0000000001
#define INF 1e9
#define MOD 1000000007
#define rep(i,n) for(int i=0;i<(n);i++)
#define loop(i,a,n) for(i=a;i<(n);i++)
#define all(in) in.begin(),in.end()
#define shosu(x) fixed<<setprecision(x)

typedef vector<int> vi;
typedef vector<string> vs;
typedef pair<int,int> pii;
typedef vector<vi> vvi;

int main(void) {
    int n, m ,p;
    while(cin >> n >> m >> p, n){
        vi xx(p),yy(p);
        rep(i,p) cin >> xx[i] >> yy[i];
        bool ans = true;
        vector<vvi> a(10,vvi(10));
        rep(i,p){
            int x = xx[i];
            int y = yy[i];
            int z = a[x][y].size();
            int turn = i%2;
            a[x][y].push_back(turn);
            //cout << x << " " << y << " " << z << " " << a[x][y][z] << endl;
            bool c = false;
            int j,k;
            
            // x only
            j = k = 1;
            while(x+j <= n && a[x+j][y].size() > z && a[x+j][y][z] == turn) j++;
            while(x-k > 0 && a[x-k][y].size() > z && a[x-k][y][z] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;
            // y only
            j = k = 1;
            while(y+j <= n && a[x][y+j].size() > z && a[x][y+j][z] == turn) j++;
            while(y-k > 0 && a[x][y-k].size() > z && a[x][y-k][z] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;
            // z only
            j = k = 1;
            while(z+j < a[x][y].size() && a[x][y][z+j] == turn) j++;
            while(z-k >= 0 && a[x][y][z-k] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;
            // x++ y++
            j = k = 1;
            while(x+j <= n && y+j <= n && a[x+j][y+j].size() > z && a[x+j][y+j][z] == turn) j++;
            while(x-k > 0 && y-k > 0 && a[x-k][y-k].size() > z && a[x-k][y-k][z] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;
            // x++ y--
            j = k = 1;
            while(x+j <= n && y-j > 0 && a[x+j][y-j].size() > z && a[x+j][y-j][z] == turn) j++;
            while(x-k > 0 && y+k <= n && a[x-k][y+k].size() > z && a[x-k][y+k][z] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;
            // y++ z++
            j = k = 1;
            while(y+j <= n && z+j < a[x][y+j].size() && a[x][y+j][z+j] == turn) j++;
            while(y-k > 0 && z-k >= 0 && z-k < a[x][y-k].size() && a[x][y-k][z-k] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;
            // y++ z--
            j = k = 1;
            while(y+j <= n && z-j >= 0 && z-j < a[x][y+j].size() && a[x][y+j][z-j] == turn) j++;
            while(y-k > 0 && z+k < a[x][y-k].size() && a[x][y-k][z+k] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;
            // x++ z++
            j = k = 1;
            while(x+j <= n && z+j < a[x+j][y].size() && a[x+j][y][z+j] == turn) j++;
            while(x-k > 0 && z-k >= 0 && z-k < a[x-k][y].size() && a[x-k][y][z-k] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;
            // x++ z--
            j = k = 1;
            while(x+j <= n && z-j >= 0 && z-j < a[x+j][y].size() && a[x+j][y][z-j] == turn) j++;
            while(x-k > 0 && z+k < a[x-k][y].size() && a[x-k][y][z+k] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;
            // x++ y++ z++
            j = k = 1;
            while(x+j <= n && y+j <= n && z+j < a[x+j][y+j].size() && a[x+j][y+j][z+j] == turn) j++;
            while(x-k > 0 && y-k > 0 && z-k >= 0 && z-k < a[x-k][y-k].size() && a[x-k][y-k][z-k] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;
            // x++ y++ z--
            j = k = 1;
            while(x+j <= n && y+j <= n && z-j >=0 && z-j < a[x+j][y+j].size() && a[x+j][y+j][z-j] == turn) j++;
            while(x-k > 0 && y-k > 0 && z+k < a[x-k][y-k].size() && a[x-k][y-k][z+k] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;
            // x++ y-- z++
            j = k = 1;
            while(x+j <= n && y-j > 0 && z+j < a[x+j][y-j].size() && a[x+j][y-j][z+j] == turn) j++;
            while(x-k > 0 && y+k <= n && z-k >= 0 && z-k < a[x-k][y+k].size() && a[x-k][y+k][z-k] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;
            // x++ y-- z--
            j = k = 1;
            while(x+j <= n && y-j > 0 && z-j >=0 && z-j < a[x+j][y-j].size() && a[x+j][y-j][z-j] == turn) j++;
            while(x-k > 0 && y+k <= n && z+k < a[x-k][y+k].size() && a[x-k][y+k][z+k] == turn) k++;
            j--, k--;
            //cout << j << " " << k << endl;
            if(j+k+1 >= m) c = true;

            if(c){
                ans = false;
                cout << (turn?"White":"Black") << " " << i+1 << endl;
                break;
            }
        }
        if(ans){
            cout << "Draw" << endl;
        }
    }
}



Measured memory_bytes: 3196