//主串a, 模式串b
char a[maxn], b[maxn];
int nxt[maxn];
int la, lb;
void getNext(){
int j = 0;
rep(i, 2, lb){
while(j && b[i] != b[j+1]) j = nxt[j];
if(b[j+1] == b[i])j++;
nxt[i] = j;
}
}
void kmp(){
int j = 0;
rep(i, 1, la){
while(j > 0 && b[j+1] != a[i]) j = nxt[j];
if(b[j+1] == a[i]) j++;
if(j == lb) j = nxt[j];
}
}
//la = strlen(a + 1), lb = strlen(b + 1);