#include <iostream>
#include <unordered_map>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int t;
cin >> t; // Number of test cases
while (t--) {
int n, k;
cin >> n >> k; // Number of cards and exchange rate
vector<int> cards(n);
unordered_map<int, int> frequency; // To store frequency of each number
// Taking input for numbers on the cards and counting frequency
for (int i = 0; i < n; ++i) {
cin >> cards[i];
frequency[cards[i]]++;
}
int removed_cards = 0;
// Iterate over each frequency to determine cards removed by exchanges
for (auto& pair : frequency) {
// Calculate how many full sets of k cards can be made for this number
int full_sets = pair.second / k;
// Update total removed cards
removed_cards += full_sets * k;
}
// Calculate the remaining cards after all possible exchanges
int remaining_cards = n - removed_cards;
// Check for cards with counts less than k
for (auto& pair : frequency) {
if (pair.second < k && pair.second > 0) {
remaining_cards += pair.second;
break;
}
}
cout << remaining_cards << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsgLy8gTnVtYmVyIG9mIHRlc3QgY2FzZXMKICAgIAogICAgd2hpbGUgKHQtLSkgewogICAgICAgIGludCBuLCBrOwogICAgICAgIGNpbiA+PiBuID4+IGs7IC8vIE51bWJlciBvZiBjYXJkcyBhbmQgZXhjaGFuZ2UgcmF0ZQogICAgICAgIAogICAgICAgIHZlY3RvcjxpbnQ+IGNhcmRzKG4pOwogICAgICAgIHVub3JkZXJlZF9tYXA8aW50LCBpbnQ+IGZyZXF1ZW5jeTsgLy8gVG8gc3RvcmUgZnJlcXVlbmN5IG9mIGVhY2ggbnVtYmVyCiAgICAgICAgCiAgICAgICAgLy8gVGFraW5nIGlucHV0IGZvciBudW1iZXJzIG9uIHRoZSBjYXJkcyBhbmQgY291bnRpbmcgZnJlcXVlbmN5CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICAgICAgY2luID4+IGNhcmRzW2ldOwogICAgICAgICAgICBmcmVxdWVuY3lbY2FyZHNbaV1dKys7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGludCByZW1vdmVkX2NhcmRzID0gMDsKICAgICAgICAKICAgICAgICAvLyBJdGVyYXRlIG92ZXIgZWFjaCBmcmVxdWVuY3kgdG8gZGV0ZXJtaW5lIGNhcmRzIHJlbW92ZWQgYnkgZXhjaGFuZ2VzCiAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZnJlcXVlbmN5KSB7CiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBob3cgbWFueSBmdWxsIHNldHMgb2YgayBjYXJkcyBjYW4gYmUgbWFkZSBmb3IgdGhpcyBudW1iZXIKICAgICAgICAgICAgaW50IGZ1bGxfc2V0cyA9IHBhaXIuc2Vjb25kIC8gazsKICAgICAgICAgICAgLy8gVXBkYXRlIHRvdGFsIHJlbW92ZWQgY2FyZHMKICAgICAgICAgICAgcmVtb3ZlZF9jYXJkcyArPSBmdWxsX3NldHMgKiBrOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHJlbWFpbmluZyBjYXJkcyBhZnRlciBhbGwgcG9zc2libGUgZXhjaGFuZ2VzCiAgICAgICAgaW50IHJlbWFpbmluZ19jYXJkcyA9IG4gLSByZW1vdmVkX2NhcmRzOwogICAgICAgIAogICAgICAgIC8vIENoZWNrIGZvciBjYXJkcyB3aXRoIGNvdW50cyBsZXNzIHRoYW4gawogICAgICAgIGZvciAoYXV0byYgcGFpciA6IGZyZXF1ZW5jeSkgewogICAgICAgICAgICBpZiAocGFpci5zZWNvbmQgPCBrICYmIHBhaXIuc2Vjb25kID4gMCkgewogICAgICAgICAgICAgICAgcmVtYWluaW5nX2NhcmRzICs9IHBhaXIuc2Vjb25kOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgY291dCA8PCByZW1haW5pbmdfY2FyZHMgPDwgZW5kbDsKICAgIH0KICAgIAogICAgcmV0dXJuIDA7Cn0K
Nwo1IDMKNCAxIDEgNCA0CjEgMTAKNwo3IDIKNCAyIDEgMTAwIDUgMiAzCjEwIDQKMSAxIDEgMSAxIDEgMSAxIDEgMQo1IDIKMyA4IDEgNDggNwo2IDIKMTAgMjAgMzAgMTAgMjAgNDAKNiAzCjEwIDIwIDMwIDEwIDIwIDQwCg==
7
5 3
4 1 1 4 4
1 10
7
7 2
4 2 1 100 5 2 3
10 4
1 1 1 1 1 1 1 1 1 1
5 2
3 8 1 48 7
6 2
10 20 30 10 20 40
6 3
10 20 30 10 20 40