Gorilla and Permutation
题目描述
Gorilla 和 Noobish_Monk 找到了三个数 n,m 和 k (m<k)。他们决定构造一个长度为 n 的排列。
对于这个排列,Noobish_Monk 想出了以下函数:g(i) 是排列中前 i 个不大于 m 的数的和。类似地,Gorilla 想出了函数 f,其中 f(i) 是排列中前 i 个不小于 k 的数的和。长度为 i 的前缀是原始数组的前 i 个元素组成的子数组。
例如,如果 n=5,m=2,k=5,排列是 [5,3,4,1,2],那么:
- f(1)=5,因为 5≥5;g(1)=0,因为 5>2;
- f(2)=5,因为 3<5;g(2)=0,因为 3>2;
- f(3)=5,因为 4<5;g(3)=0,因为 4>2;
- f(4)=5,因为 1<5;g(4)=1,因为 1≤2;
- f(5)=5,因为 2<5;g(5)=1+2=3,因为 2≤2。
请帮助他们找到一个排列,使得 (∑i=1nf(i)−∑i=1ng(i)) 的值最大。
† 长度为 n 的排列是由 1 到 n 的 n 个不同整数以任意顺序组成的数组。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是一个排列(因为数组中出现了两个 2),[1,3,4] 也不是一个排列(因为 n=3,但数组中出现了 4)。
输入格式
第一行包含一个整数 t(1≤t≤104)——测试用例的数量。
每个测试用例的唯一一行包含三个整数 n,m 和 k(2≤n≤105;1≤m<k≤n)——要构造的排列的大小和两个整数。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例,输出一个排列——满足问题条件的一组数字。如果有多个解决方案,则输出其中任何一个。
样例 #1
样例输入 #1
3
5 2 5
3 1 3
10 3 8
样例输出 #1
5 3 4 1 2
3 2 1
10 9 8 4 7 5 6 1 2 3
提示
在第一个示例中,(∑i=1nf(i)−∑i=1ng(i))=5⋅5−(0⋅3+1+3)=25−4=21。