#include <bits/stdc++.h>
using namespace std;
const int dx[] = {1, 1, -1, -1, 2, 2, -2, -2},
          dy[] = {2, -2, 2, -2, 1, -1, 1, -1};
const int N = 1005;
using pii = pair<int, int>;
int n, m, wx, wy, bx, by, disw[N][N], disb[N][N];
void bfs(int (&dis)[N][N], int sx, int sy) {
  memset(dis, -1, sizeof(dis));
  queue<pii> q;
  q.push(pii(sx, sy));
  dis[sx][sy] = 0;
  while (!q.empty()) {
    pii nd = q.front();
    q.pop();
    for (int i = 0; i < 8; i++) {
      int nx = nd.first + dx[i], ny = nd.second + dy[i];
      if (nx <= 0 || nx > n || ny <= 0 || ny > m || dis[nx][ny] != -1) continue;
      dis[nx][ny] = dis[nd.first][nd.second] + 1;
      q.push(pii(nx, ny));
    }
  }
}
inline bool can_reach(int x1, int y1, int x2, int y2) {
  return (abs(x1 - x2) == 1 && abs(y1 - y2) == 2) ||
         (abs(x1 - x2) == 2 && abs(y1 - y2) == 1);
}
void move(int dis[N][N], int sx, int sy, int ex, int ey, int tx, int ty) {
  while (sx != tx || sy != ty) {
    for (int i = 0; i < 8; i++) {
      int nx = sx + dx[i], ny = sy + dy[i];
      if (nx <= 0 || nx > n || ny <= 0 || ny > m ||
          dis[nx][ny] != dis[sx][sy] - 1 || can_reach(nx, ny, ex, ey))
        continue;
      cout << nx << ' ' << ny << endl;
      sx = nx;
      sy = ny;
      if (sx == ex && sy == ey) exit(0);
      if (sx == tx && sy == ty) break;
      cin >> ex >> ey;
      break;
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> m;
  cin >> wx >> wy >> bx >> by;
  bfs(disw, n / 2, m / 2);
  bfs(disb, n / 2 + 1, m / 2);
  if (disw[wx][wy] < disw[bx][by] && disw[wx][wy] <= disb[bx][by]) {
    cout << "WHITE" << endl;
    move(disw, wx, wy, bx, by, n / 2, m / 2);
    return 0;
  }
  if (disb[bx][by] + 1 < disb[wx][wy] && disb[bx][by] + 1 <= disw[wx][wy]) {
    cout << "BLACK" << endl;
    cin >> wx >> wy;
    move(disb, bx, by, wx, wy, n / 2 + 1, m / 2);
    return 0;
  }
  if ((wx + wy) % 2 != (bx + by) % 2) {
    cout << "WHITE" << endl;
    if (disw[wx][wy] <= disb[bx][by])
      move(disw, wx, wy, bx, by, n / 2, m / 2);
    else {
      move(disb, wx, wy, bx, by, n / 2 + 1, m / 2);
      if (wx != n / 2 + 1 || wy != m / 2) cin >> bx >> by;
      wx = n / 2 + 1;
      wy = m / 2;
      if (can_reach(wx, wy, bx, by)) {
        cout << bx << ' ' << by << endl;
        return 0;
      }
      move(disw, wx, wy, bx, by, n / 2, m / 2);
    }
  } else {
    cout << "BLACK" << endl;
    cin >> wx >> wy;
    if (disb[bx][by] <= disw[wx][wy])
      move(disb, bx, by, wx, wy, n / 2 + 1, m / 2);
    else {
      move(disw, bx, by, wx, wy, n / 2, m / 2);
      if (bx != n / 2 || by != m / 2) cin >> wx >> wy;
      bx = n / 2;
      by = m / 2;
      if (can_reach(wx, wy, bx, by)) {
        cout << wx << ' ' << wy << endl;
        return 0;
      }
      move(disb, bx, by, wx, wy, n / 2 + 1, m / 2);
    }
  }
  return 0;
}
