Олимпиадный тренинг

Задача . B. Монстры


Монокарп играет в очередную компьютерную игру. Как обычно, его персонаж занимается убийством монстров. Монокарпу противостоят \(n\) монстров, пронумерованных от \(1\) до \(n\), \(i\)-й из них изначально имеет \(a_i\) очков здоровья.

У персонажа Монокарпа есть способность, которая наносит \(k\) урона монстру с наибольшим текущим здоровьем. Если таких монстров несколько, выбирается тот, у которого меньший номер. Если здоровье монстра становится меньше или равно \(0\) после использования способности, то он умирает.

Монокарп использует свою способность до тех пор, пока все монстры не умрут. Ваша задача — определить порядок, в котором монстры будут умирать.

Входные данные

Первая строка содержит одно целое число \(t\) (\(1 \le t \le 10^4\)) — количество наборов входных данных.

Первая строка каждого набора содержит два целых числа \(n\) и \(k\) (\(1 \le n \le 3 \cdot 10^5\); \(1 \le k \le 10^9\)) — количество монстров и урон способности.

Вторая строка содержит \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^9\)) — начальное количество здоровья монстров.

Сумма \(n\) по всем наборах входных данных не превышает \(3 \cdot 10^5\).

Выходные данные

Для каждого набора входных данных выведите \(n\) целых чисел — номера монстров в порядке, в котором они будут умирать.

Примечание

В первом примере очки здоровья меняются следующим образом: \([1, 2, \underline{3}] \rightarrow [1, \underline{2}, 1] \rightarrow [\underline{1}, 0, 1] \rightarrow [-1, 0, \underline{1}] \rightarrow [-1, 0, -1]\). Монстр, который получит урон при следующем применении способности Монокарпа, обозначается подчеркнутым.

Во втором примере очки здоровья меняются следующим образом: \([\underline{1}, 1] \rightarrow [-2, \underline{1}] \rightarrow [-2, -2]\).

В третьем примере очки здоровья меняются следующим образом: \([2, \underline{8}, 3, 5] \rightarrow [2, \underline{5}, 3, 5] \rightarrow [2, 2, 3, \underline{5}] \rightarrow [2, 2, \underline{3}, 2] \rightarrow [\underline{2}, 2, 0, 2] \rightarrow [-1, \underline{2}, 0, 2] \rightarrow [-1, -1, 0, \underline{2}] \rightarrow [-1, -1, 0, -1]\).


Примеры
Входные данныеВыходные данные
1 3
3 2
1 2 3
2 3
1 1
4 3
2 8 3 5
2 1 3 
1 2 
3 1 2 4

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя