#include <bits/stdc++.h>
using namespace std;
template <typename T>
T gcd(T a, T b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
template <typename T>
T pow(T a, T b, long long m) {
  T ans = 1;
  while (b > 0) {
    if (b % 2 == 1) ans = (ans * a) % m;
    b /= 2;
    a = (a * a) % m;
  }
  return ans % m;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  int t;
  cin >> t;
  long long n, k, d1, d2;
  long long a1, a2, a3;
  while (t--) {
    cin >> n >> k >> d1 >> d2;
    long long left = (n - k);
    long long fr = (k - d1 - d2);
    if (fr >= 0 && (fr % 3 == 0)) {
      a2 = (fr / 3);
      a1 = (a2 + d1);
      a3 = (a2 + d2);
      if (a1 >= 0 && a2 >= 0 && a3 >= 0) {
        long long match = max(a1, a3);
        long long req = 0;
        req += (match - a1);
        req += (match - a2);
        req += (match - a3);
        long long lleft = (left - req);
        if (lleft >= 0 && lleft % 3 == 0) {
          cout << "yes"
               << "\n";
          continue;
        }
      }
    }
    fr = (k - d1 + d2);
    if (fr >= 0 && (fr % 3 == 0)) {
      a2 = (fr / 3);
      a1 = a2 + d1;
      a3 = a2 - d2;
      if (a1 >= 0 && a2 >= 0 && a3 >= 0) {
        long long match = a1;
        long long req = 0;
        req += (match - a1);
        req += (match - a2);
        req += (match - a3);
        long long lleft = (left - req);
        if (lleft >= 0 && lleft % 3 == 0) {
          cout << "yes"
               << "\n";
          continue;
        }
      }
    }
    fr = (k + d1 - d2);
    if (fr >= 0 && (fr % 3 == 0)) {
      a2 = (fr / 3);
      a1 = a2 - d1;
      a3 = a2 + d2;
      if (a1 >= 0 && a2 >= 0 && a3 >= 0) {
        long long match = a3;
        long long req = 0;
        req += (match - a1);
        req += (match - a2);
        req += (match - a3);
        long long lleft = (left - req);
        if (lleft >= 0 && lleft % 3 == 0) {
          cout << "yes"
               << "\n";
          continue;
        }
      }
    }
    fr = (k + d1 + d2);
    if (fr >= 0 && (fr % 3 == 0)) {
      a2 = (fr / 3);
      a1 = a2 - d1;
      a3 = a2 - d2;
      if (a1 >= 0 && a2 >= 0 && a3 >= 0) {
        long long match = a2;
        long long req = 0;
        req += (match - a1);
        req += (match - a2);
        req += (match - a3);
        long long lleft = (left - req);
        if (lleft >= 0 && lleft % 3 == 0) {
          cout << "yes"
               << "\n";
          continue;
        }
      }
    }
    cout << "no"
         << "\n";
  }
}
