EduBrick

E. Сжать строку

3000 мс · 256 МБ · всё или ничего

Как предыдущая задача, но вывести надо саму наименьшую строку tt, из повторений которой складывается ss.

Считается то же самое: d=n−pn−1d = n - p_{n-1}. Если nn делится на dd, ответ — префикс длины dd. Иначе строка не сжимается, и ответ — она сама.

Стоит проговорить, почему наименьший период даёт именно наименьшее tt: любое разложение s=tks = t^k означает, что ∣t∣|t| — период строки и делитель nn, а наименьший период — наименьший из таких.

Обратите внимание, что не всякий период годится в качестве длины tt: нужен делитель. Например, у aabaaa наименьший период равен 4, но 66 на 44 не делится, и строка не сжимается.

Формат ввода

Одна строка длины nn (1≤n≤1061 \le n \le 10^6) из строчных латинских букв.

Формат вывода

Одна строка — наименьшая tt, для которой ss является её повторением.

Примеры

ввод
aaaaa
вывод
a
ввод
abcabcabc
вывод
abc
ввод
aabaaa
вывод
aabaaa
Войдите, чтобы отправлять решения.