#CSP1206. 回文串 (palindrome)

    ID: 4573 Type: Default File IO: palindrome 1000ms 256MiB Tried: 24 Accepted: 8 Difficulty: 7 Uploaded By: Tags>CSP-S复赛模拟国庆集训

回文串 (palindrome)

题目描述

对于一个字符串,如果其从左向右读和从右向左读结果完全一致,则称其为回文串。

小 Y 最近在研究回文子串结构,他恰好有一个文本串 A=a1a2anA=a_1a_2\dots a_n。他想通过把 AA 中的字符重新排列,得到另一个字符串 B=b1b2bnB=b_1b_2\dots b_n,使得:

对于任意 l=2,3,,nl=2,3,\cdots,nBB 长度为 ll 的前缀都不是回文串,也就是 b1b2blb_1b_2\dots b_l 都不是回文串。

但小 Y 发现重排的过程非常复杂,他常常顾此失彼,因此他决定把这个任务交给你!

输入格式

palindrome.in 文件读入数据。

第一行包含一个整数 TT,表示数据组数。

对于每个测试数据,输入一行一个小写字母组成的字符串 AiA_i

输出格式

输出到 palindrome.out 文件。

对于每组测试数据:

如果不存在合法的构造,输出一行,内容为字符串 NO

否则,输出两行,第一行内容为字符串 YES,第二行为你重排后符合要求的字符串 BB 。如果有多个合法构造,输出任意一个即可。

样例 1

5
a
sos
abba
icpc
tenet
YES
a
YES
oss
NO
YES
icpc
YES
tente

可以证明,对于第三个情况没有合法的构造。

数据范围

对于每个测试点, 保证 1T105, 11\le T\le 10^5,~1\le 所有 AiA_i 的长度之和106\le 10^6

子任务 分数 附加约束条件
11 1515 AiA_i 的长度 10\le 10,所有 AiA_i 的长度之和100\le 100
22 2020 AiA_i 中只有两种字符
33 2525 AiA_i 中存在某个字符只出现过一次
44 4040 无附加限制