#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
vector<int> arr[100001];
int vis[100001];
bool ok = false;
set<int> check;
void dfs(int node) {
  vis[node] = 1;
  for (int child : arr[node]) {
    if (vis[child] == 0) dfs(child);
  }
}
bool isPalindrome(string s) {
  if (s.size() == 1) return false;
  for (int i = 0; i < s.size() / 2; i++) {
    if (s[i] != s[s.size() - 1 - i]) {
      return false;
    }
  }
  return true;
}
bool isPrime(long long int n) {
  for (long long int i = 2; i * i <= n; i++) {
    if (n % i == 0) return false;
  }
  return true;
}
long long int fact(long long int n) {
  if (n == 1)
    return 1;
  else
    return n * fact(n - 1);
}
long long int comb(long long int n, long long int r) {
  return fact(n) / (fact(n - r) * fact(r));
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t = 1;
  while (t-- > 0) {
    long long int x, y;
    cin >> x >> y;
    long long int r;
    double r1;
    r1 = (sqrt(pow(x, 2) + pow(y, 2)));
    r = (long long int)r1;
    if (r - r1 == 0) {
      cout << "black" << endl;
      continue;
    }
    if (x >= 0 && y >= 0) {
      if (r % 2 == 0)
        cout << "black" << endl;
      else
        cout << "white" << endl;
    } else if (x < 0 && y >= 0) {
      if (r % 2 == 0)
        cout << "white" << endl;
      else
        cout << "black" << endl;
    } else if (x < 0 && y < 0) {
      if (r % 2 == 0)
        cout << "black" << endl;
      else
        cout << "white" << endl;
    } else {
      if (r % 2 == 0)
        cout << "white" << endl;
      else
        cout << "black" << endl;
    }
  }
  return 0;
}
