#include <bits/stdc++.h>
using namespace std;
const int dx[8] = {1, 1, -1, -1, 2, 2, -2, -2},
          dy[8] = {2, -2, 2, -2, 1, -1, 1, -1};
const int MAXN = 1002;
const bool WHITE = 0, BLACK = 1;
int N, M;
pair<int, int> W, B, F;
int dist[MAXN][MAXN], dist1[MAXN][MAXN], fr, rr;
pair<int, int> last[MAXN][MAXN], last1[MAXN][MAXN], qu[MAXN * MAXN];
bool mouse, winner, finalPhase = 0, sprint = 0;
void whiteMove() {
  if (winner == BLACK) {
    cin >> W.first >> W.second;
    return;
  }
  if (sprint) {
    W = last1[W.first][W.second];
    cout << W.first << ' ' << W.second << endl;
    if (!dist1[W.first][W.second]) exit(0);
    return;
  }
  for (int d = 0; d <= 7; ++d) {
    if (W.first + dx[d] == B.first && W.second + dy[d] == B.second) {
      cout << B.first << ' ' << B.second << endl;
      exit(0);
    }
  }
  if (W == F && mouse != winner) finalPhase = 1;
  if (finalPhase) {
    assert(mouse == BLACK);
    if (W == F)
      W = pair<int, int>(N / 2, M / 2 - 2);
    else if (W == pair<int, int>(N / 2, M / 2 - 2))
      W = pair<int, int>(N / 2 + 2, M / 2 - 1);
    else
      W = pair<int, int>(N / 2, M / 2);
    cout << W.first << ' ' << W.second << endl;
    if (W == pair<int, int>(N / 2, M / 2)) exit(0);
    return;
  }
  W = last[W.first][W.second];
  cout << W.first << ' ' << W.second << endl;
  if (W == F) {
    if (mouse != winner)
      finalPhase = 1;
    else
      exit(0);
  }
}
void blackMove() {
  if (winner == WHITE) {
    cin >> B.first >> B.second;
    return;
  }
  if (sprint) {
    B = last1[B.first][B.second];
    cout << B.first << ' ' << B.second << endl;
    if (!dist1[B.first][B.second]) exit(0);
    return;
  }
  for (int d = 0; d <= 7; ++d) {
    if (W.first + dx[d] == B.first && W.second + dy[d] == B.second) {
      cout << W.first << ' ' << W.second << endl;
      exit(0);
    }
  }
  if (B == F && mouse != winner) finalPhase = 1;
  if (finalPhase) {
    assert(mouse == WHITE);
    if (B == F)
      B = pair<int, int>(N / 2 + 1, M / 2 - 2);
    else if (B == pair<int, int>(N / 2 + 1, M / 2 - 2))
      B = pair<int, int>(N / 2 - 1, M / 2 - 1);
    else
      B = pair<int, int>(N / 2 + 1, M / 2);
    cout << B.first << ' ' << B.second << endl;
    if (B == pair<int, int>(N / 2 + 1, M / 2)) exit(0);
    return;
  }
  B = last[B.first][B.second];
  cout << B.first << ' ' << B.second << endl;
  if (B == F) {
    if (mouse != winner)
      finalPhase = 1;
    else
      exit(0);
  }
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> N >> M >> W.first >> W.second >> B.first >> B.second;
  mouse = ((W.first ^ W.second ^ B.first ^ B.second) & 1) ? BLACK : WHITE;
  F = pair<int, int>(N / 2 + mouse, M / 2);
  for (int i = 1; i <= N; ++i)
    for (int j = 1; j <= M; ++j) dist[i][j] = dist1[i][j] = MAXN * MAXN;
  dist[F.first][F.second] = 0, dist1[N + 1 - F.first][F.second] = 0;
  fr = rr = 0;
  qu[++rr] = F;
  while (fr < rr) {
    pair<int, int> cur = qu[++fr];
    for (int d = 0; d <= 7; ++d) {
      int first = cur.first + dx[d], second = cur.second + dy[d];
      if (first <= 0 || first > N || second <= 0 || second > M) continue;
      if (dist[first][second] <= dist[cur.first][cur.second] + 1) continue;
      dist[first][second] = dist[cur.first][cur.second] + 1;
      last[first][second] = cur;
      qu[++rr] = pair<int, int>(first, second);
    }
  }
  fr = rr = 0;
  qu[++rr] = pair<int, int>(N + 1 - F.first, F.second);
  while (fr < rr) {
    pair<int, int> cur = qu[++fr];
    for (int d = 0; d <= 7; ++d) {
      int first = cur.first + dx[d], second = cur.second + dy[d];
      if (first <= 0 || first > N || second <= 0 || second > M) continue;
      if (dist1[first][second] <= dist1[cur.first][cur.second] + 1) continue;
      dist1[first][second] = dist1[cur.first][cur.second] + 1;
      last1[first][second] = cur;
      qu[++rr] = pair<int, int>(first, second);
    }
  }
  if (mouse == WHITE) {
    if (dist[W.first][W.second] > dist1[B.first][B.second]) {
      winner = BLACK;
      sprint = 1;
    } else {
      winner =
          (dist[W.first][W.second] < dist[B.first][B.second]) ? WHITE : BLACK;
    }
  } else {
    if (dist1[W.first][W.second] <= dist[B.first][B.second]) {
      winner = WHITE;
      sprint = 1;
    } else {
      winner = (dist[B.first][B.second] < dist[W.first][W.second] - 1) ? BLACK
                                                                       : WHITE;
    }
  }
  cout << (winner == WHITE ? "WHITE" : "BLACK") << endl;
  while (true) {
    whiteMove();
    blackMove();
  }
}
