#include #include #include #include #include #include int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::string line; std::istringstream iss; int t = 0; std::cin >> t; std::cin.get(); for (int i = 0; i < t; i++) { std::getline(std::cin, line); iss.clear(); iss.str(line); int32_t n, a, b; iss >> n >> a >> b; std::string n_ = std::to_string(n); //std::cout << "n_: " << n_ << "\n"; std::string a_ = std::to_string(a); //std::cout << "a_: " << a_ << "\n"; std::string b_ = std::to_string(b); //std::cout << "b_: " << b_ << "\n\n-----\n"; // std::cerr << "\n=== " << line << " ===\n\n"; if (a * b != n) { std::cout << "NO\n"; // std::cout << "soucin: " << a_.length() << ", " << b_.length() << "\n"; continue; } if (a_.length() != b_.length() || n_.length() != 2 * a_.length()) { std::cout << "NO\n"; // std::cout << "delka: " << a_ << " " << a_.length() << ", " << b_ << " " << b_.length() << "\n"; continue; } if (a % 10 == 0 && b % 10 == 0) { std::cout << "NO\n"; // std::cout << "modulo: " << a_.length() << ", " << b_.length() << "\n"; continue; } std::map> map; for (size_t j = 0; j < 10; ++j) { map[std::to_string(j)[0]] = {false, 1}; } for (size_t j = 0; j < n_.length(); ++j) { map[n_[j]] = {true, 1}; } std::string cat = a_ + b_; // std::cout << "cat: " << cat << ", " << cat.length() << '\n'; for (size_t j = 0; j < cat.length(); ++j) { if (!map[cat[j]].first) { // std::cout << "mapa: " << a_.length() << ", " << b_.length() << "\n"; goto umri; } map[cat[j]].second++; } // for (auto m : map) { // auto [f, c] = m; // std::cout << f << ", {" << c.first << ", " << c.second << "} \n"; // } for (size_t j = 0; j < n_.length(); ++j) { if (map[n_[j]].first && map[n_[j]].second < 2) { // std::cout << "concat: " << a_.length() << ", " << b_.length() << "\n"; goto umri; } } std::cout << "YES\n"; continue; umri: std::cout << "NO\n"; } return 0; }