#CF2000C. 数值字符串模板

数值字符串模板

C. 数值字符串模板

每次测试的时间限制:22
内存限制:256256 MB

克里斯蒂娜有一个数组 aa,称为模板,由 nn 个整数组成。她还有 mm 个字符串,每个字符串仅由小写拉丁字母组成。字符串从 11mm 编号。她想检查哪些字符串匹配该模板。

如果同时满足以下所有条件,则字符串 ss 被认为是匹配模板的:

  • 字符串 ss 的长度等于数组 aa 中的元素个数。
  • 数组 aa 中相同的数字对应字符串 ss 中相同的字符。即:如果 ai=aja_i = a_j,则 si=sjs_i = s_j,其中 1i,jn1 \le i, j \le n
  • 字符串 ss 中相同的字符对应数组 aa 中相同的数字。即:如果 si=sjs_i = s_j,则 ai=aja_i = a_j,其中 1i,jn1 \le i, j \le n

换句话说,字符串的字符与数组的元素之间必须存在一一对应关系。

例如,如果 a=[3,5,2,1,3]a = [3,5,2,1,3],那么字符串 "abfda" 匹配该模板,而字符串 "afbfa" 不匹配,因为字符 "f" 同时对应了数字 1155


输入格式

第一行包含一个整数 tt1t1041 \le t \le 10^4)——测试用例的数量。

接下来是每个测试用例的描述:

  • 第一行包含一个整数 nn1n21051 \le n \le 2 \cdot 10^5)——数组 aa 的元素个数。
  • 第二行包含 nn 个整数 aia_i109ai109-10^9 \le a_i \le 10^9)——数组 aa 的元素。
  • 第三行包含一个整数 mm1m21051 \le m \le 2 \cdot 10^5)——要检查的字符串数量。
  • 接下来的 mm 行,每行包含一个非空字符串 sjs_j1sj21051 \le |s_j| \le 2 \cdot 10^5),仅由小写拉丁字母组成。

保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5,所有字符串长度之和不超过 21052 \cdot 10^5


输出格式

对于每个测试用例,输出 mm 行。在第 ii 行(1im1 \le i \le m)输出:

  • "YES",如果第 ii 个字符串匹配模板;
  • "NO",否则。

你可以以任何大小写输出答案(例如,"yEs""yes""Yes""YES" 都将被视为肯定答案)。


示例

输入:

3
5
3 5 2 1 3
2
abfda
afbfa
2
1 2
3
ab
abc
aa
4
5 -3 5 -3
4
aaaa
bcbc
aba
cbcb

输出:

YES
NO
YES
NO
NO
NO
YES
NO
YES

说明

  • 第一个测试用例的解释见题目描述。