#include <bits/stdc++.h>
using namespace std;
static const double EPS = 1e-8;
static const double PI = 4.0 * atan(1.0);
bool ISINT(double x) { return fabs(x - (int)round(x)) < EPS; }
bool ISEQ(double x, double y) { return fabs(x - y) < EPS; }
string itos(long long x) {
  stringstream ss;
  ss << x;
  return ss.str();
}
long long n, k, d[2];
bool check(long long bit) {
  long long t[3] = {0};
  long long minVal = 0;
  for (long long i = 0; i < 2; i++) {
    if (bit & (1LL << i)) {
      t[i + 1] = t[i] + d[i];
    } else {
      t[i + 1] = t[i] - d[i];
    }
    minVal = min(minVal, t[i + 1]);
  }
  if (minVal < 0) {
    for (long long i = 0; i < 3; i++) {
      t[i] += -minVal;
    }
  }
  long long sum = 0;
  for (long long i = 0; i < 3; i++) {
    sum += t[i];
  }
  if (sum > k) return false;
  if ((k - sum) % 3LL != 0) return false;
  for (long long i = 0; i < 3; i++) {
    t[i] += (k - sum) / 3LL;
  }
  for (long long i = 0; i < 3; i++) {
    if (t[i] > n / 3LL) {
      return false;
    }
  }
  return true;
}
int main(void) {
  long long T;
  cin >> T;
  while (T--) {
    cin >> n >> k >> d[0] >> d[1];
    bool flg = false;
    if (n % 3LL != 0LL) {
      cout << "no" << endl;
      continue;
    }
    for (long long i = 0; i < (1LL << 2LL); i++) {
      if (check(i)) {
        flg = true;
        break;
      }
    }
    cout << (flg ? "yes" : "no") << endl;
  }
}
