CF BUDDY
← Problems·

1893B · Neutral Tonality

1700 · constructive algorithms, greedy, sortings

Problem: You are given an array aa consisting of nn integers, as well as an array bb consisting of mm integers.

Let LIS(c)\text{LIS}(c) denote the length of the longest increasing subsequence of array cc. For example, LIS([2,1,1,3])\text{LIS}([2, \underline{1}, 1, \underline{3}]) = 22, LIS([1,7,9])\text{LIS}([\underline{1}, \underline{7}, \underline{9}]) = 33, LIS([3,1,2,4])\text{LIS}([3, \underline{1}, \underline{2}, \underline{4}]) = 33.

You need to insert the numbers b1,b2,,bmb_1, b_2, \ldots, b_m into the array aa, at any positions, in any order. Let the resulting array be c1,c2,,cn+mc_1, c_2, \ldots, c_{n+m}. You need to choose the positions for insertion in order to minimize LIS(c)\text{LIS}(c).

Formally, you need to find an array c1,c2,,cn+mc_1, c_2, \ldots, c_{n+m} that simultaneously satisfies the following conditions:

  • The array a1,a2,,ana_1, a_2, \ldots, a_n is a subsequence of the array c1,c2,,cn+mc_1, c_2, \ldots, c_{n+m}.
  • The array c1,c2,,cn+mc_1, c_2, \ldots, c_{n+m} consists of the numbers a1,a2,,an,b1,b2,,bma_1, a_2, \ldots, a_n, b_1, b_2, \ldots, b_m, possibly rearranged.
  • The value of LIS(c)\text{LIS}(c) is the minimum possible among all suitable arrays cc.

Input Format: Each test contains multiple test cases. The first line contains a single integer tt (1t104)(1 \leq t \leq 10^4) — the number of test cases. The description of the test cases follows.

The first line of each test case contains two integers n,mn, m (1n2105,1m2105)(1 \leq n \leq 2 \cdot 10^5, 1 \leq m \leq 2 \cdot 10^5) — the length of array aa and the length of array bb.

The second line of each test case contains nn integers a1,a2,,ana_1, a_2, \ldots, a_n (1ai109)(1 \leq a_i \leq 10^9) — the elements of the array aa.

The third line of each test case contains mm integers b1,b2,,bmb_1, b_2, \ldots, b_m (1bi109)(1 \leq b_i \leq 10^9) — the elements of the array bb.

It is guaranteed that the sum of nn over all test cases does not exceed 21052\cdot 10^5, and the sum of mm over all test cases does not exceed 21052\cdot 10^5.

Output Format: For each test case, output n+mn + m numbers — the elements of the final array c1,c2,,cn+mc_1, c_2, \ldots, c_{n+m}, obtained after the insertion, such that the value of LIS(c)\text{LIS}(c) is minimized. If there are several answers, you can output any of them.

Note: In the first test case, LIS(a)=LIS([6,4])=1\text{LIS}(a) = \text{LIS}([6, 4]) = 1. We can insert the number 55 between 66 and 44, then LIS(c)=LIS([6,5,4])=1\text{LIS}(c) = \text{LIS}([6, 5, 4]) = 1.

In the second test case, LIS([1,7,2,4,5])\text{LIS}([\underline{1}, 7, \underline{2}, \underline{4}, \underline{5}]) = 44. After the insertion, c=[1,1,7,7,2,2,4,4,5,5]c = [1, 1, 7, 7, 2, 2, 4, 4, 5, 5]. It is easy to see that LIS(c)=4\text{LIS}(c) = 4. It can be shown that it is impossible to achieve LIS(c)\text{LIS}(c) less than 44.

Sample Cases

Case 1

Input

7
2 1
6 4
5
5 5
1 7 2 4 5
5 4 1 2 7
1 9
7
1 2 3 4 5 6 7 8 9
3 2
1 3 5
2 4
10 5
1 9 2 3 8 1 4 7 2 9
7 8 5 4 6
2 1
2 2
1
6 1
1 1 1 1 1 1
777

Output

6 5 4
1 1 7 7 2 2 4 4 5 5
9 8 7 7 6 5 4 3 2 1
1 3 5 2 4
1 9 2 3 8 8 1 4 4 7 7 2 9 6 5
2 2 1
777 1 1 1 1 1 1

Similar problems

00:00:00
Loading editor…
Welcome! I'm your coding tutor for this problem. Use the chips below to reveal stored hints or get AI feedback on your code. I'll guide you step by step — never giving away the solution.

Sign in to unlock AI tutor feedback