{"raw_statement":[{"iden":"statement","content":"扶苏为了写计算理论大作业已经 $36$ 小时没有合眼了。\n\n为了能快点睡觉，扶苏找到了 $n$ 份文献，第 $i$ 份文献是一个字符串 $s_i$，她打算把这些文献组合起来。\n\n具体来说，一共有两种操作：\n\n- `1 x y`：把文献 $s_x$ 整体拼接到 $s_y$ 的后面，然后删除 $s_x$。\n- `2 x y`：查询 $s_x$ 和 $s_y$ 是否**相似**。\n\n我们保证在 `1 x y` 操作出现后，字符串 $s_x$ **不会**出现在接下来的任何操作中。这就是说，操作 $1$ 至多有 $n-1$ 次。\n\n**相似**的定义是：对两个字符串 $s_x$ 和 $s_y$，如果存在一种重新排列 $s_x$ 的方法，使得重排后的 $s_x$ 和 $s_y$ 相等，则称 $s_x$ 和 $s_y$ **相似**。\n\n例如，假设 $s_1 = \\texttt{ab}, s_2 = \\texttt{cd}, s_3 = \\texttt{abcd}$，则执行 `1 1 2` 后，$s_1$ 被删除，$s_2 = \\texttt{cdab}, s_3 = \\texttt{abcd}$；继续执行 `2 2 3` 后，因为可以把 $s_2$ 重排为 $\\texttt{abcd}$，所以 $s_2$ 和 $s_3$ 相似。\n\n注意，操作 $2$ 不会对字符串做出实际修改。"},{"iden":"input","content":"第一行是两个整数，分别表示文献的数量 $n$ 和操作的数量 $q$。  \n接下来 $n$ 行，每行一个字符串，第 $i$ 行的字符串表示 $s_i$。  \n接下来 $q$ 行，每行三个整数 $op, x, y$，其含义见『题目描述』。"},{"iden":"output","content":"对个操作 $2$，输出一行一个字符串。如果 $s_x$ 和 $s_y$ 相似，则输出 $\\texttt{Yes}$，否则输出 $\\texttt{No}$。"},{"iden":"note","content":"### 数据规模与约定\n\n- 对 $30\\%$ 的数据，保证 $n = 2$，$q = 1$。\n- 对 $60\\%$ 的数据，保证 $n \\leq 6$，$q \\leq 6$，$|s_i| \\leq 6$。\n- 对 $100\\%$ 的数据，保证 $2 \\leq n \\leq 10^5$，$1 \\leq q \\leq 10^6$，$1 \\leq o \\leq 2$，$1 \\leq x, y \\leq n$，且输入字符串的总长度不超过 $10^6$，输入字符串仅含小写英文字母，且不是空串。"}],"translated_statement":null,"sample_group":[["4 4\nab\ncd\nabcd\nabcc\n1 1 2\n2 2 3\n2 3 4\n2 2 4","Yes\nNo\nNo"]],"show_order":[],"formal_statement":null,"simple_statement":null,"has_page_source":false}