#include <iostream> using namespace std; struct TreeNode { int val; TreeNode* left, *right; TreeNode() : left(nullptr), right(nullptr){} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} }; TreeNode* init(TreeNode* r, int x) { if (!r) { r = new TreeNode(x); return r; } if (r ->val < x) r -> left = init(r -> left, x); else r -> right = init(r -> right, x); return r; } bool cmp(TreeNode* r1, TreeNode* r2) { if (!r1 && !r2) return true; if (!r1 || !r2) return false; if (r1 -> val != r2 -> val) return false; return cmp(r1 -> left, r2 -> left) && cmp(r1 -> right, r2 -> right); } int main() { int n; string s; while (cin >> n && n) { // 注意 while 处理多个 case cin >> s; TreeNode* r = nullptr; // cout << r<< endl; for (auto c : s) r = init(r, c - '0'); while (n --) { cin >> s; TreeNode* t = nullptr; for (auto c : s) t = init(t, c - '0'); if(cmp(r, t)) cout << "YES\n"; else cout << "NO\n"; } } } // 64 位输出请用 printf("%lld")