#include<iostream>
#define maxsize 1000005
using namespace std;
int gnext[maxsize];
void getnext(string t){ /*模板串t*/
gnext[0]=-1;
int loc=0,k=-1;
while(loc<t.length()){
if(k==-1||t[loc]==t[k]){
gnext[++loc]=++k;
}
else k=gnext[k];
}
}
int kmp(string s,string t){
int i=0,j=0;
while(i<s.length()){
if(j==-1||s[i]==t[j]){
i++;j++;
}
else{
j=gnext[j];
}
if(j==t.length()){
cout<<i-j<<" ";
j=gnext[j];
}
}
}
int main(){
string s,t;
int slen,tlen;
cin>>tlen>>t>>slen>>s;
getnext(t);
kmp(s,t);
system("pause");
return 0;
}