#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int read() {
  int w = 0, f = 0;
  char c = getchar();
  while ((c < '0' || c > '9') && c != '-') c = getchar();
  if (c == '-') f = 1, c = getchar();
  while (c >= '0' && c <= '9') w = w * 10 + c - '0', c = getchar();
  return f ? -w : w;
}
int dx[] = {-2, -2, -1, -1, 1, 1, 2, 2};
int dy[] = {-1, 1, -2, 2, -2, 2, -1, 1};
int n, m, disw[N][N], disb[N][N];
pair<int, int> w, b, gw, gb;
queue<pair<int, int> > Q;
void bfs(int dis[N][N]) {
  pair<int, int> tmp, temp;
  while (!Q.empty()) {
    tmp = Q.front();
    Q.pop();
    for (int i = 0; i < 8; ++i) {
      temp.first = tmp.first + dx[i], temp.second = tmp.second + dy[i];
      if (((temp).first <= n && (temp).second <= m && (temp).first > 0 &&
           (temp).second > 0) &&
          dis[temp.first][temp.second] == 0) {
        dis[temp.first][temp.second] = dis[tmp.first][tmp.second] + 1;
        Q.push(temp);
      }
    }
  }
}
int main() {
  n = read(), m = read();
  w.first = read(), w.second = read(), b.first = read(), b.second = read();
  disw[n / 2][m / 2] = 1, disb[n / 2 + 1][m / 2] = 1;
  gw = make_pair(n / 2, m / 2), gb = make_pair(n / 2 + 1, m / 2);
  Q.push(gw);
  bfs(disw);
  Q.push(gb);
  bfs(disb);
  pair<int, int> tmp;
  if (disw[w.first][w.second] + 1 <= disw[b.first][b.second] &&
      disw[w.first][w.second] <= disb[b.first][b.second]) {
    puts("WHITE");
    fflush(stdout);
    while (w != gw) {
      for (int i = 0; i < 8; ++i) {
        tmp.first = w.first + dx[i], tmp.second = w.second + dy[i];
        if (((tmp).first <= n && (tmp).second <= m && (tmp).first > 0 &&
             (tmp).second > 0) &&
            disw[tmp.first][tmp.second] < disw[w.first][w.second]) {
          w = tmp;
          printf("%d %d\n", w.first, w.second);
          fflush(stdout);
          if (w == b) return 0;
          if (w != gw) b.first = read(), b.second = read();
          break;
        }
      }
    }
  } else if (disb[b.first][b.second] + 2 <= disb[w.first][w.second] &&
             disb[b.first][b.second] + 1 <= disw[w.first][w.second]) {
    puts("BLACK");
    fflush(stdout);
    w.first = read(), w.second = read();
    while (b != gb) {
      for (int i = 0; i < 8; ++i) {
        tmp = make_pair(b.first + dx[i], b.second + dy[i]);
        if (((tmp).first <= n && (tmp).second <= m && (tmp).first > 0 &&
             (tmp).second > 0) &&
            disb[tmp.first][tmp.second] < disb[b.first][b.second]) {
          b = tmp;
          printf("%d %d\n", b.first, b.second);
          fflush(stdout);
          if (w == b) return 0;
          if (b != gb) w.first = read(), w.second = read();
          break;
        }
      }
    }
  } else if ((w.first + w.second) % 2 != (b.first + b.second) % 2) {
    puts("WHITE");
    fflush(stdout);
    if (disw[w.first][w.second] <= disb[b.first][b.second]) {
      while (w != gw) {
        for (int i = 0; i < 8; ++i) {
          tmp = make_pair(w.first + dx[i], w.second + dy[i]);
          if (((tmp).first <= n && (tmp).second <= m && (tmp).first > 0 &&
               (tmp).second > 0) &&
              disw[tmp.first][tmp.second] < disw[w.first][w.second]) {
            w = tmp;
            printf("%d %d\n", w.first, w.second);
            fflush(stdout);
            if (w == b) return 0;
            if (w != gw) b.first = read(), b.second = read();
            break;
          }
        }
      }
    } else {
      while (w != gb) {
        for (int i = 0; i < 8; ++i) {
          tmp = make_pair(w.first + dx[i], w.second + dy[i]);
          if (((tmp).first <= n && (tmp).second <= m && (tmp).first > 0 &&
               (tmp).second > 0) &&
              disb[tmp.first][tmp.second] < disb[w.first][w.second]) {
            w = tmp;
            printf("%d %d\n", w.first, w.second);
            fflush(stdout);
            if (w == b) return 0;
            b.first = read(), b.second = read();
            break;
          }
        }
      }
      for (int i = 0; i < 8; ++i) {
        tmp = make_pair(w.first + dx[i], w.second + dy[i]);
        if (b == tmp) {
          printf("%d %d\n", tmp.first, tmp.second);
          fflush(stdout);
          return 0;
        }
      }
      while (w != gw) {
        for (int i = 0; i < 8; ++i) {
          tmp = make_pair(w.first + dx[i], w.second + dy[i]);
          if (((tmp).first <= n && (tmp).second <= m && (tmp).first > 0 &&
               (tmp).second > 0) &&
              disw[tmp.first][tmp.second] < disw[w.first][w.second]) {
            w = tmp;
            printf("%d %d\n", w.first, w.second);
            fflush(stdout);
            if (w == b) return 0;
            if (w != gw) b.first = read(), b.second = read();
            break;
          }
        }
      }
    }
  } else {
    puts("BLACK");
    fflush(stdout);
    w.first = read(), w.second = read();
    if (disw[w.first][w.second] >= disb[b.first][b.second]) {
      while (b != gb) {
        for (int i = 0; i < 8; ++i) {
          tmp = make_pair(b.first + dx[i], b.second + dy[i]);
          if (((tmp).first <= n && (tmp).second <= m && (tmp).first > 0 &&
               (tmp).second > 0) &&
              disb[tmp.first][tmp.second] < disb[b.first][b.second]) {
            b = tmp;
            printf("%d %d\n", b.first, b.second);
            fflush(stdout);
            if (w == b) return 0;
            if (b != gb) w.first = read(), w.second = read();
            break;
          }
        }
      }
    } else {
      while (b != gw) {
        for (int i = 0; i < 8; ++i) {
          tmp = make_pair(b.first + dx[i], b.second + dy[i]);
          if (((tmp).first <= n && (tmp).second <= m && (tmp).first > 0 &&
               (tmp).second > 0) &&
              disw[tmp.first][tmp.second] < disw[b.first][b.second]) {
            b = tmp;
            printf("%d %d\n", b.first, b.second);
            fflush(stdout);
            if (w == b) return 0;
            w.first = read(), w.second = read();
            break;
          }
        }
      }
      for (int i = 0; i < 8; ++i) {
        tmp = make_pair(b.first + dx[i], b.second + dy[i]);
        if (tmp == w) {
          printf("%d %d\n", w.first, w.second);
          fflush(stdout);
          return 0;
        }
      }
      while (b != gb) {
        for (int i = 0; i < 8; ++i) {
          tmp = make_pair(b.first + dx[i], b.second + dy[i]);
          if (((tmp).first <= n && (tmp).second <= m && (tmp).first > 0 &&
               (tmp).second > 0) &&
              disb[tmp.first][tmp.second] < disb[b.first][b.second]) {
            b = tmp;
            printf("%d %d\n", b.first, b.second);
            fflush(stdout);
            if (w == b) return 0;
            if (b != gb) w.first = read(), w.second = read();
            break;
          }
        }
      }
    }
  }
  return 0;
}
