#include <bits/stdc++.h>
using namespace std;
int vis[1005][1005];
pair<int, int> from[1005][1005];
int vis2[1005][1005];
pair<int, int> from2[1005][1005];
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  int x1, y1, x2, y2;
  scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
  int X[8] = {1, 1, -1, -1, 2, 2, -2, -2};
  int Y[8] = {2, -2, 2, -2, 1, -1, 1, -1};
  memset(vis, -1, sizeof(vis));
  queue<pair<int, int> > q;
  q.push(make_pair(x1, y1));
  vis[x1][y1] = 0;
  while (!q.empty()) {
    pair<int, int> p = q.front();
    q.pop();
    for (int i = 0; i < 8; i++) {
      int first = p.first + X[i], second = p.second + Y[i];
      if (first >= 1 && first <= n && second >= 1 && second <= m &&
          vis[first][second] == -1) {
        vis[first][second] = vis[p.first][p.second] + 1;
        from[first][second] = make_pair(p.first, p.second);
        q.push(make_pair(first, second));
      }
    }
  }
  memset(vis2, -1, sizeof(vis2));
  vis2[x2][y2] = 0;
  q.push(make_pair(x2, y2));
  while (!q.empty()) {
    pair<int, int> p = q.front();
    q.pop();
    for (int i = 0; i < 8; i++) {
      int first = p.first + X[i], second = p.second + Y[i];
      if (first >= 1 && first <= n && second >= 1 && second <= m &&
          vis2[first][second] == -1) {
        vis2[first][second] = vis2[p.first][p.second] + 1;
        from2[first][second] = make_pair(p.first, p.second);
        q.push(make_pair(first, second));
      }
    }
  }
  int opx = x2, opy = y2;
  if ((x1 + y1) % 2 == (x2 + y2) % 2) {
    if (vis2[n / 2 + 1][m / 2] < vis[n / 2][m / 2]) {
      printf("BLACK\n");
      fflush(stdout);
      if (x2 == n / 2 + 1 && y2 == m / 2) return 0;
      scanf("%d %d", &opx, &opy);
      vector<pair<int, int> > v;
      int first = n / 2 + 1, second = m / 2;
      while (first != x2 || second != y2) {
        v.push_back(make_pair(first, second));
        tie(first, second) = from2[first][second];
      }
      reverse(v.begin(), v.end());
      int lastx = x2, lasty = y2;
      for (auto it : v) {
        if (abs(lastx - opx) <= 2 && abs(lasty - opy) <= 2 &&
            abs(lastx - opx) + abs(lasty - opy) == 3) {
          printf("%d %d\n", opx, opy);
          fflush(stdout);
          return 0;
        }
        tie(lastx, lasty) = it;
        printf("%d %d\n", it.first, it.second);
        fflush(stdout);
        if (it.first == opx && it.second == opy) return 0;
        scanf("%d %d", &opx, &opy);
      }
    } else if (vis2[n / 2][m / 2] <= vis[n / 2][m / 2]) {
      printf("BLACK\n");
      fflush(stdout);
      scanf("%d %d", &opx, &opy);
      vector<pair<int, int> > v;
      int first = n / 2, second = m / 2;
      while (first != x2 || second != y2) {
        v.push_back(make_pair(first, second));
        tie(first, second) = from2[first][second];
      }
      reverse(v.begin(), v.end());
      v.push_back(make_pair(n / 2 + 1, m / 2 + 2));
      v.push_back(make_pair(n / 2 - 1, m / 2 + 1));
      v.push_back(make_pair(n / 2 + 1, m / 2));
      int lastx = x2, lasty = y2;
      for (auto it : v) {
        if (abs(lastx - opx) <= 2 && abs(lasty - opy) <= 2 &&
            abs(lastx - opx) + abs(lasty - opy) == 3) {
          printf("%d %d\n", opx, opy);
          fflush(stdout);
          return 0;
        }
        tie(lastx, lasty) = it;
        printf("%d %d\n", it.first, it.second);
        fflush(stdout);
        if (it.first == opx && it.second == opy) return 0;
        scanf("%d %d", &opx, &opy);
      }
    } else {
      printf("WHITE\n");
      fflush(stdout);
      vector<pair<int, int> > v;
      int first = n / 2, second = m / 2;
      while (first != x1 || second != y1) {
        v.push_back(make_pair(first, second));
        tie(first, second) = from[first][second];
      }
      reverse(v.begin(), v.end());
      for (auto it : v) {
        printf("%d %d\n", it.first, it.second);
        fflush(stdout);
      }
    }
  } else {
    if (vis[n / 2][m / 2] <= vis2[n / 2 + 1][m / 2]) {
      printf("WHITE\n");
      fflush(stdout);
      vector<pair<int, int> > v;
      int first = n / 2, second = m / 2;
      while (first != x1 || second != y1) {
        v.push_back(make_pair(first, second));
        tie(first, second) = from[first][second];
      }
      reverse(v.begin(), v.end());
      int lastx = x1, lasty = y1;
      for (auto it : v) {
        if (abs(lastx - opx) <= 2 && abs(lasty - opy) <= 2 &&
            abs(lastx - opx) + abs(lasty - opy) == 3) {
          printf("%d %d\n", opx, opy);
          fflush(stdout);
          return 0;
        }
        tie(lastx, lasty) = it;
        printf("%d %d\n", it.first, it.second);
        fflush(stdout);
        if (it.first == opx && it.second == opy) return 0;
        scanf("%d %d", &opx, &opy);
      }
    } else if (vis[n / 2 + 1][m / 2] <= vis2[n / 2 + 1][m / 2] + 1) {
      printf("WHITE\n");
      fflush(stdout);
      vector<pair<int, int> > v;
      int first = n / 2 + 1, second = m / 2;
      while (first != x1 || second != y1) {
        v.push_back(make_pair(first, second));
        tie(first, second) = from[first][second];
      }
      reverse(v.begin(), v.end());
      v.push_back(make_pair(n / 2 - 1, m / 2 - 1));
      v.push_back(make_pair(n / 2 + 1, m / 2 - 2));
      v.push_back(make_pair(n / 2, m / 2));
      int lastx = x1, lasty = y1;
      for (auto it : v) {
        if (abs(lastx - opx) <= 2 && abs(lasty - opy) <= 2 &&
            abs(lastx - opx) + abs(lasty - opy) == 3) {
          printf("%d %d\n", opx, opy);
          fflush(stdout);
          return 0;
        }
        tie(lastx, lasty) = it;
        printf("%d %d\n", it.first, it.second);
        fflush(stdout);
        if (it.first == opx && it.second == opy) return 0;
        scanf("%d %d", &opx, &opy);
      }
    } else {
      printf("BLACK\n");
      fflush(stdout);
      vector<pair<int, int> > v;
      int first = n / 2 + 1, second = m / 2;
      while (first != x2 || second != y2) {
        v.push_back(make_pair(first, second));
        tie(first, second) = from2[first][second];
      }
      reverse(v.begin(), v.end());
      for (auto it : v) {
        printf("%d %d\n", it.first, it.second);
        fflush(stdout);
      }
    }
  }
}
