eolymp
bolt
Try our new interface for solving problems
Problems

Суффиксная игра (Hard)

Суффиксная игра (Hard)

Девочка Ксюша играет в игру со строками. Ксюша по очереди, одну за одной, выписывает буквы на листочек. На первом шаге она выписывает букву \textbf{s_1}, на втором --- \textbf{s_2}, и так далее. Также у Ксюши есть строка \textbf{t}, с помощью которой считается количество очков, заработанное Ксюшей в игре. Количество очков, которое заработает Ксюша, считается следующим образом. На первом шаге к нему прибавляется количество вхождений строки \textbf{s_1} в \textbf{t}. На втором шаге к нему прибавляется количество вхождений строки \textbf{s_1s_2} в \textbf{t}. На третьем шаге --- количество вхождений \textbf{s_1s_2s_3} в \textbf{t}. И так далее. Изначально количество очков равно \textbf{0}. Ксюша в любой момент времени может прекратить выписывать буквы. Помогите ей выбрать стратегию, которая максимизирует количество очков, полученных в игре. Другими словами, найдите такую строку \textbf{s_1s_2... s_n}, что если Ксюша будет выписывать символы этой строки, она получит максимально возможное количество очков. \InputFile В первой строке записана строка \textbf{t} (\textbf{1} ≤ \textbf{|t|} ≤ \textbf{10^5}). Строка \textbf{t} состоит только из маленьких латинских букв. \OutputFile Выведите ответ на задачу --- строку \textbf{s}. Если таких строк несколько, выведите минимальную в лексикографическом порядке.
Time limit 1 second
Memory limit 256 MiB
Input example #1
aaa
Output example #1
aaa