Підпослідовності, що повторюються#3624

Підпослідовності, що повторюються

10 секунд
64 мегабайти
Легка

Ви — мисливець за скарбами, який подорожує по світу. Нарешті, вам потрапив до рук стародавній манускрипт, у якому вказано місце, де сховано скарб. На перший погляд текст манускрипту виглядає як беззмістовний рядок символів. Насправді ж місце розміщення скарбу сховано у вигляді найбільшої повторюваної підпослідовності тексту.

Давайте уточнимо, що таке найбільша повторювана підпослідовність рядка. Розіб'ємо спочатку вхідний рядок на дві частини і . Знайдемо найбільшу спільну підпослідовність рядків та (найдовший рядок , який є підпослідовністю та ). Оскільки існує декілька способів розбити на дві частини, то існує декілька можливих послідовностей . Найбільшою повторюваною підпослідовністю буде найдовша з них. Наприклад, найбільшою повторюваною підпослідовністю рядка "ABCABCABAB" є "ABAB", яка отримується в результаті розбиття "ABCABCABAB" на "ABCABC" та "ABAB".

Вам потрібно знайти найбільшу повторювану підпослідовність і знайти схований скарб!

Вхідні дані

Вхідні дані складаються з декількох тестів. Кожен тест складається з одного рядка і містить до великих літер. Гарантується, що кожен вхідний рядок містить як мінімум одну повторювану підпослідовність.

Останній рядок містить "#END" і не опрацьовується.

Вихідні дані

Для кожного тесту в окремому рядку потрібно вивести найбільшу повторювану підпослідовність. Якщо таких підпослідовностей існує декілька, то виведіть довільну з них.

Приклади

Приклад 1

Loading
Loading