#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int gi() {
  int x = 0, o = 1;
  char ch = getchar();
  while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
  if (ch == '-') o = -1, ch = getchar();
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  return x * o;
}
int n, m, id[N][N], tt, dx[8] = {1, 1, -1, -1, 2, 2, -2, -2},
                        dy[8] = {2, -2, 2, -2, 1, -1, 1, -1}, x1, xzzakioi, x2,
                        y2;
vector<int> E[N * N];
pair<int, int> pos[N * N];
vector<pair<int, int> > bfs(int s, int t) {
  static int dis[N * N], pre[N * N];
  memset(dis, -1, sizeof(dis));
  memset(pre, 0, sizeof(pre));
  queue<int> q;
  q.push(s);
  dis[s] = 0;
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    for (auto v : E[u]) {
      if (!~dis[v]) dis[v] = dis[u] + 1, pre[v] = u, q.push(v);
    }
  }
  vector<pair<int, int> > ret;
  while (t != s) ret.push_back(pos[t]), t = pre[t];
  reverse(ret.begin(), ret.end());
  return ret;
}
void ran() {
  if (x2 == 7)
    x2 = 9, y2 = 3;
  else if (x2 == 9)
    x2 = 11, y2 = 4;
  else {
    x2 += 2;
    if (y2 == 4)
      ++y2;
    else
      --y2;
  }
}
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) id[i][j] = ++tt, pos[tt] = make_pair(i, j);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
      for (int d = 0; d < 8; d++) {
        int x = i + dx[d], y = j + dy[d];
        if (1 <= x && x <= n && 1 <= y && y <= m)
          E[id[i][j]].push_back(id[x][y]);
      }
  cin >> x1 >> xzzakioi >> x2 >> y2;
  auto sb_tb = bfs(id[x2][y2], id[n / 2 + 1][m / 2]);
  auto sw_tb = bfs(id[x1][xzzakioi], id[n / 2 + 1][m / 2]);
  auto sw_tw = bfs(id[x1][xzzakioi], id[n / 2][m / 2]);
  auto sb_tw = bfs(id[x2][y2], id[n / 2][m / 2]);
  if (((x1 + xzzakioi) & 1) == ((x2 + y2) & 1)) {
    if (int(sb_tb.size()) < int(sw_tw.size())) {
      cout << "BLACK" << endl;
      cin >> x2 >> y2;
      for (auto p : sb_tb) {
        cout << p.first << ' ' << p.second << endl;
        if (p == sb_tb.back()) return 0;
        cin >> x2 >> y2;
      }
    } else if (int(sb_tw.size()) <= int(sw_tw.size())) {
      cout << "BLACK" << endl;
      swap(x1, x2);
      swap(xzzakioi, y2);
      cin >> x2 >> y2;
      if (x2 == -1 && y2 == -1) assert(0);
      for (auto p : sb_tw) {
        cout << p.first << ' ' << p.second << endl;
        assert(abs(p.first - x1) + abs(p.second - xzzakioi) == 3);
        x1 = p.first;
        xzzakioi = p.second;
        if (p == make_pair(x2, y2) || p == make_pair(n / 2 + 1, m / 2))
          return 0;
        cin >> x2 >> y2;
        if (x2 == -1 && y2 == -1) assert(0);
      }
      if (abs(x1 - x2) + abs(xzzakioi - y2) == 3 && x1 != x2 &&
          xzzakioi != y2) {
        cout << x2 << ' ' << y2 << endl;
        return 0;
      }
      auto tmp = bfs(id[x1][xzzakioi], id[n / 2 + 1][m / 2]);
      for (auto p : tmp) {
        cout << p.first << ' ' << p.second << endl;
        assert(abs(p.first - x1) + abs(p.second - xzzakioi) == 3);
        x1 = p.first;
        xzzakioi = p.second;
        if (p == make_pair(x2, y2) || p == tmp.back()) return 0;
        cin >> x2 >> y2;
        if (x2 == -1 && y2 == -1) assert(0);
      }
    } else {
      cout << "WHITE" << endl;
      for (auto p : sw_tw) {
        cout << p.first << ' ' << p.second << endl;
        if (p == sw_tw.back()) return 0;
        cin >> x2 >> y2;
      }
    }
  } else {
    if (int(sw_tw.size()) <= int(sb_tb.size())) {
      cout << "WHITE" << endl;
      for (auto p : sw_tw) {
        cout << p.first << ' ' << p.second << endl;
        if (p == sw_tw.back()) return 0;
        cin >> x2 >> y2;
      }
    } else if (int(sw_tb.size()) <= int(sb_tb.size()) + 1) {
      cout << "WHITE" << endl;
      for (auto p : sw_tb) {
        cout << p.first << ' ' << p.second << endl;
        x1 = p.first;
        xzzakioi = p.second;
        if (p == make_pair(x2, y2) || p == make_pair(n / 2, m / 2)) return 0;
        cin >> x2 >> y2;
      }
      if (abs(x1 - x2) + abs(xzzakioi - y2) == 3 && x1 != x2 &&
          xzzakioi != y2) {
        cout << x2 << ' ' << y2 << endl;
        return 0;
      }
      auto tmp = bfs(id[x1][xzzakioi], id[n / 2][m / 2]);
      for (auto p : tmp) {
        cout << p.first << ' ' << p.second << endl;
        if (p == make_pair(x2, y2) || p == tmp.back()) return 0;
        cin >> x2 >> y2;
      }
    } else {
      cout << "BLACK" << endl;
      cin >> x2 >> y2;
      for (auto p : sb_tb) {
        cout << p.first << ' ' << p.second << endl;
        if (p == sb_tb.back()) return 0;
        cin >> x2 >> y2;
      }
    }
  }
  return 0;
}
