Wonderful Coloring - 2
Contest: Codeforces Round 734 (Div. 3)
Difficulty rating: 1400
Tags: binary search, constructive algorithms, data structures, greedy

This problem is an extension of the problem "Wonderful Coloring - 1". It has quite many differences, so you should read this statement completely.

Recently, Paul and Mary have found a new favorite sequence of integers $$$a_1, a_2, \dots, a_n$$$. They want to paint it using pieces of chalk of $$$k$$$ colors. The coloring of a sequence is called wonderful if the following conditions are met:

1. each element of the sequence is either painted in one of $$$k$$$ colors or isn't painted;
2. each two elements which are painted in the same color are different (i. e. there's no two equal values painted in the same color);
3. let's calculate for each of $$$k$$$ colors the number of elements painted in the color — all calculated numbers must be equal;
4. the total number of painted elements of the sequence is the maximum among all colorings of the sequence which meet the first three conditions.

E. g. consider a sequence $$$a=[3, 1, 1, 1, 1, 10, 3, 10, 10, 2]$$$ and $$$k=3$$$. One of the wonderful colorings of the sequence is shown in the figure.

The example of a wonderful coloring of the sequence $$$a=[3, 1, 1, 1, 1, 10, 3, 10, 10, 2]$$$ and $$$k=3$$$. Note that one of the elements isn't painted.

Help Paul and Mary to find a wonderful coloring of a given sequence $$$a$$$.

Input format:
The first line contains one integer $$$t$$$ ($$$1 \le t \le 10000$$$) — the number of test cases. Then $$$t$$$ test cases follow.

Each test case consists of two lines. The first one contains two integers $$$n$$$ and $$$k$$$ ($$$1 \le n \le 2\cdot10^5$$$, $$$1 \le k \le n$$$) — the length of a given sequence and the number of colors, respectively. The second one contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le n$$$).

It is guaranteed that the sum of $$$n$$$ over all test cases doesn't exceed $$$2 \cdot 10^5$$$.

Output format:
Output $$$t$$$ lines, each of them must contain a description of a wonderful coloring for the corresponding test case.

Each wonderful coloring must be printed as a sequence of $$$n$$$ integers $$$c_1, c_2, \dots, c_n$$$ ($$$0 \le c_i \le k$$$) separated by spaces where

- $$$c_i=0$$$, if $$$i$$$-th element isn't painted;
- $$$c_i>0$$$, if $$$i$$$-th element is painted in the $$$c_i$$$-th color.

Remember that you need to maximize the total count of painted elements for the wonderful coloring. If there are multiple solutions, print any one.

Constraints:
Time limit: 2.0 s
Memory limit: 256.0 MB

Note:
In the first test case, the answer is shown in the figure in the statement. The red color has number $$$1$$$, the blue color — $$$2$$$, the green — $$$3$$$.

Example input:
6
10 3
3 1 1 1 1 10 3 10 10 2
4 4
1 1 1 1
1 1
1
13 1
3 1 4 1 5 9 2 6 5 3 5 8 9
13 2
3 1 4 1 5 9 2 6 5 3 5 8 9
13 3
3 1 4 1 5 9 2 6 5 3 5 8 9

Example output:
1 1 0 2 3 2 2 1 3 3
4 2 1 3
1
0 0 1 1 0 1 1 1 0 1 1 1 0
2 1 2 2 1 1 1 1 2 1 0 2 2
1 1 3 2 1 3 3 1 2 2 3 2 0

Editorial:
Since we must use exactly $$$k$$$ colors, each element that occurs in the sequence may have no more than $$$k$$$ painted occurrences. Let's select for each element $$$x$$$ $$$min(k, cnt_x)$$$ its occurrences where $$$cnt_x$$$ is the number of all its occurrences in the sequence.
Let $$$b_1, b_2, \dots, b_m$$$ be a sequence of all elements that occur in the sequence $$$a$$$, but in the sequence $$$b$$$ they will occur only once. Let's create a $$$1$$$-indexed array $$$p$$$ in which we will add sequentially indices of the selected occurrences of $$$b_1$$$ in the sequence $$$a$$$, then the selected occurrences of $$$b_2$$$, and so on till $$$b_m$$$. Currently, $$$p$$$ is a set of occurrences, which wonderful coloring is a wonderful coloring of the whole sequence $$$a$$$ because if we want to paint an occurrence outside $$$p$$$, we can do it only by selecting an occurrence of the same element in $$$p$$$ which we will not paint so that no more than $$$k$$$ occurrences will be painted.
We must use exactly $$$k$$$ colors and paint for each color an equal number of occurrences, hence if we want to paint all occurrences from $$$p$$$, we must remove from it the minimum number of occurrences so that the size of the array $$$p$$$ will be divided by $$$k$$$ (i. e. remove the number of occurrences equal to the remainder of dividing the size of $$$p$$$ by $$$k$$$). We can remove any occurrences, for example, let's delete it from the suffix of $$$p$$$. Currently, we can paint all occurrences from $$$p$$$ using the following rule: the occurrence $$$p_i$$$ we must paint in the color with a number $$$((i - 1) \% k) + 1$$$ where $$$\%$$$ takes the remainder of dividing the left operand by the right operand. So all occurrences from $$$p$$$ will be painted and all $$$k$$$ colors will be used. Since all occurrences of one element belong to one subsegment of $$$p$$$ and their number isn't greater than $$$k$$$, they will be painted in different colors.
It may be so that the array $$$p$$$ before painting will be empty. In this case, the wonderful coloring of $$$a$$$ doesn't contain any painted element.