CF2128E2 Submedians (Hard Version)

Description

This is the hard version of the problem. The only difference is that in this version, you are asked to find a subarray for all submedians. You can make hacks only if both versions of the problem are solved. An integer $ v $ is a median of an array $ b $ of length $ m $ if and only if: - $ v $ is greater than or equal to at least $ \lceil \frac{m}{2} \rceil $ elements of the array, and - $ v $ is less than or equal to at least $ \lceil \frac{m}{2} \rceil $ elements of the array. For instance: - the only median of $ [9, 3, 7] $ is $ 7 $ , - the medians of $ [5, 3, 7, 9] $ are $ 5 $ , $ 6 $ , and $ 7 $ , and - the only median of $ [2, 2, 2] $ is $ 2 $ . You're given an integer $ k $ and an array $ a_1, \ldots, a_n $ of integers between $ 1 $ and $ n $ . An integer $ v $ from $ 1 $ to $ n $ is said to be a submedian if there exists at least one pair of indices $ (l, r) $ such that - $ 1 \leq l \leq r \leq n $ , - $ r - l + 1 \geq k $ , - $ v $ is a median of the subarray $ [a_l, \ldots, a_r] $ . Find all submedians and for each of them, find any corresponding pair of indices $ (l, r) $ .

Input Format

Each test contains multiple test cases. The first line contains the number of test cases $ t $ ( $ 1 \le t \le 50\,000 $ ). The description of the test cases follows. The first line of each test case contains two integers $ n $ and $ k $ ( $ 1 \leq k \leq n \leq 300\,000 $ ). The second line of each test case contains $ n $ integers $ a_1, a_2, \ldots, a_n $ ( $ 1 \leq a_i \leq n $ ). It is guaranteed that the sum of $ n $ over all test cases doesn't exceed $ 300\,000 $ .

Output Format

For each test case, output your answer in the following format. On the first line, output $ c $ , the number of submedians. On the $ i $ -th of the following $ c $ lines, output three integers $ v_i $ , $ l_i $ , and $ r_i $ such that - $ r_i - l_i + 1 \geq k $ , and - $ v_i $ is one of the medians of the subarray $ [a_{l_i}, \ldots, a_{r_i}] $ . Each submedian should be reported exactly once, that is, integers $ v_1, \ldots, v_c $ must be pairwise distinct. The order in which they are reported does not matter. If there are many solutions, you can print any of them.

Explanation/Hint

In the first test case, the subarrays of length at least $ k = 3 $ are - $ (l = 1, r = 3) $ : $ [4, 1, 2] $ whose only median is $ 2 $ , - $ (l = 2, r = 4) $ : $ [1, 2, 4] $ whose only median is $ 2 $ , and - $ (l = 1, r = 4) $ : $ [4, 1, 2, 4] $ whose medians are $ 2 $ , $ 3 $ , and $ 4 $ . In the second test case, one possible output is - $ (l = 4, r = 5) $ : $ [2, 1] $ whose medians are $ 1 $ and $ 2 $ , - $ (l = 1, r = 5) $ : whose only median is $ 2 $ , - $ (l = 3, r = 4) $ : $ [3, 2] $ whose medians are $ 2 $ and $ 3 $ . All of these subarrays are indeed of length at least $ 2 $ . Note that it can be proven that no subarray of length at least $ 2 $ admits $ 4 $ or $ 5 $ as a median.