import java.util.Scanner; /** * @author supermejane * @date 2025/10/6 * @description BGN50 小红走网格 */ public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); while (n-- > 0) { int x = in.nextInt(); int y = in.nextInt(); int y_add = in.nextInt(); int y_del = in.nextInt(); int x_del = in.nextInt(); int x_add = in.nextInt(); System.out.println(illegal(y_add, y_del, y) && illegal(x_add, x_del, x) ? "YES" : "NO"); } } //c是不是a, b的线性组合 public static boolean illegal(int a, int b, int c) { return c % gcd(Math.max(a, b), Math.min(a, b), new int[2]) == 0; } //辗转相除 public static int gcd(int a, int b, int[] xy) { if (b == 0) { xy[0] = 1; xy[1] = 0; return a; } else { int g = gcd(b, a % b, xy); //非必要,如果要求线性组合系数可以使用 //回溯,这个xy表示a * xy[0] + b * xy[1] = 最小公约数,即a * xy[0] + b * xy[1] = b * xy[0]' + (a % b) * xy[1]' //由于左边a * xy[0] + b * xy[1] = (a / b * xy[0] + xy[1]) * b + a % b * xy[0], 就是说(a / b * xy[0] + xy[1]) = xy[0]'并且xy[0] = xy[1]' //我上面是正推,回溯是反推,所以xy'和xy反一下就行了 int x = xy[0]; int y = xy[1]; xy[0] = y; xy[1] = x - a / b * y; return g; } } //最小公倍数 public static int lcm(int a, int b) { int g = gcd(a, b, new int[2]); return a * b / g; } } //没学过数论,搜Gpt现学的,包括贝祖定理,gcd, lcm /* 要判断一个数字 c 是否能表示为 c = m*a + n*b(其中 m 和 n 是整数,可正可负),核心依据是数论中的贝祖定理(Bezout's Identity)。 结论 一个数 c 能表示为 m*a + n*b 的充要条件是:c 是 a 和 b 的最大公约数(gcd(a, b))的整数倍。 即:c % gcd(a, b) == 0 */