#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fr first
#define sc second
int read(){
int res=0,f=1;char c=getchar();
while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
while (c>='0'&&c<='9') {res=res*10+(c-'0');c=getchar();}
return res*f;
}
const int N=1e6+5;
string a,b;
int nxt[N];
signed main(){
cin>>a>>b,a=' '+a,b=' '+b;
for (int i=2;i<b.size();i++){
int j=nxt[i-1]+1;
while (j&&b[i]!=b[j]) j=nxt[j];
nxt[i]=j;
}
for (int i=1,j=1;i<a.size();i++){
if (a[i]==b[j]) j++;
else j=nxt[j];
if (j==b.size()){
cout<<i-b.size()+2<<'\n';
j=nxt[j-1]+1;
}
}
for (int i=1;i<b.size();i++)
cout<<nxt[i]<<' ';
return 0;
}
https://www.luogu.com.cn/record/175416592
0 分…… :c