Задачі
Суфіксне дерево
Суфіксне дерево
Побудуйте суфіксне дерево для заданого рядка \textbf{s}.
\InputFile
Перший рядок вхідного файлу містить рядок \textbf{s} (\textbf{1} ≤ \textbf{|s|} ≤ \textbf{100000}). Рядок складається з маленьких латинських букв.
\OutputFile
У першому рядку вихідного файлу виведіть два натуральних числа \textbf{n} та \textbf{m}, відокремлених пропуском - число вершин та ребер у суфіксному дереві відповідно. У наступних \textbf{m} рядках виведіть описи ребер у форматі <\textbf{предок}> <\textbf{потомок}> <\textbf{l}> <\textbf{r}>. Цей запис означає, що на ребрі записано рядок \textbf{s\[l..r\]}, при цьому значення \textbf{l} повинно бути мінімально можливим. Коренем дерева повинна бути вершина з номером \textbf{1}. Вершини повинні бути пронумеровані натуральними числами, які не перевищують \textbf{n},
Вхідні дані #1
ababb
Вихідні дані #1
7 6 1 4 1 2 1 6 2 2 4 2 3 5 4 5 5 5 6 3 3 5 6 7 5 5