塑料正在学 KMP 字符串匹配,以下是他写的获取匹配函数数组的代码:
如果你看不懂代码中 到底指什么,这里有一份塑料留下的使用说明书:
定义 为同时是字符串
的后缀和字符串
的前缀的最长字符串,则
函数返回的数组
中
等于
的长度,其中
为
的长度为
的前缀
。特别的,若不存在这样的字符串,则
。
塑料测试了一下,当 而
时,得到
。
现在给你两个长度均为 的字符串
,其中这两个字符串都只由
abc
三种字符构成,而塑料想知道是否存在一个字符串 使得
。
当你认为有解时,为了证实确实存在这样的字符串,还请构造一个合法的 出来,要求字符串长度在
到
之间,且
也只由
abc
三种字符构成。
对于一个字符串
,长度为
的前缀为
如字符串
abcde
的长度为 的前缀为
abc
。
本题有多组测试样例。
第一行输入一个正整数
(
),表示有
组样例。
接下来对于每组测试样例,输入三行:
第一行输入一个正整数
(
) 表示字符串
的长度;
第二行和第三行分别输入
。
保证单个测试点内所有测试样例的
之和不超过
。
对于每组测试样例,
若有解,请你先输出一个YES,然后输出一行一个正整数
,表示你构造的字符串
的长度,然后再输出字符串
;
若无解,只需要输出NO即可。你可以以任意大小写输出Yes和No(例如,字符串yEs、yes、Yes和YES将被识别为肯定的回答)。