#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<int, int>;
using vi = vector<int>;
using vvi = vector<vi>;
int dx[] = {-1, -2, -2, -1, +1, +2, +2, +1};
int dy[] = {+2, +1, -1, -2, -2, -1, +1, +2};
int n, m;
bool correct(int x, int y) { return (0 <= x && x < n) && (0 <= y && y < m); }
pair<vvi, vvi> bfs(int sx, int sy) {
  queue<pii> q;
  vvi d(n, vi(m, -1)), p(n, vi(m, -1));
  q.push({sx, sy});
  d[sx][sy] = 0;
  while (!q.empty()) {
    int x = q.front().first, y = q.front().second;
    q.pop();
    for (int i = 0; i < 8; i++) {
      int xx = x + dx[i];
      int yy = y + dy[i];
      if (correct(xx, yy) && d[xx][yy] == -1) {
        q.push({xx, yy});
        d[xx][yy] = d[x][y] + 1;
        p[xx][yy] = (i + 4) % 8;
      }
    }
  }
  return {d, p};
}
void chooseWhite() {
  cout << "WHITE" << endl;
  cout.flush();
}
void chooseBlack() {
  cout << "BLACK" << endl;
  cout.flush();
}
void makeMove(int x, int y) {
  cout << (x + 1) << ' ' << (y + 1) << endl;
  cout.flush();
}
int captureMove(int wx, int wy, int bx, int by) {
  for (int i = 0; i < 8; i++) {
    int wwx = wx + dx[i];
    int wwy = wy + dy[i];
    if (wwx == bx && wwy == by) return i;
  }
  return -1;
}
int winMove(int wx, int wy, vvi &wd, vvi &wp, int bx, int by, vvi &bd,
            vvi &bp) {
  int cm = captureMove(wx, wy, bx, by);
  if (cm != -1) return cm;
  if (((wx + wy) & 1) == ((bx + by) & 1)) {
    if (wd[bx][by] <= wd[wx][wy]) return -1;
    if (bd[bx][by] < wd[wx][wy]) return -1;
    return wp[wx][wy];
  }
  vi winMoves;
  for (int i = 0; i < 8; i++) {
    int wwx = wx + dx[i];
    int wwy = wy + dy[i];
    if (!correct(wwx, wwy)) continue;
    if (winMove(bx, by, bd, bp, wwx, wwy, wd, wp) == -1) winMoves.push_back(i);
  }
  if (winMoves.empty()) return -1;
  int i = winMoves[0];
  for (auto j : winMoves) {
    int wxi = wx + dx[i];
    int wyi = wy + dy[i];
    int wxj = wx + dx[j];
    int wyj = wy + dy[j];
    if (pii(wd[wxj][wyj], bd[wxj][wyj]) < pii(wd[wxi][wyi], bd[wxi][wyi]))
      i = j;
  }
  return i;
}
bool finished(int wx, int wy, int bx, int by, int wtx, int wty) {
  if (wx == bx && wy == by) return true;
  return (wx == wtx && wy == wty);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n >> m;
  int wx, wy, bx, by;
  cin >> wx >> wy >> bx >> by;
  wx--, wy--, bx--, by--;
  int wtx = n / 2 - 1, wty = m / 2 - 1;
  int btx = n / 2, bty = m / 2 - 1;
  vvi wd, wp, bd, bp;
  tie(wd, wp) = bfs(wtx, wty);
  tie(bd, bp) = bfs(btx, bty);
  int i = winMove(wx, wy, wd, wp, bx, by, bd, bp);
  if (i == -1) {
    swap(wx, bx);
    swap(wy, by);
    swap(wd, bd);
    swap(wp, bp);
    swap(wtx, btx);
    swap(wty, bty);
    chooseBlack();
    cin >> bx >> by;
    bx--, by--;
  } else {
    chooseWhite();
  }
  while (true) {
    int i = winMove(wx, wy, wd, wp, bx, by, bd, bp);
    wx += dx[i];
    wy += dy[i];
    makeMove(wx, wy);
    if (finished(wx, wy, bx, by, wtx, wty)) return 0;
    cin >> bx >> by;
    bx--, by--;
    if (bx < 0) return 0;
  }
}
