#include int length(size_t n) { if (n < 10) { return 1; } else if (n < 100) { return 2; } else if (n < 1000) { return 3; } else if (n < 10000) { return 4; } else if (n < 100000) { return 5; } else if (n < 1000000) { return 6; } else if (n < 10000000) { return 7; } return 8; } bool length(size_t n, size_t a, size_t b) { if (length(a) != length(b)) return false; if (length(n) != 2 * length(a)) return false; return true; } bool is_concut(size_t n, size_t a, size_t b) { int k = length(a); int a_arr[10]= {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; int b_arr[10] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; int n_arr[10] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; for (size_t i = 0; i < k; i++) { a_arr[i] = a % 10; a /= 10; b_arr[i] = b % 10; b /= 10; } for (size_t i = 0; i < 2 * k; i++) { n_arr[i] = n % 10; n /= 10; } for (size_t i = 0; i < 2 * k; i++) { if (n_arr[i] == -1) return true; bool found = false; for (size_t j = 0; j < k; j++) { if (n_arr[i] == a_arr[j] || n_arr[i] == b_arr[j]) { found = true; break; } } if (!found) { return false; } } return true; } int main() { size_t iters, n, a, b; std::cin >> iters; for (size_t i = 0; i < iters; i++) { std::cin >> n >> a >> b; if (!(n > a && n > b)) { if (a > b) { std::swap(a, n); } else { std::swap(b, n); } } if (n != a * b) { std::cout << "NO" << std::endl; continue; } if (a % 10 != 0 && b % 10 != 0) { std::cout << "NO" << std::endl; continue; } if (!length(n, a, b)) { std::cout << "NO" << std::endl; continue; } if (!is_concut(n, a, b)) { std::cout << "NO" << std::endl; continue; } std::cout << "YES" << std::endl; } }