//Dai Ca Di Hoc
#include <bits/stdc++.h>
#define sz(x) int(x.size())
#define reset(x) memset(x, 0,sizeof(x))
#define MIN(x,y) if (x > (y)) x = (y)
#define MAX(x,y) if (x < (y)) x = (y)
#define PB push_back
#define mp make_pair
#define F first
#define S second
#define Task "divseq"
#define maxn 300005
#define MOD 1000000007
#define remain(x) if (x > MOD) x -= MOD
#define pii pair<int, int>
using namespace std;
string s;
int n, zmax = 0;
int z[maxn], c[maxn];
void z_function () {
z[0] = 0;
for (int k=1, l=0, r=0; k<n; ++k) {
// chuan bi gia tri x toi thieu
int x = 0;
if (k <= r) x = min(r-k+1, z[k-l]);
// mo rong doan
while (k+x < n && s[x] == s[k+x]) x++;
// ghi nhan, cap nhat
z[k] = x;
if (k+x-1 > r)
l = k, r = k+x-1;
}
}
int main()
{
ios_base::sync_with_stdio(0);
freopen(Task".inp", "r", stdin);
freopen(Task".out", "w", stdout);
z_function();
return 0;
}
Ly9EYWkgQ2EgRGkgSG9jCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIHN6KHgpIGludCh4LnNpemUoKSkKI2RlZmluZSByZXNldCh4KSBtZW1zZXQoeCwgMCxzaXplb2YoeCkpCiNkZWZpbmUgTUlOKHgseSkgaWYgKHggPiAoeSkpIHggPSAoeSkKI2RlZmluZSBNQVgoeCx5KSBpZiAoeCA8ICh5KSkgeCA9ICh5KQojZGVmaW5lIFBCIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIFRhc2sgImRpdnNlcSIKI2RlZmluZSBtYXhuIDMwMDAwNQojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CiNkZWZpbmUgcmVtYWluKHgpIGlmICh4ID4gTU9EKSB4IC09IE1PRAojZGVmaW5lIHBpaSBwYWlyPGludCwgaW50PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cmluZyBzOwppbnQgbiwgem1heCA9IDA7CmludCB6W21heG5dLCBjW21heG5dOwoKdm9pZCB6X2Z1bmN0aW9uICgpIHsKICAgIHpbMF0gPSAwOwogICAgZm9yIChpbnQgaz0xLCBsPTAsIHI9MDsgazxuOyArK2spIHsKICAgICAgICAvLyBjaHVhbiBiaSBnaWEgdHJpIHggdG9pIHRoaWV1CiAgICAgICAgaW50IHggPSAwOwogICAgICAgIGlmIChrIDw9IHIpIHggPSBtaW4oci1rKzEsIHpbay1sXSk7CiAgICAgICAgLy8gbW8gcm9uZyBkb2FuCiAgICAgICAgd2hpbGUgKGsreCA8IG4gJiYgc1t4XSA9PSBzW2sreF0pIHgrKzsKICAgICAgICAvLyBnaGkgbmhhbiwgY2FwIG5oYXQKICAgICAgICB6W2tdID0geDsKICAgICAgICBpZiAoayt4LTEgPiByKQogICAgICAgICAgICBsID0gaywgIHIgPSBrK3gtMTsKICAgIH0KfQoKaW50IG1haW4oKQp7CgoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGZyZW9wZW4oVGFzayIuaW5wIiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKFRhc2siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIHpfZnVuY3Rpb24oKTsKICAgIHJldHVybiAwOwp9Cgo=