#P5005. 「长乐集训 2017 Day2」字符串匹配

「长乐集训 2017 Day2」字符串匹配

Description

对于一个字符集大小为 C C 的字符串 P P 我们可以将任意两种字符在 P P 中的位置进行互换,例如 P=abcba P = \texttt{abcba} ,我们交换 a, b \texttt{a, b} 就变为 bacab \texttt{bacab} ,交换 a, d \texttt{a, d} 就变为 dbcbd \texttt{dbcbd} ,交换可以进行任意次。若交换后 P P 变为字符串 Q Q ,我们称 P,Q P, Q 是匹配的。

现在给定两个字符集大小为 C C 的字符串 S,T S, T 请你求出 S S 中有多少个连续子串与 T T 是匹配的。

Input Format

第一行两个整数 Case,C \texttt{Case}, C 表示数据组数和字符集大小,字符用 1C 1 \sim C 的整数表示。

每组数据第一行两个整数 n,m n, m 表示 S S 的长度与 T T 的长度。

第二行 n n 个正整数表示字符串 S S

第三行 m m 个正整数表示字符串 T T

Output Format

对于每组数据输出两行。

第一行一个整数 ans \texttt{ans} ,表示 S S 中有多少个连续子串与 T T 是匹配的。

第二行从小到大输出 ans \texttt{ans} 个整数,表示 S S 中与 T T 匹配的子串的首位置 (从 1 1 开始编号)。

Sample

样例输入

3 3
6 3
1 2 1 2 3 2
3 1 3
6 3
1 2 1 2 1 2
3 1 3
6 3
1 1 2 1 2 1
3 1 3

样例输出

3
1 2 4
4
1 2 3 4
3
2 3 4

Hint

10% 10 \% 的数据,n,m,C1000 n, m, C \leq 1000

另有 20% 20 \% 的数据,n,m105,C40 n, m \leq 10 ^ 5, C \leq 40

另有 30% 30 \% 的数据,n,m,C105 n, m, C \leq 10 ^ 5

100% 100 \% 的数据,1n,m,C106,Case=3 1 \leq n, m, C \leq 10 ^ 6, \texttt{Case} = 3