int n,m,nxt[1000006]; char a[1000006],b[1000006]; intmain() { // ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); CI (a+1)>>(b+1); n=strlen(a+1); m=strlen(b+1); nxt[1]=0; int j=0; for (int i=2;i<=m;i++) { while (b[i]!=b[j+1]&&j>0) j=nxt[j]; if (b[i]==b[j+1]) { j++; nxt[i]=j; } }
j=0; for (int i=0;i<n;i++) { while (a[i+1]!=b[j+1]&&j>0) j=nxt[j]; if (a[i+1]==b[j+1]) j++; if (j==m) cout<<i+1-m+1<<endl; } for (int i=1;i<=m;i++) cout<<nxt[i]<<" "; cout<<endl; return0; }
int n,m,nxt[1000006],f[1000006]; char a[1000006],b[1000006],c[1000006];
intmain() { // ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); CI (a+1)>>(b+1); n=strlen(a+1); m=strlen(b+1); nxt[1]=0; int j=0; for (int i=2;i<=m;i++) { while (b[i]!=b[j+1]&&j>0) j=nxt[j]; if (b[i]==b[j+1]) { j++; nxt[i]=j; } }
int top=0; for (int i=0;i<n;i++) { c[++top]=a[i+1]; // cout<<top<<c[top]<<endl; while ((a[i+1]!=b[j+1])&&j>0) j=nxt[j];
if (a[i+1]==b[j+1]) j++; f[top]=j; if (j==m) top-=m,j=f[top]; } c[++top]='\0'; cout<<(c+1)<<endl; return0; }
int n,m,nxt[1000006],ans=0; char b[1000006]; intmain() { // ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); CI m; CI (b+1); m=strlen(b+1); nxt[1]=0; int j=0; for (int i=2;i<=m;i++) { while (b[i]!=b[j+1]&&j>0) j=nxt[j]; if (b[i]==b[j+1]) { j++; nxt[i]=j; } }