Автомат#4593

Автомат

1 секунда
256 мегабайтів
Складна

Задано рядок . Побудуйте детермінований скінченний автомат, який приймає всі суфікси рядка (і, можливо, інші скінченні рядки). Автомат повинен складатися з мінімальної кількості станів — , і не більше ніж переходів. Кожен стан автомата оголошується фінальним. Початковий стан має номер .

На зображенні нижче показано автомат з тестового прикладу для рядка .

Вхідні дані

В єдиному рядку задано слово , яке складається з малих латинських літер.

1 \leq |\textbf{s}| \leq 10^5

Вихідні дані

У першому рядку виведіть два числа і (1 \leq k \leq 2n) — кількість станів і кількість переходів. Далі виведіть рядків, у кожному з яких по два числа a_i, b_i (1 \leq a_i, b_i \leq n) та літеру c_i ('a' \leq c_i \leq 'z'), що означають наявність переходу зі стану a_i у b_i по літері c_i. Переходи можна виводити у довільному порядку. Якщо розв'язків декілька, виведіть будь-який із них.

Приклади

Приклад 1

Loading
Loading