题目描述
扶苏为了写计算理论大作业已经 36 小时没有合眼了。
为了能快点睡觉,扶苏找到了 n 份文献,第 i 份文献是一个字符串 si,她打算把这些文献组合起来。
具体来说,一共有两种操作:
1 x y
:把文献 sx 整体拼接到 sy 的后面,然后删除 sx。
2 x y
:查询 sx 和 sy 是否相似。
我们保证在 1 x y
操作出现后,字符串 sx 不会出现在接下来的任何操作中。这就是说,操作 1 至多有 n−1 次。
相似的定义是:对两个字符串 sx 和 sy,如果存在一种重新排列 sx 的方法,使得重排后的 sx 和 sy 相等,则称 sx 和 sy 相似。
例如,假设 s1=ab,s2=cd,s3=abcd,则执行 1 1 2
后,s1 被删除,s2=cdab,s3=abcd;继续执行 2 2 3
后,因为可以把 s2 重排为 abcd,所以 s2 和 s3 相似。
注意,操作 2 不会对字符串做出实际修改。
输入格式
第一行是两个整数,分别表示文献的数量 n 和操作的数量 q。
接下来 n 行,每行一个字符串,第 i 行的字符串表示 si。
接下来 q 行,每行三个整数 op,x,y,其含义见『题目描述』。
输出格式
对个操作 2,输出一行一个字符串。如果 sx 和 sy 相似,则输出 Yes,否则输出 No。
提示
数据规模与约定
- 对 30% 的数据,保证 n=2,q=1。
- 对 60% 的数据,保证 n≤6,q≤6,∣si∣≤6。
- 对 100% 的数据,保证 2≤n≤105,1≤q≤106,1≤o≤2,1≤x,y≤n,且输入字符串的总长度不超过 106,输入字符串仅含小写英文字母,且不是空串。