给定一个长度为 n 的排列 p=[p1,p2,…,pn]。称下标 i(1≤i<n)为“好位置”,如果存在 j 满足 i<j≤n 且 pi>pj。记原排列中“好位置”的个数为 G(p)。
要求构造另一个排列 q,满足:
小苯定义一个数组的“好位置”为:满足其右侧存在比其小的元素形式化的即:
在数组a中对于1≤i<n存在1≤i<j≤n使得ai>aj,则称i为“好位置”。
现在小苯有一个长度为n 的排列p,他希望你构造一个长为n的排列q,满足p=q同时p,q的“好位置”个数相同。
本题包含多组测试数据。
第一行一个正整数T(1≤T≤10000),表示测试数据的组数。
接下来对于每组测试数据,输入包含两行
第一行一个正整数n(1≤n≤200000),表示排列p的长度。
第二行n个正整数pi(1≤pi≤n),表示排列p。(保证输入是一个排列)
(保证所有测试数据中,n的总和不超过200000)
输出包含T行,对于每组测试数据输出一行。
如果可以找到一个满足条件的q,则先输出一行一个字符串“YES”(不含双引号),表示可以找到,再在下一行输出一行n个数字表示满足条件的排列q(有多解输出任意即可。)
如果找不到一个满足条件的q,则输出一个“NO”(不含双引号)。
输入
2
4
2 1 3 4
3
1 2 3
输出
YES
1 2 4 3
NO
对于第一个测试数据:
[2,1,3,4]的"好位置”个数为1。(好位置有:i=1)
[1,2,4,3]的“好位置”个数也为1。(好位置有:i=3)