#include <bits/stdc++.h>
using namespace std;
int main() {
  int T;
  scanf("%d", &T);
  for (int tt = 0; tt < (T); ++tt) {
    long long n, k, d1, d2;
    cin >> n, cin >> k, cin >> d1, cin >> d2;
    long long cur;
    bool ok = false;
    cur = 2 * d1 + d2;
    if (k - cur >= 0 and (k - cur) % 3 == 0) {
      long long a = (k - cur) / 3;
      long long b = a + d1;
      long long c = a + d1 + d2;
      if (a >= 0 and b >= 0 and c >= 0) {
        long long maxx = max(a, max(b, c));
        long long req = (maxx - a) + (maxx - b) + (maxx - c);
        if ((n - k) >= req and (n - k - req) % 3 == 0) {
          ok = true;
        }
      }
    }
    cur = 2 * d1 - d2;
    if (k - cur >= 0 and (k - cur) % 3 == 0) {
      long long a = (k - cur) / 3;
      long long b = a + d1;
      long long c = a + d1 - d2;
      if (a >= 0 and b >= 0 and c >= 0) {
        long long maxx = max(a, max(b, c));
        long long req = (maxx - a) + (maxx - b) + (maxx - c);
        if ((n - k) >= req and (n - k - req) % 3 == 0) {
          ok = true;
        }
      }
    }
    cur = -2 * d1 + d2;
    if (k - cur >= 0 and (k - cur) % 3 == 0) {
      long long a = (k - cur) / 3;
      long long b = a - d1;
      long long c = a - d1 + d2;
      if (a >= 0 and b >= 0 and c >= 0) {
        long long maxx = max(a, max(b, c));
        long long req = (maxx - a) + (maxx - b) + (maxx - c);
        if ((n - k) >= req and (n - k - req) % 3 == 0) {
          ok = true;
        }
      }
    }
    cur = -2 * d1 - d2;
    if (k - cur >= 0 and (k - cur) % 3 == 0) {
      long long a = (k - cur) / 3;
      long long b = a - d1;
      long long c = a - d1 - d2;
      if (a >= 0 and b >= 0 and c >= 0) {
        long long maxx = max(a, max(b, c));
        long long req = (maxx - a) + (maxx - b) + (maxx - c);
        if ((n - k) >= req and (n - k - req) % 3 == 0) {
          ok = true;
        }
      }
    }
    puts(ok ? "yes" : "no");
  }
  return 0;
}
