问题 5334 --切分长整数序列

5334: 切分长整数序列★★★

时间限制: 1 Sec  内存限制: 256 MB
提交: 76  解决: 33
[提交][状态][命题人:]

题目描述

你现在得到一组n个由范围从1到9的值组成的序列。

你需要将其分成至少两个部分(部分是一个由原序列中的元素组成的连续不断的序列)(换句话说,你需要在序列中某些元素设置间隔),分割得到的这些整数,后面的数比前面的数要大。

也就是说:如果原序列分割为t1,t2,…,tk,k为分割方案中元素的个数,那么对从1 到 k−1的每一个 i,表达式ti<ti+1

例如,如果s=654,你能将其分成两个部分[6,54],那它就是一个合适的方案。但是如果你将其分成[65,4],那么它就是一个不符合要求的方案,因为65>4。如果 s=123,那么你可以将其分成新序列[1,23], [1,2,3] ,但不能分割为 [12,3]。

输入

第一行输入包含一个整数q (1≤q≤300),表示总共几组数据。

第i组数据第一行包含一个整数ni(2≤ni≤300),表示在序列中有几个值。

第i组数据第二行包含一串仅由范围从1到9的值组成的长度ni的字符串si。

输出

如果第i组数据中的数字系列不能以在问题介绍中描述的方式分成至少两个部分,请打印单独一行”NO”

否则在第一行打印”YES”以回应输入,并在第二行打印在你的分割方案中元素的总量ki,在第三行打印在你的分割方案中ki个字符串 ti,1,ti,2,…,ti,ki。

样例输入
Copy
4
6
654321
4
1337
2
33
4
2122
样例输出
Copy
YES
3
6 54 321
YES
3
1 3 37
NO
YES
2
21 22

提示

来源

[提交][状态]