#include <bits/stdc++.h>
using namespace std;
const int dx[8] = {1, -1, 1, -1, 2, -2, 2, -2};
const int dy[8] = {2, -2, -2, 2, 1, -1, -1, 1};
inline int _abs(int x) { return x > 0 ? x : -x; }
int n, m, top;
int myx, myy, opx, opy;
int BB, WW, BW, WB, temp;
struct point {
  int x, y, dis;
} p[2][1001][1001], t1, t2;
queue<point> q;
point sta[1500];
bool my_knight, End = 0;
void start_game(bool winner) {
  if (winner == 1) {
    my_knight = 1;
    swap(myx, opx);
    swap(myy, opy);
    printf("BLACK\n");
  } else {
    my_knight = 0;
    printf("WHITE\n");
  }
  fflush(stdout);
  return;
}
inline void my_move(int fx, int fy) {
  printf("%d %d\n", fx, fy);
  fflush(stdout);
  myx = fx;
  myy = fy;
  return;
}
inline void op_move(void) {
  scanf("%d%d", &opx, &opy);
  return;
}
inline bool check(int fx, int fy) {
  return fx > 0 && fy > 0 && fx <= n && fy <= m;
}
inline bool can_eat(void) {
  for (int i = 0; i < 8; i++)
    if (myx + dx[i] == opx && myy + dy[i] == opy) return 1;
  return 0;
}
void bfs(int sx, int sy, bool player) {
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) p[player][i][j].dis = -1;
  p[player][sx][sy].dis = t1.dis = 0;
  t1.x = sx;
  t1.y = sy;
  q.push(t1);
  while (q.size() > 0) {
    t1 = q.front();
    q.pop();
    for (int i = 0; i < 8; i++) {
      t2.x = t1.x + dx[i];
      t2.y = t1.y + dy[i];
      if (!check(t2.x, t2.y) || p[player][t2.x][t2.y].dis != -1) continue;
      t2.dis = t1.dis + 1;
      p[player][t2.x][t2.y] = t1;
      p[player][t2.x][t2.y].dis++;
      q.push(t2);
    }
  }
  return;
}
void move_to(int tx, int ty) {
  top = -1;
  bfs(myx, myy, my_knight);
  while (tx != myx || ty != myy) {
    sta[++top].x = tx;
    sta[top].y = ty;
    temp = tx;
    tx = p[my_knight][tx][ty].x;
    ty = p[my_knight][temp][ty].y;
  }
  while (top >= 0) {
    if (can_eat()) {
      my_move(opx, opy);
      End = 1;
      return;
    }
    my_move(sta[top].x, sta[top].y);
    top--;
    op_move();
  }
  return;
}
void solve1(void) {
  if (WW <= BB) {
    start_game(0);
    move_to(n >> 1, m >> 1);
  } else if (WB > BB + 1) {
    start_game(1);
    op_move();
    move_to(n / 2 + 1, m >> 1);
  } else {
    start_game(0);
    move_to(n / 2 + 1, m >> 1);
    if (End == 0) move_to(n >> 1, m >> 1);
  }
  return;
}
void solve2(void) {
  if (BB < WW) {
    start_game(1);
    op_move();
    move_to(n / 2 + 1, m >> 1);
  } else if (BW > WW) {
    start_game(0);
    move_to(n >> 1, m >> 1);
  } else {
    start_game(1);
    op_move();
    move_to(n >> 1, m >> 1);
    if (End == 0) move_to(n / 2 + 1, m >> 1);
  }
  return;
}
int main(void) {
  scanf("%d%d%d%d%d%d", &n, &m, &myx, &myy, &opx, &opy);
  bfs(myx, myy, 0);
  bfs(opx, opy, 1);
  BB = p[1][n / 2 + 1][m >> 1].dis;
  BW = p[1][n >> 1][m >> 1].dis;
  WB = p[0][n / 2 + 1][m >> 1].dis;
  WW = p[0][n >> 1][m >> 1].dis;
  if ((myx + myy + opx + opy) & 1)
    solve1();
  else
    solve2();
  return 0;
}
