CF2010C2.Message Transmission Error (hard version)

传统题 时间 2000 ms 内存 256 MiB 9 尝试 19 已通过 5 标签

Message Transmission Error (hard version)

题目描述

在伯兰州立大学,服务器之间的本地网络并非总是无差错运行。当连续传输两条完全相同的消息时,可能会发生错误,导致两条消息合并为一条。在这种合并过程中,第一条消息的末尾与第二条消息的开头重合。当然,合并只能发生在相同字符处。合并的长度必须是一个正数,且小于消息文本的长度。

例如,连续传输两条消息 "abrakadabra" 时,有可能以所述错误类型传输,得到类似 "abrakadabrabrakadabra""abrakadabrakadabra" 的消息(第一种情况下合并发生在 1 个字符处,第二种情况下合并发生在 4 个字符处)。

给定接收到的消息 tt,请判断它是否可能是本地网络运行中发生所述错误后的结果,如果是,请给出一个可能的 ss 值。

两条消息完全重叠的情况不应视为错误。例如,如果收到的消息是 "abcd",应认为其中没有错误。同样,仅仅将一条消息接在另一条消息之后也不表示有错误。例如,如果收到的消息是 "abcabc",也应认为其中没有错误。

输入

输入包含一个非空字符串 tt,由小写拉丁字母组成。字符串 tt 的长度不超过 41054 \cdot 10^5 个字符。

输出

如果消息 tt 不可能包含错误,则在一行中输出 "NO"(不带引号)。

否则,第一行输出 "YES"(不带引号),并在下一行输出字符串 ss —— 一个可能导致该错误发生的原始消息。如果存在多个可能的答案,输出任意一个均可。

样例

样例 1

输入:

abrakadabrabrakadabra

输出:

YES
abrakadabra

样例 2

输入:

acacacaca

输出:

YES
acacaca

样例 3

输入:

abcabc

输出:

NO

样例 4

输入:

abababab

输出:

YES
ababab

样例 5

输入:

tatbt

输出:

NO

样例解释

在第二个样例中,字符串 "acacaca" 也是一个可接受的答案。

在线编程 IDE

建议全屏模式获得最佳体验