#include <iostream> // 包含输入输出流相关的头文件
#include <vector>    // 包含 vector 容器相关的头文件
using namespace std; // 使用标准命名空间,避免重复写 std::

// 自定义 gcd 函数,计算两个数的最大公约数
int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a % b); // 使用递归方式计算最大公约数
}

// 判断是否可以到达目标位置的函数
bool canReach(int x, int y, int a, int b, int c, int d) {
    // 判断x方向是否可达:x 必须是 c 和 d 的最大公约数的倍数
    if (x % gcd(c, d) != 0) {
        return false; // 如果 x 不是 gcd(c, d) 的倍数,返回 false
    }
    // 判断y方向是否可达:y 必须是 a 和 b 的最大公约数的倍数
    if (y % gcd(a, b) != 0) {
        return false; // 如果 y 不是 gcd(a, b) 的倍数,返回 false
    }
    return true; // 如果 x 和 y 都满足条件,返回 true
}

int main() {
    int T; // 定义变量 T,表示测试数据的组数
    cin >> T; // 从标准输入读取测试数据组数 T

    // 创建一个二维向量 data,用于存储每组测试数据
    vector<vector<int>> data(T, vector<int>(6)); // 每组数据包含 6 个整数

    // 读取每组测试数据
    for (int i = 0; i < T; ++i) { // 遍历每组测试数据
        for (int j = 0; j < 6; ++j) { // 遍历每组数据中的 6 个整数
            cin >> data[i][j]; // 从标准输入读取每个整数并存储到 data 中
        }
    }

    // 对每组测试数据判断是否可以到达目标位置
    for (int i = 0; i < T; ++i) { // 遍历每组测试数据
        // 从 data 中提取每组数据的 6 个整数
        int x = data[i][0], y = data[i][1], a = data[i][2], b = data[i][3], c = data[i][4], d = data[i][5];
        if (canReach(x, y, a, b, c, d)) { // 调用 canReach 函数判断是否可以到达目标位置
            cout << "YES" << endl; // 如果可以到达,输出 "YES"
        } else {
            cout << "NO" << endl; // 如果不能到达,输出 "NO"
        }
    }

    return 0; // 程序正常结束,返回 0
}