← Home
write a go solution for Description:
The only difference between this problem and the easy version is the constraints on t and n.

You are given an array of n positive integers a_1,...,a_n, and a (possibly negative) integer c.

Across all permutations b_1,...,b_n of the array a_1,...,a_n, consider the minimum possible value of \sum_{i=1}^{n-1} |b_{i+1}-b_i-c|. Find the lexicographically smallest permutation b of the array a that achieves this minimum.

A sequence x is lexicographically smaller than a sequence y if and only if one of the following holds:

- x is a prefix of y, but xney;
- in the first position where x and y differ, the sequence x has a smaller element than the corresponding element in y.

Input Format:
Each test contains multiple test cases. The first line contains the number of test cases t (1<=t<=10^4). The description of the test cases follows.

The first line of each test case contains two integers n and c (1<=n<=2*10^5, -10^9<=c<=10^9).

The second line of each test case contains n integers a_1,...,a_n (1<=a_i<=10^9).

It is guaranteed that the sum of n over all test cases does not exceed 2*10^5.

Output Format:
For each test case, output n integers b_1,...,b_n, the lexicographically smallest permutation of a that achieves the minimum sumlimits_i=1^n-1|b_i+1-b_i-c|.

Note:
In the first test case, it can be proven that the minimum possible value of sumlimits_i=1^n-1|b_i+1-b_i-c| is 27, and the permutation b=[9,3,1,4,5,1] is the lexicographically smallest permutation of a that achieves this minimum: |3-9-(-7)|+|1-3-(-7)|+|4-1-(-7)|+|5-4-(-7)|+|1-5-(-7)|=1+5+10+8+3=27.

In the second test case, the minimum possible value of sumlimits_i=1^n-1|b_i+1-b_i-c| is 0, and b=[1,3,5] is the lexicographically smallest permutation of a that achieves this.

In the third test case, there is only one permutation b.. Output only the code with no comments, explanation, or additional text.