1343 - 字符串匹配

通过次数

1

提交次数

1

时间限制 : 1 秒
内存限制 : 128 MB

给出两个字符串s1和s2,若s1的区间[l, r]子串与s2完全相同,则称s2在 s1中出现了,其出现位置为l。现在请你求出s2在s1中所有出现的位置。
定义一个字符串s的 border 为s的一个非s本身的子串t,满足t既是s的前缀,又是s的后缀。
对于s2,你还需要求出对于其每个位置的最长 border的长度。

输入

第一行为一个字符串,即为s1。
第二行为一个字符串,即为s2。
对于全部的测试点,保证1<=|s1|,|s2|<=10^6。

输出

输出若干行,每行一个整数,按从小到大的顺序输出s2在s1中出现的位置。
最后一行输出|s2|个整数,第i个整数表示s2的长度为i的前缀的最长 border 长度。

样例

输入

ABABABC
ABA

输出

1
3
0 0 1

提示

样例解释:

对于s2长度为3的前缀ABA,字符串A既是其后缀也是其前缀,且是最长的,因此最长border长度为1。