Décalage cyclique et recherche de sous-chaînes répétées

C# Hard loops

Tâche «Décalage cyclique et recherche de sous-chaînes répétées»

Étant donné une chaîne S composée de lettres latines minuscules. Il est nécessaire d'effectuer un décalage cyclique de la chaîne vers la gauche de K positions (K peut être supérieur à la longueur de la chaîne). Après le décalage, trouver toutes les sous-chaînes répétées non chevauchantes de longueur L (L est donné) dans la nouvelle chaîne. Une sous-chaîne répétée est une sous-chaîne qui apparaît deux fois ou plus dans la chaîne, et ses occurrences ne doivent pas se chevaucher. Afficher le nombre de ces sous-chaînes et les sous-chaînes elles-mêmes dans l'ordre lexicographique. S'il n'y a pas de telles sous-chaînes, afficher 0.

Format d\ entrée

Sur la première ligne, un entier N (1 ≤ N ≤ 1000) — la longueur de la chaîne. Sur la deuxième ligne, la chaîne S elle-même. Sur la troisième ligne, un entier K (0 ≤ K ≤ 10^9) — le nombre de décalages. Sur la quatrième ligne, un entier L (1 ≤ L ≤ N) — la longueur de la sous-chaîne.

Format de sortie

Sur la première ligne, afficher un entier M — le nombre de sous-chaînes uniques répétées non chevauchantes de longueur L. Si M > 0, sur les M lignes suivantes, afficher les sous-chaînes elles-mêmes dans l'ordre lexicographique.

Exemples

Exemple 1

ENTRÉE
5 abcde 3 2
SORTIE
0

Exemple 2

ENTRÉE
10 abracadabra 5 4
SORTIE
1 abra
main.cs