#include <bits/stdc++.h>
using namespace std;
inline int init() {
  int now = 0, ju = 1;
  char c;
  bool flag = false;
  while (1) {
    c = getchar();
    if (c == '-')
      ju = -1;
    else if (c >= '0' && c <= '9') {
      now = now * 10 + c - '0';
      flag = true;
    } else if (flag)
      return now * ju;
  }
}
inline long long llinit() {
  long long now = 0, ju = 1;
  char c;
  bool flag = false;
  while (1) {
    c = getchar();
    if (c == '-')
      ju = -1;
    else if (c >= '0' && c <= '9') {
      now = now * 10 + c - '0';
      flag = true;
    } else if (flag)
      return now * ju;
  }
}
long long n, k, x, y, t;
long long a, b, c;
long long minx;
int main() {
  bool flag;
  t = llinit();
  long long tt;
  while (t--) {
    minx = 0x7f7f7f7f;
    flag = false;
    n = llinit();
    k = llinit();
    x = llinit();
    y = llinit();
    c = (k - x - (2 * y)) / 3;
    b = c + y;
    a = b + x;
    tt = n - k - 2 * x - y;
    if (a >= 0 && b >= 0 && c >= 0 && a + b + c == k && 2 * x + y <= n - k &&
        tt % 3 == 0) {
      flag = true;
    }
    b = (k - x - y) / 3;
    c = b + y;
    a = b + x;
    minx = min(x, y);
    tt = n - k - minx - 2 * abs(x - y);
    if (a >= 0 && b >= 0 && c >= 0 && a + b + c == k &&
        minx + 2 * abs(x - y) <= n - k && tt % 3 == 0) {
      flag = true;
    }
    b = (k + x + y) / 3;
    a = b - x;
    c = b - y;
    tt = n - k - x - y;
    if (a >= 0 && b >= 0 && c >= 0 && a + b + c == k && x + y <= n - k &&
        tt % 3 == 0) {
      flag = true;
    }
    a = (k - 2 * x - y) / 3;
    b = a + x;
    c = b + y;
    tt = n - k - x - 2 * y;
    if (a >= 0 && b >= 0 && c >= 0 && a + b + c == k && x + 2 * y <= n - k &&
        tt % 3 == 0) {
      flag = true;
    }
    if (flag)
      printf("yes\n");
    else
      printf("no\n");
  }
  return 0;
}
