#include <bits/stdc++.h>
using namespace std;
const double pi = acos(0.0) * 2.0;
const double eps = 1e-12;
const int dir[8][2] = {{1, 0}, {-1, 0}, {0, 1},  {0, -1},
                       {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};
long long pow(long long n, long long m, long long mod = 0) {
  if (m < 0) return 0;
  long long ans = 1;
  long long k = n;
  while (m) {
    if (m & 1) {
      ans *= k;
      if (mod) ans %= mod;
    }
    k *= k;
    if (mod) k %= mod;
    m >>= 1;
  }
  return ans;
}
struct baba {
  int a, b, c, d;
};
bool operator<(const baba &x, const baba &y) {
  return ((x.a < y.a) || (x.a == y.a && x.b < y.b)) ||
         (x.a == y.a && x.b == y.b && x.c < y.c) ||
         (x.a == y.a && x.b == y.b && x.c == y.c && x.d < y.d);
}
long long n, k, d1, d2, w1, w2, w3;
bool solve(long long n, long long k, long long d1, long long d2) {
  if ((k - d2 + d1) % 3 == 0)
    w2 = (k - d2 + d1) / 3;
  else
    return 0;
  w1 = w2 - d1;
  w3 = d2 + w2;
  if (w1 >= 0 && w2 >= 0 && w3 >= 0) return 1;
  return 0;
}
int main() {
  int T;
  long long w;
  cin >> T;
  while (T--) {
    cin >> n >> k >> d1 >> d2;
    if (n % 3 != 0) {
      cout << "no\n";
      continue;
    }
    if (solve(n, k, d1, d2)) {
      w = max(max(w1, w2), w3);
      if (w <= n / 3) {
        cout << "yes\n";
        continue;
      }
    }
    if (solve(n, k, -d1, d2)) {
      w = max(max(w1, w2), w3);
      if (w <= n / 3) {
        cout << "yes\n";
        continue;
      }
    }
    if (solve(n, k, d1, -d2)) {
      w = max(max(w1, w2), w3);
      if (w <= n / 3) {
        cout << "yes\n";
        continue;
      }
    }
    if (solve(n, k, -d1, -d2)) {
      w = max(max(w1, w2), w3);
      if (w <= n / 3) {
        cout << "yes\n";
        continue;
      }
    }
    cout << "no\n";
  }
  return 0;
}
