zjq's-Happy-Array
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

题目背景


作为今天比赛的第一道题,肯定先要介绍一下ACM赛制。

竞赛进行5个小时,一般有10道或以上试题,由同队的三名选手使用同一台计算机协作完成。当解决了一道试题之后,将其提交给评测机,由评测机判断其是否正确。若提交的程序运行不正确,则该程序将被退回给参赛队,参赛队可以进行修改后再一次提交该问题。程序判定结果有如下7种:
1. Accepted. ——通过! 恭喜你(AC)
2. Wrong Answer.——答案错误。你的程序没有得到正确的输出 (WA)
3. Runtime Error.——程序运行时出错,可能是除数为0,数组越界,递归太深等。(RE)
4. Time Limit Exceeded. ——运行时间超限。程序没在规定时间内出答案。(TLE)
5. Presentation Error. ——格式错误。程序没按规定的格式输出答案。(PE)
6. Memory Limit Exceeded. ——内存超限。程序所需要的内存超过限制。(MLE)
7. Compile Error. ——编译错误。程序未通过编译。(CE)

竞赛结束后,参赛各队以解出问题的多少进行排名,若解出问题数相同,按照总用时的长短排名。
总用时为所有解决了的问题所用时间之和。一个解决了的问题所用的时间是竞赛开始到提交被接受的时间加上该问题的罚时(每次提交通不过,罚时20分钟)。没有解决的问题不记时。例如:A, B两队都正确完成两道题目,其中A队提交这两题的时间分别是比赛开始后1:002:45, B队为1:202:00,但B队有一题提交了2次。这样A队的总用时为1:00+2:45=3:45B队为1:20+2:00+0:20=3:40,所以B队以总用时少而获胜。竞赛的所有书面材料(包括试题)一般用英语写出, 区域赛中可以使用其它语言。总决赛可以使用的程序设计语言包括pascal, c, c++java,也可以使用其它语言。具体的操作系统及语言版本各年有所不同。

然而本场比赛是ACM赛制的个人赛, 所以只能靠自己一个人一台机器完成若干题目,若两人出题数目相同,则罚时少者排名靠前,若两人出题数目相同且罚时相同,则二者排名相同。
值此之际, zjq希望各位选手能够有选择的阅读题面, 能够快速通读体面信息, 排除掉题面中的冗余信息, 抓住关键信息, 有利于自己能够快速把握题目、通过题目。
倘若自己不知道能做哪些题, 可以参考排行榜上其他人的通过题目来判断哪些题是可以做的、哪些题可能是非常难的, 但也不要太依赖于排行榜, 因为大家的个人水平不同, 对待同一题目有人会觉得非常简单, 而有人却觉得非常困难, 这都是正常现象。

如果你真的从开头读到了这一行, 非常抱歉,你已经比别人多浪费了数分钟, 快去下面开心地切题吧! 祝你比赛开心!


题目描述

zjq 想让你为他构造一个Happy\ Array,希望大家能度过一场愉快的比赛

一个数组为Happy\ Array当且仅当他满足下面的所有条件:
- 所有数都是[1,n]的正整数
- 数组长度恰好为k
- 数组内所有数的和恰好为s

如果不存在这样的数组请输出"NO"(不包括引号),否则先输出一行"YES"(不包括引号),再输出一行Happy\ Array的长度,最后一行输出Happy\ Array


可能有多组符合题意的答案, 输出任意一组即可。

输入描述:

输入有若干行:
第一行输入一个t,表示有t组测试数据
第二行包含三个正整数n,k,s,其中1\leq n \leq 10^{5}1 \leq k \leq 10^{5}1 \leq s \leq 10^{10}
保证\sum k \leq 10^{6}

输出描述:

对于每组测试数据:
第一行输出"YES"或"NO"(不包括引号)
如果输出的是YES,第二行输出Happy\ Array的长度,第三行输出Happy\ Array
示例1

输入

复制
2
5 3 10
4 2 5

输出

复制
YES
3
3 3 4
YES
2
2 3

说明

第一组数据需要你为zjq构造一个长度为3,数的范围为[1,5],数组之和为10Happy\ Array
那么[3,3,4]长度为3,且每个数都在[1,5]范围内,和恰好为10
第二组数据需要你为zjq构造一个长度为2,数的范围为[1,4],数组之和为5Happy\ Array
那么[2,3]长度为2,且每个数都在[1,4]范围内,和恰好为5