枚举所有可能的情况
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int solve(LL n,LL k,LL d1,LL d2)
{
if(n%3!=0)
return 0;
for(int i=-1;i<=1;i++)
{
for(int j=-1;j<=1;j++)
{
if(i==0||j==0)
continue;
LL D1=d1*i,D2=d2*j;
LL x2=(k-D1+D2)/3;
if((k-D1+D2)%3!=0)
continue;
if(x2>=0&&x2<=k)
{
LL x1=D1+x2,x3=x2-D2;
if(x1>=0&&x1<=k&&x3>=0&&x3<=k)
{
if(x1<=n/3&&x2<=n/3&&x3<=n/3)
return true;
}
}
}
}
return false;
}
int main()
{
int t;
LL n,k,d1,d2;
scanf("%d",&t);
for(int i=1;i<=t;i++)
{
scanf("%I64d%I64d%I64d%I64d",&n,&k,&d1,&d2);
if(solve(n,k,d1,d2)==1)
printf("yes\n");
else
printf("no\n");
}
return 0;
}