#include <bits/stdc++.h>
int64_t max(int64_t a, int64_t b) {
  if (a < b) return b;
  return a;
}
int64_t min(int64_t a, int64_t b) {
  if (a < b) return a;
  return b;
}
int main() {
  int64_t t, i, n, k, d1, d2;
  scanf("%" PRId64, &t);
  for (i = 0; i < t; ++i) {
    scanf("%" PRId64, &n);
    scanf("%" PRId64, &k);
    scanf("%" PRId64, &d1);
    scanf("%" PRId64, &d2);
    if (n % 3 != 0) {
      printf("no\n");
      continue;
    } else {
      int64_t x1, x2, x3;
      if ((k - d1 + d2) % 3 == 0) {
        x2 = (k - d1 + d2) / 3;
        x1 = x2 + d1;
        x3 = x2 - d2;
        int64_t r = n - k - (x1 - x2) - (x1 - x3);
        if (x1 >= 0 && x2 >= 0 && x3 >= 0 && r >= 0 && r % 3 == 0) {
          printf("yes\n");
          continue;
        }
      }
      if ((k + d1 + d2) % 3 == 0) {
        x2 = (k + d1 + d2) / 3;
        x1 = x2 - d1;
        x3 = x2 - d2;
        int64_t r = n - k - (x2 - x1) - (x2 - x3);
        if (x1 >= 0 && x2 >= 0 && x3 >= 0 && r >= 0 && r % 3 == 0) {
          printf("yes\n");
          continue;
        }
      }
      if ((k - d1 - d2) % 3 == 0) {
        x2 = (k - d1 - d2) / 3;
        x1 = x2 + d1;
        x3 = x2 + d2;
        if (x1 > x3) {
          int64_t r = n - k - (x1 - x2) - (x1 - x3);
          if (x1 >= 0 && x2 >= 0 && x3 >= 0 && r >= 0 && r % 3 == 0) {
            printf("yes\n");
            continue;
          }
        } else {
          int64_t r = n - k - (x3 - x1) - (x3 - x2);
          if (x1 >= 0 && x2 >= 0 && x3 >= 0 && r >= 0 && r % 3 == 0) {
            printf("yes\n");
            continue;
          }
        }
      }
      if ((k + d1 - d2) % 3 == 0) {
        x2 = (k + d1 - d2) / 3;
        x1 = x2 - d1;
        x3 = x2 + d2;
        int64_t r = n - k - (x3 - x1) - (x3 - x2);
        if (x1 >= 0 && x2 >= 0 && x3 >= 0 && r >= 0 && r % 3 == 0) {
          printf("yes\n");
          continue;
        }
      }
      printf("no\n");
    }
  }
  return 0;
}
