#CF1949K. 构造三角形

构造三角形

K. 构造三角形

时间限制22
内存限制256256 兆字节

给定 nn 个正整数 x1,x2,,xnx_1,x_2,\dots,x_n,以及三个满足 na+nb+nc=nn_a+n_b+n_c=n 的正整数 na,nb,ncn_a,n_b,n_c

你需要把这 nn 个数分成三组,满足:

  1. 第一组恰好 nan_a 个数,第二组恰好 nbn_b 个数,第三组恰好 ncn_c 个数。
  2. 设三组的和分别为 sa,sb,scs_a,s_b,s_c,则 sa,sb,scs_a,s_b,s_c 可以构成一个面积为正的三角形

判断是否存在合法分组方式。如果存在,给出任意一种方案。


输入格式

每个测试包含多组数据。 第一行一个整数 tt1t1051\le t\le 10^5)—— 测试用例数量。

每个测试用例格式如下: 第一行四个整数 n,na,nb,ncn,n_a,n_b,n_c($3\le n\le 2\times 10^5,\ 1\le n_a,n_b,n_c\le n-2,\ n_a+n_b+n_c=n$)。

第二行 nn 个整数 x1,x2,,xnx_1,x_2,\dots,x_n1xi1091\le x_i\le 10^9)。

保证所有测试用例的 nn 之和不超过 2×1052\times 10^5


输出格式

对于每组数据,若存在合法分组,输出 YES,否则输出 NO

若存在解,按以下格式输出三组:

下一行输出 nan_a 个整数,表示第一组。 下一行输出 nbn_b 个整数,表示第二组。 下一行输出 ncn_c 个整数,表示第三组。

nn 个数应当是原数组的一个排列,并且满足题目要求。 多解输出任意一组即可。


样例输入

4
6 2 2 2
1 1 1 1 1 1
5 3 1 1
1 1 1 1 1
6 2 2 2
1 1 1 1 1 3
8 1 2 5
16 1 1 1 1 1 1 12

样例输出

YES
1 1 
1 1 
1 1 
NO
NO
YES
16 
12 1 
1 1 1 1 1 

样例说明

  • 第一组每组和为 22,构成等边三角形。
  • 第二、三组无解。
  • 第四组和为 16,13,516,13,5,满足三角不等式。