#include <bits/stdc++.h>
using namespace std;
template <typename T>
ostream& operator<<(ostream& os, const vector<T>& v) {
  bool first = true;
  for (const auto& x : v) {
    if (!first) {
      os << " ";
    }
    first = false;
    os << x;
  }
  return os;
}
template <typename T>
istream& operator>>(istream& is, vector<T>& v) {
  for (auto& elem : v) {
    is >> elem;
  }
  return is;
}
struct v {
  int x1;
  int y1;
  int x2;
  int y2;
  int deep;
  v(int _x1, int _y1, int _x2, int _y2, int _deep) {
    x1 = _x1;
    y1 = _y1;
    x2 = _x2;
    y2 = _y2;
    deep = _deep;
  }
};
int n, m;
int get_hash(v a) {
  int h = a.x1;
  h *= 41;
  h += a.y1;
  h *= 41;
  h += a.x2;
  h *= 41;
  h += a.y2;
  h *= 2;
  h += a.deep % 2;
  return h;
}
int res[41][41][41][41][2];
void bfs() {
  for (int x1 = 1; x1 <= n; x1++) {
    for (int y1 = 1; y1 <= m; y1++) {
      for (int x2 = 1; x2 <= n; x2++) {
        for (int y2 = 1; y2 <= m; y2++) {
          res[x1][y1][x2][y2][0] = 0;
          res[x1][y1][x2][y2][1] = 0;
        }
      }
    }
  }
  queue<v> q;
  for (int x1 = 1; x1 <= n; x1++) {
    for (int y1 = 1; y1 <= m; y1++) {
      res[x1][y1][x1][y1][0] = -1;
      q.push(v(x1, y1, x1, y1, 0));
      res[x1][y1][x1][y1][1] = -1;
      q.push(v(x1, y1, x1, y1, 1));
    }
  }
  for (int x1 = 1; x1 <= n; x1++) {
    for (int y1 = 1; y1 <= m; y1++) {
      int x2 = n / 2 + 1;
      int y2 = m / 2;
      if (abs(x1 - x2) * abs(y1 - y2) != 2) {
        res[x1][y1][x2][y2][0] = -1;
        q.push(v(x1, y1, x2, y2, 0));
      }
      x2 = n / 2;
      y2 = m / 2;
      if (abs(x1 - x2) * abs(y1 - y2) != 2) {
        res[x1][y1][x2][y2][1] = -1;
        q.push(v(x1, y1, x2, y2, 1));
      }
    }
  }
  while (!q.empty()) {
    v w = q.front();
    q.pop();
    int x1 = w.x1;
    int y1 = w.y1;
    int x2 = w.x2;
    int y2 = w.y2;
    int black = w.deep;
    for (int j = -2; j <= 2; j++) {
      for (int i = -2; i <= 2; i++) {
        if (abs(i * j) == 2 && x2 + j >= 1 && y2 + i >= 1 && x2 + j <= n &&
            y2 + i <= m) {
          if (res[x2 + j][y2 + i][x1][y1][1 - black] == 0) {
            if (res[x1][y1][x2][y2][black] < 0) {
              res[x2 + j][y2 + i][x1][y1][1 - black] =
                  1 - res[x1][y1][x2][y2][black];
            } else {
              bool have_zero = false;
              bool have_minus = false;
              for (int jj = -2; jj <= 2; jj++) {
                for (int ii = -2; ii <= 2; ii++) {
                  if (abs(ii * jj) == 2 && x2 + j + jj >= 1 &&
                      y2 + i + ii >= 1 && x2 + j + jj <= n &&
                      y2 + i + ii <= m) {
                    int r = res[x1][y1][x2 + j + jj][y2 + i + ii][black];
                    if (r == 0) {
                      have_zero = true;
                    }
                    if (r < 0) {
                      have_minus = true;
                      res[x2 + j][y2 + i][x1][y1][1 - black] = 1 - r;
                    }
                  }
                }
              }
              if (!have_minus && !have_zero) {
                res[x2 + j][y2 + i][x1][y1][1 - black] =
                    -1 - res[x1][y1][x2][y2][black];
              }
            }
            if (res[x2 + j][y2 + i][x1][y1][1 - black] != 0) {
              q.push(v(x2 + j, y2 + i, x1, y1, 1 - black));
            }
          }
        }
      }
    }
  }
}
void solve() {
  cin >> n >> m;
  int x1, y1, x2, y2;
  cin >> x1 >> y1 >> x2 >> y2;
  bfs();
  int ans = res[x1][y1][x2][y2][0];
  int black = 0;
  if (ans > 0) {
    cout << "WHITE\n";
    cout.flush();
  } else {
    cout << "BLACK\n";
    cout.flush();
    x1 = x2;
    y1 = y2;
    black = 1;
    cin >> x2 >> y2;
    ans = res[x1][y1][x2][y2][black];
  }
  while (ans > 1) {
    bool done = false;
    for (int j = -2; j <= 2; j++) {
      for (int i = -2; i <= 2; i++) {
        if (!done && abs(i * j) == 2 && x1 + j >= 1 && y1 + i >= 1 &&
            x1 + j <= n && y1 + i <= m) {
          int r = res[x2][y2][x1 + j][y1 + i][1 - black];
          if (r < 0 && r > -ans) {
            done = true;
            x1 += j;
            y1 += i;
            cout << x1 << ' ' << y1 << endl;
            cout.flush();
            ans = -r;
            if (ans > 1) {
              cin >> x2 >> y2;
              ans = res[x1][y1][x2][y2][black];
              if (x2 == -1) {
                return;
              }
            }
          }
        }
      }
    }
    if (!done) {
      exit(1);
      cout << 1 << ' ' << 1 << endl;
      cout.flush();
      return;
    }
  }
}
int main() {
  ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  if (0) {
    int tests;
    cin >> tests;
    for (int i = 1; i <= tests; i++) {
      solve();
      cout << endl;
    }
  } else {
    solve();
  }
  return 0;
}
