Fie un șir de caractere S
format din litere mici ale alfabetului englez, indexat de la 0
.
Cerința
Aflați pentru fiecare i ≥ 2
cel mai mare l
pentru care există 0 < j < i − l + 1
unde stringurile \( [{s}_{0}{s}_{1}…{s}_{l-1}] \), \( [{s}_{j}{s}_{j+1}…{s}_{j+l-1}] \) și \( [{s}_{i-l+1}{s}_{i-l+2}…{s}_{i}] \) sunt egale. Dacă nu există un astfel de l
, afișați valoarea 0
.
Date de intrare
Pe prima linie a intrării standard se află un număr natural N
reprezentând dimensiunea șirului. Pe a doua linie se află șirul de caractere S
.
Date de ieșire
La ieșirea standard se vor afișa, pe linii diferite, N − 2
numere naturale reprezentând valorile lui l
pentru fiecare poziție mai mare sau egală decât 2
.
Restricții și precizări
1 ≤ n ≤ 1.000.000
Exemplul 1:
Intrare
10 babaaabaab
Ieșire
0 0 0 0 1 2 0 1
Exemplul 2:
Intrare
15 ldildildildqldi
Ieșire
0 0 0 0 1 2 3 4 5 0 1 2 3