构造数组
题号:NC214084
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给你n,x ,y三个整数 你要构造一个数组
在该数组中 最长的单调递增的子序列长度是x
在该数组中 最长的单调递减的子序列长度是y

让你构造出一个这样的数组,如果有多个,输出字典序最小的那个

输入描述:

第一行是样例数T
1<T<20
接下来每一行输入 n,x,y(1<=x,y<=n)

输出描述:

对每组样例,第一行输出时候能够成功,如果可以构造输出YES,否则输出NO
如果可以构造要在下一行输出n个数,为你构造的数组,注意行末不要有多余空格。
示例1

输入

复制
4
10 1 10
10 10 1
10 5 5
10 8 8

输出

复制
YES
10 9 8 7 6 5 4 3 2 1
YES
1 2 3 4 5 6 7 8 9 10
YES
1 2 3 5 4 10 9 8 7 6
NO

说明

对样例解释:
第三个样例最长单调递增为1 2 3 5 10 为5
最长单调递减为10 9 8 7 6 为5