Description
对于一个字符集大小为 C 的字符串 P 我们可以将任意两种字符在 P 中的位置进行互换,例如 P=abcba,我们交换 a, b 就变为 bacab,交换 a, d 就变为 dbcbd,交换可以进行任意次。若交换后 P 变为字符串 Q,我们称 P,Q 是匹配的。
现在给定两个字符集大小为 C 的字符串 S,T 请你求出 S 中有多少个连续子串与 T 是匹配的。
第一行两个整数 Case,C 表示数据组数和字符集大小,字符用 1∼C 的整数表示。
每组数据第一行两个整数 n,m 表示 S 的长度与 T 的长度。
第二行 n 个正整数表示字符串 S。
第三行 m 个正整数表示字符串 T。
对于每组数据输出两行。
第一行一个整数 ans,表示 S 中有多少个连续子串与 T 是匹配的。
第二行从小到大输出 ans 个整数,表示 S 中与 T 匹配的子串的首位置 (从 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% 的数据,n,m,C≤1000
另有 20% 的数据,n,m≤105,C≤40
另有 30% 的数据,n,m,C≤105
100% 的数据,1≤n,m,C≤106,Case=3