【题目描述】
对于一个字符集大小为C的字符串p,可以将任意两个字符在p中的位置进行互换,例如p=12321,交换1、2得到21312,交换1、4得到42324,交换可以进行任意次。若交换后p变成了字符串q,则成q与p是匹配的。
给定两个字符集大小为C的字符串s、t,求出s中有多少个连续子串与t匹配。
【输入】
第一行两个整数T、C,分别表示数据组数和字符集大小,字符用1∼C的整数来表示。
对于每组数据:第一行两个整数n、m,分别表示s、t的长度。
第二行n个正整数表示s。
第三行m个正整数表示t。
【输出】
对于每组数据,输出包括两行:
第一行一个正整数k,表示s中有k个连续子串与t匹配。
第二行从小到大输出k个数,表示s中与t匹配的连续子串的首位下标(下标从1开始)。
【输入样例】
文本
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
【提示】
【数据规模及约定】
对于10%的数据,满足n,m,C≤1000;
对于另外20%的数据,满足n,m≤105,C≤40;
对于另外30%的数据,满足n,m,C≤105;
对于100%的数据,满足1≤n,m,C≤106,T=3。