func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 1e6 + 5;   const int mod = 998244353;   const int dx[] = {1, 1, 2, 2, -1, -1, -2, -2};   const int dy[] = {2, -2, 1, -1, 2, -2, 1, -1};   int A[1005][1005], B[1005][1005];   int C[1005][1005][2], D[1005][1005][2];   int main() {     int n, m;     scanf( %d%d , &n, &m);     int x1, y1, x2, y2;     scanf( %d%d%d%d , &x1, &y1, &x2, &y2);     queue<int> Q;     A[n / 2][m / 2] = 1;     Q.push(n / 2), Q.push(m / 2);     while (!Q.empty()) {       int x = Q.front();       Q.pop();       int y = Q.front();       Q.pop();       for (int d = 0; d < 8; d++) {         int nx = x + dx[d], ny = y + dy[d];         if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && A[nx][ny] == 0) {           A[nx][ny] = A[x][y] + 1;           C[nx][ny][0] = x;           C[nx][ny][1] = y;           Q.push(nx), Q.push(ny);         }       }     }     B[n / 2 + 1][m / 2] = 1;     Q.push(n / 2 + 1), Q.push(m / 2);     while (!Q.empty()) {       int x = Q.front();       Q.pop();       int y = Q.front();       Q.pop();       for (int d = 0; d < 8; d++) {         int nx = x + dx[d], ny = y + dy[d];         if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && B[nx][ny] == 0) {           B[nx][ny] = B[x][y] + 1;           D[nx][ny][0] = x;           D[nx][ny][1] = y;           Q.push(nx), Q.push(ny);         }       }     }     if ((x1 + y1) % 2 == (x2 + y2) % 2) {       int k = A[x1][y1];       if (B[x2][y2] < k) {         puts( BLACK );         fflush(stdout);         while (x2 != n / 2 + 1 || y2 != m / 2) {           scanf( %d%d , &x1, &y1);           int nx2 = D[x2][y2][0], ny2 = D[x2][y2][1];           printf( %d %d n , nx2, ny2);           fflush(stdout);           x2 = nx2, y2 = ny2;           if (x2 == x1 && y2 == y1) return 0;         }       } else if (A[x2][y2] > k) {         int nx1 = C[x1][y1][0], ny1 = C[x1][y1][1];         printf( WHITE n%d %d n , nx1, ny1);         fflush(stdout);         x1 = nx1, y1 = ny1;         while (x1 != n / 2 || y1 != m / 2) {           scanf( %d%d , &x2, &y2);           nx1 = C[x1][y1][0], ny1 = C[x1][y1][1];           printf( %d %d n , nx1, ny1);           fflush(stdout);           x1 = nx1, y1 = ny1;         }       } else {         puts( BLACK );         fflush(stdout);         while (x2 != n / 2 || y2 != m / 2) {           scanf( %d%d , &x1, &y1);           int nx2 = C[x2][y2][0], ny2 = C[x2][y2][1];           printf( %d %d n , nx2, ny2);           fflush(stdout);           x2 = nx2, y2 = ny2;           if (x2 == x1 && y2 == y1) return 0;         }         scanf( %d%d , &x1, &y1);         if (A[x1][y1] == 2) {           printf( %d %d n , x1, y1);           fflush(stdout);           return 0;         }         int nx2 = n / 2 + 1, ny2 = m / 2 + 2;         printf( %d %d n , nx2, ny2);         fflush(stdout);         x2 = nx2, y2 = ny2;         if (x2 == x1 && y2 == y1) return 0;         scanf( %d%d , &x1, &y1);         nx2 = n / 2 + 3, ny2 = m / 2 + 1;         printf( %d %d n , nx2, ny2);         fflush(stdout);         x2 = nx2, y2 = ny2;         if (x2 == x1 && y2 == y1) return 0;         scanf( %d%d , &x1, &y1);         nx2 = n / 2 + 1, ny2 = m / 2;         printf( %d %d n , nx2, ny2);         fflush(stdout);       }     } else {       int k = B[x2][y2];       if (A[x1][y1] <= k) {         int nx1 = C[x1][y1][0], ny1 = C[x1][y1][1];         printf( WHITE n%d %d n , nx1, ny1);         fflush(stdout);         x1 = nx1, y1 = ny1;         if (x1 == x2 && y1 == y2) return 0;         while (x1 != n / 2 || y1 != m / 2) {           scanf( %d%d , &x2, &y2);           nx1 = C[x1][y1][0], ny1 = C[x1][y1][1];           printf( %d %d n , nx1, ny1);           fflush(stdout);           x1 = nx1, y1 = ny1;           if (x1 == x2 && y1 == y2) return 0;         }       } else if (B[x1][y1] > k + 1) {         puts( BLACK );         fflush(stdout);         while (x2 != n / 2 + 1 || y2 != m / 2) {           scanf( %d%d , &x1, &y1);           int nx2 = D[x2][y2][0], ny2 = D[x2][y2][1];           printf( %d %d n , nx2, ny2);           fflush(stdout);           x2 = nx2, y2 = ny2;         }       } else {         if (x1 == n / 2 + 1 && y1 == m / 2) {           puts( WHITE );           fflush(stdout);           if (B[x2][y2] == 2) {             printf( %d %d n , x2, y2);             fflush(stdout);             return 0;           } else {             int nx1 = n / 2, ny1 = m / 2 + 2;             printf( %d %d n , nx1, ny1);             fflush(stdout);             x1 = nx1, y1 = ny1;             if (x1 == x2 && y1 == y2) return 0;             scanf( %d%d , &x2, &y2);             nx1 = n / 2 - 2, ny1 = m / 2 + 1;             printf( %d %d n , nx1, ny1);             fflush(stdout);             x1 = nx1, y1 = ny1;             if (x1 == x2 && y1 == y2) return 0;             scanf( %d%d , &x2, &y2);             nx1 = n / 2, ny1 = m / 2;             printf( %d %d n , nx1, ny1);             fflush(stdout);           }           return 0;         }         int nx1 = D[x1][y1][0], ny1 = D[x1][y1][1];         printf( WHITE n%d %d n , nx1, ny1);         fflush(stdout);         x1 = nx1, y1 = ny1;         if (x1 == x2 && y1 == y2) return 0;         while (x1 != n / 2 + 1 || y1 != m / 2) {           scanf( %d%d , &x2, &y2);           nx1 = D[x1][y1][0], ny1 = D[x1][y1][1];           printf( %d %d n , nx1, ny1);           fflush(stdout);           x1 = nx1, y1 = ny1;           if (x1 == x2 && y1 == y2) return 0;         }         scanf( %d%d , &x2, &y2);         if (B[x2][y2] == 2) {           printf( %d %d n , x2, y2);           fflush(stdout);           return 0;         }         nx1 = n / 2, ny1 = m / 2 + 2;         printf( %d %d n , nx1, ny1);         fflush(stdout);         x1 = nx1, y1 = ny1;         if (x1 == x2 && y1 == y2) return 0;         scanf( %d%d , &x2, &y2);         nx1 = n / 2 - 2, ny1 = m / 2 + 1;         printf( %d %d n , nx1, ny1);         fflush(stdout);         x1 = nx1, y1 = ny1;         if (x1 == x2 && y1 == y2) return 0;         scanf( %d%d , &x2, &y2);         nx1 = n / 2, ny1 = m / 2;         printf( %d %d n , nx1, ny1);         fflush(stdout);       }     }     return 0;   }   