#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
}