编程题
### 问题描述
小蓝和小桥正在玩一个有趣的游戏。他们有一个长度为 $n$ 的整数数组 $a$ 和一个由小写英文字母组成的字符串 $s$。现在他们需要将数组 $a$ 中的数字变成字符串 $s$ 中的字母,使最终得到的字符串与 $s$ 相同。
具体来说,他们会不断进行以下操作:
从数组 $a$ 中选择一个数字 $x$ 和一个字母 $y$,将数组 $a$ 中所有等于 $x$ 的数字替换成 $y$。
例如,如果初始时数组 $a=[2,3,2,4,1]$,字符串 $s$ 为 "cacta",则他们可以通过下列操作得到字符串 "cacta":
- 选择数字 $2$ 和字母 $c$,将数组 $a$ 中所有等于 $2$ 的数字替换成 $c$,得到数组 $a=[c,3,c,4,1]$。
- 选择数字 $3$ 和字母 $a$,将数组 $a$ 中所有等于 $3$ 的数字替换成 $a$,得到数组 $a=[c,a,c,4,1]$。
- 选择数字 $4$ 和字母 $t$,将数组 $a$ 中所有等于 $4$ 的数字替换成 $t$,得到数组 $a=[c,a,c,t,1]$。
- 选择数字 $1$ 和字母 $a$,将数组 $a$ 中所有等于 $1$ 的数字替换成 $a$,得到数组 $a=[c,a,c,t,a]$。
最终,他们将得到的所有字母连接起来,得到字符串 "cacta"。
现在,问你能否通过这些操作从数组 $a$ 得到字符串 $s$?
### 输入格式
第一行包含一个整数 $t$,表示测试数据组数。
对于每组数据,第一行包含一个整数 $n$,表示数组 $a$ 和字符串 $s$ 的长度。
第二行包含 $n$ 个整数 $a_1,a_2,\dots,a_n$,表示数组 $a$ 中的元素。
第三行包含一个长度为 $n$ 的字符串 $s$,表示目标字符串。
### 输出格式
对于每组数据,输出一行,如果可以通过操作从数组 $a$ 得到字符串 $s$,则输出 "YES",否则输出 "NO"。
### 样例输入
```txt
7
5
2 3 2 4 1
cacta
1
50
a
2
11 22
ab
4
1 2 2 1
aaab
5
1 2 3 2 1
aaaaa
6
1 10 2 9 3 8
azzfdb
7
1 2 3 4 1 1 2
abababb
```
### 样例输出
```txt
YES
YES
YES
NO
YES
YES
NO
```
### 样例说明
第一个测试用例对应题目描述中的样例。
第二个测试用例中,我们可以选择数字 $50$ 和字母 $\texttt{a}$,此时 $a=[\texttt{a}]$。
第三个测试用例中,我们可以先选择数字 $11$ 和字母 $\texttt{a}$,此时 $a=[a,22]$。再选择数字 $22$ 和字母 $\texttt{b}$,此时 $a=[a,b]$。
第五个测试用例中,我们可以将每个数字都替换成字母 $\texttt{a}$。
### 评测数据规模
对于 $100$% 的评测数据,$1\leq t \leq 10^3, 1\leq n \leq 50, 1\leq a_i \leq 50$。