import java.util.Scanner;

/**不考虑k局前的比分,只考虑剩余的局数和队伍之间的差值能否摊平
*/
/**输入里面数字过大,超过int类型,发生溢出 
*/
// public class Main {
//     public static void main(String[] args) {
//         Scanner in = new Scanner(System.in);
//         int t = in.nextInt();//t次比较
//         int n,k,d1,d2;
//         for(int i = 1;i<=t;i++){
//             n = in.nextInt();
//             k = in.nextInt();
//             d1 = in.nextInt();
//             d2 = in.nextInt();
                // if(n%3!=0){
                //     System.out.println("no");
                // }
//             if(((n-k)-d1-d2)<=0 & (d1!=0|d2!=0)){
//                 System.out.println("no");
//                 continue;
//             }
//             if(((n-k)-d1-d2)%3==0|(n-k)-2d1-d2)%3|(n-k)-d1-2d2)%3){
//                 System.out.println("yes");
//             }
//             else{
//                 if((d1+d2+(n-k))%3==0){
//                     System.out.println("yes");
//                     continue;
//                 }
//                 System.out.println("no");
//             }
//         }
//     }
// }

import java.math.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();//t次比较
        BigInteger n,k,d1,d2,subNum,dNum;
        BigInteger zero = BigInteger.valueOf(0);
        BigInteger three = BigInteger.valueOf(3);
        boolean f1,f2,f3;
        for(int i = 1;i<=t;i++){
            n = in.nextBigInteger();
            k = in.nextBigInteger();
            d1 = in.nextBigInteger();
            d2 = in.nextBigInteger();
            // 取余remainder 加法add 减法subtract 除法divide
            subNum = n.subtract(k);//n-k
            // dNum = d1.add(d1).add(d2);//d1+d2
            dNum = d1.add(d2);
            // subNum.subtract(dNum) //n-k-d1-d2
            if(n.mod(three).compareTo(zero) != 0){
                System.out.println("no");
                continue;
            }
            //   if(((n-k)-d1-d2)<=0 & (d1!=0|d2!=0)){
            if((subNum.subtract(dNum).compareTo(zero)<= 0)
        &(d1.compareTo(zero)!=0 | d2.compareTo(zero)!=0) )
        {
                System.out.println("no");
                continue;
            }
            //  if(((n-k)-d1-d2)%3==0|(n-k)-2d1-d2)%3==0|(n-k)-d1-2d2)%3==0)
            if(subNum.subtract(dNum).mod(three).compareTo(zero) == 0|
                subNum.subtract(dNum.add(d1)).mod(three).compareTo(zero) == 0|
                 subNum.subtract(dNum.add(d2)).mod(three).compareTo(zero) == 0
            ){
                System.out.println("yes");
            }
            else{
                // if((d1+d2+(n-k))%3==0){
                if((subNum.add(dNum)).mod(three).compareTo(zero) == 0){
                    System.out.println("yes");
                    continue;
                }
                System.out.println("no");
            }
        }
    }
}