#include <bits/stdc++.h>
using namespace std;
class Graph {
 public:
  int V;
  vector<vector<int> > adj;
  Graph(int n) : V(n), adj(n) {}
  void add_edge(int u, int v) {
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
};
inline int gcd(int a, int b) {
  while (a > 0 && b > 0) {
    if (a > b)
      a %= b;
    else
      b %= a;
  }
  return a + b;
}
long long solve(pair<long long, long long> p1, pair<long long, long long> p2,
                long long d1, long long d2, long long k,
                vector<long long>& ans) {
  long long a1 = p1.first, b1 = p1.second, a2 = p2.first, b2 = p2.second;
  long long y = (k - d1 / a1 - d2 / b2) / 3;
  long long x = (d1 - b1 * y) / a1;
  long long z = (d2 - a2 * y) / b2;
  if ((k - d1 / a1 - d2 / b2) % 3 != 0 || y < 0 || x < 0 || z < 0) {
    return -1;
  }
  assert(a1 * x + b1 * y == d1);
  assert(a2 * y + b2 * z == d2);
  assert(x + y + z == k);
  ans.push_back(x);
  ans.push_back(y);
  ans.push_back(z);
  return 0;
}
int main() {
  long long t;
  cin >> t;
  vector<pair<pair<long long, long long>, pair<long long, long long> > > coeff;
  coeff.push_back(make_pair(make_pair(-1, 1), make_pair(1, -1)));
  coeff.push_back(make_pair(make_pair(-1, 1), make_pair(-1, 1)));
  coeff.push_back(make_pair(make_pair(1, -1), make_pair(1, -1)));
  coeff.push_back(make_pair(make_pair(1, -1), make_pair(-1, 1)));
  for (long long i = 0; i < t; i++) {
    long long n, k, d1, d2;
    cin >> n >> k >> d1 >> d2;
    if (n % 3 != 0) {
      cout << "no\n";
      continue;
    }
    string output = "no\n";
    for (long long j = 0; j < 4; j++) {
      vector<long long> ans;
      long long res = solve(coeff[j].first, coeff[j].second, d1, d2, k, ans);
      if (res == -1) {
        continue;
      }
      long long x = ans[0], y = ans[1], z = ans[2];
      if (x <= n / 3 && y <= n / 3 && z <= n / 3) {
        output = "yes\n";
        break;
      }
    }
    cout << output;
  }
  return 0;
}
