该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
标题来自 くうになる (feat. 可不&初音ミク)。
题目描述
芙宁娜有 n 个字符串 s1,⋯,sn。
现在芙宁娜想要从中选出字符串 si,sj,sk,sl,并交换 si,sj 的一个前缀,使得交换完之后它们恰好分别是 sk,sl。形式化地,你需要找到四个字符串 si,sj,sk,sl,然后你需要将 si,sj 划分为一个非空前缀和一个非空后缀,即 si=A+B,sj=C+D(其中 + 表示拼接),且满足 A=C,B=D,sk=C+B,sl=A+D。
例如,四个字符串分别是 si=abc,sj=def,sk=dc,sl=abef,考虑 A=ab,B=c,C=d,D=ef,那么就有
si=A+B,sj=C+D,sk=C+B,sl=A+D
于是这一组 (i,j,k,l) 就符合要求。找到任意一组解即可,或报告无解。
注意这里只需要 A=C,B=D,并不要求 i,j,k,l 互不相同。例如
也是一组合法的 si,sj,sk,sl(尽管 si=sj)。其中 A=b,B=ababb,C=ba,D=babb。
输入格式
本题有多组数据。 第一行一个正整数 T 表示数据组数。对于每组数据:
第一行一个正整数 n 表示字符串个数。
接下来 n 行,每行一个仅由小写字母构成的字符串。
输出格式
对于每组数据:
若无解,输出一行一个字符串 NO
。
否则,你首先需要输出 YES
,然后输出六个正整数 i,j,k,l,p,q,表示你选择的字符串是 si,sj,sk,sl,且 A=si[1⋯p],B=si[p+1⋯Li−1],C=sj[1⋯q],D=sj[q+1⋯Lj−1]。
这里字符串的下标和字符串的编号从 1 开始,Li 表示第 i 个字符串的长度。你需要保证:
- A=C,B=D。
- 1≤p<Li,1≤q<Lj。
- si=A+B,sj=C+D,sk=C+B,sl=A+D。
样例 1 输入
样例 1 输出
测试点约束
设 M 为一组数据中的字符串总长。
对于所有测试点,4≤n,M≤5×105,且每个测试点中每组数据的 n 之和与 M 之和均不超过 5×105。
各子任务的详细信息见下表:
子任务编号 |
n |
M |
分值 |
依赖子任务 |
Subtask #1 |
≤10 |
≤50 |
15 |
无 |
Subtask #2 |
≤20 |
≤500 |
10 |
1 |
Subtask #3 |
≤500 |
2 |
Subtask #4 |
≤2000 |
3 |
Subtask #5 |
≤3000 |
≤5×105 |
4 |
Subtask #6 |
≤5×105 |
45 |
5 |