#include<cstdio>
#include<iostream>
#include<set>
#include<algorithm>
#define ll long long int
using namespace std;
multiset<ll> s;
ll n, k, c, inf = 1e18 + 2;
void initialize(){
s.clear();
return;
}
bool cmp(ll& a, ll& b){
return a < b;
}
bool safe(ll a, ll b){
if(a <= inf/b) return true;
return false;
}
ll check(ll x){
multiset<ll> :: iterator it;
it = s.lower_bound(x);
//cout << *it << endl;
if(it != s.end()) return *it;
return 0;
}
void remove_used(ll a){
multiset<ll> :: iterator it, newit;
it = s.find(a);
s.erase(it);
ll temp = c, curr = a*temp;
for(int j=1; j<k; j++){
it = s.lower_bound(curr);
temp = *it;
s.erase(it);
temp = temp*c;
curr = temp;
}
return;
}
bool IsPoss(){
if(s.empty()) return false;
bool flag = 0;
ll temp = c, start = *(s.begin()), curr = start*temp;
if(!safe(start, temp)) return false;
//printf("%lld ",start);
for(int j=1; j<k; j++){
ll result = check(curr);
if(!result) return false;
temp = result;
if(!safe(temp, c)) return false;
temp *= c;
curr = temp;
}
remove_used(start);
return true;
}
void solve(){
int ans = 0;
while(IsPoss()){
ans++;
}
printf("%d\n",ans);
return;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
initialize();
scanf("%lld %lld %lld",&n ,&k ,&c);
for(int j=0; j<n; j++){
ll temp;
scanf("%lld",&temp);
s.insert(temp);
}
solve();
}
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8c2V0PgojaW5jbHVkZTxhbGdvcml0aG0+CiNkZWZpbmUgbGwgbG9uZyBsb25nIGludAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCm11bHRpc2V0PGxsPiBzOwoKbGwgbiwgaywgYywgaW5mID0gMWUxOCArIDI7Cgp2b2lkIGluaXRpYWxpemUoKXsKICAgIHMuY2xlYXIoKTsKICAgIHJldHVybjsKfQoKYm9vbCBjbXAobGwmIGEsIGxsJiBiKXsKICAgIHJldHVybiBhIDwgYjsKfQoKYm9vbCBzYWZlKGxsIGEsIGxsIGIpewogICAgaWYoYSA8PSBpbmYvYikgcmV0dXJuIHRydWU7CiAgICByZXR1cm4gZmFsc2U7Cn0KCmxsIGNoZWNrKGxsIHgpewogICAgbXVsdGlzZXQ8bGw+IDo6IGl0ZXJhdG9yIGl0OwogICAgaXQgPSBzLmxvd2VyX2JvdW5kKHgpOwogICAgLy9jb3V0IDw8ICppdCA8PCBlbmRsOwogICAgaWYoaXQgIT0gcy5lbmQoKSkgcmV0dXJuICppdDsKICAgIHJldHVybiAwOwp9Cgp2b2lkIHJlbW92ZV91c2VkKGxsIGEpewogICAgbXVsdGlzZXQ8bGw+IDo6IGl0ZXJhdG9yIGl0LCBuZXdpdDsKICAgIGl0ID0gcy5maW5kKGEpOwogICAgcy5lcmFzZShpdCk7CiAgICBsbCB0ZW1wID0gYywgY3VyciA9IGEqdGVtcDsKICAgIGZvcihpbnQgaj0xOyBqPGs7IGorKyl7CiAgICAgICAgaXQgPSBzLmxvd2VyX2JvdW5kKGN1cnIpOwogICAgICAgIHRlbXAgPSAqaXQ7CiAgICAgICAgcy5lcmFzZShpdCk7CiAgICAgICAgdGVtcCA9IHRlbXAqYzsKICAgICAgICBjdXJyID0gdGVtcDsKICAgIH0KICAgIHJldHVybjsKfQoKYm9vbCBJc1Bvc3MoKXsKICAgIGlmKHMuZW1wdHkoKSkgcmV0dXJuIGZhbHNlOwogICAgYm9vbCBmbGFnID0gMDsKICAgIGxsIHRlbXAgPSBjLCBzdGFydCA9ICoocy5iZWdpbigpKSwgY3VyciA9IHN0YXJ0KnRlbXA7CiAgICBpZighc2FmZShzdGFydCwgdGVtcCkpIHJldHVybiBmYWxzZTsKICAgIC8vcHJpbnRmKCIlbGxkICIsc3RhcnQpOwogICAgZm9yKGludCBqPTE7IGo8azsgaisrKXsKICAgICAgICBsbCByZXN1bHQgPSBjaGVjayhjdXJyKTsKICAgICAgICBpZighcmVzdWx0KSByZXR1cm4gZmFsc2U7CiAgICAgICAgdGVtcCA9IHJlc3VsdDsKICAgICAgICBpZighc2FmZSh0ZW1wLCBjKSkgcmV0dXJuIGZhbHNlOwogICAgICAgIHRlbXAgKj0gYzsKICAgICAgICBjdXJyID0gdGVtcDsKICAgIH0KICAgIHJlbW92ZV91c2VkKHN0YXJ0KTsKICAgIHJldHVybiB0cnVlOwp9Cgp2b2lkIHNvbHZlKCl7CiAgICBpbnQgYW5zID0gMDsKICAgIHdoaWxlKElzUG9zcygpKXsKICAgICAgICBhbnMrKzsKICAgIH0KICAgIHByaW50ZigiJWRcbiIsYW5zKTsKICAgIHJldHVybjsKfQoKaW50IG1haW4oKXsKICAgIGludCB0OwogICAgc2NhbmYoIiVkIiwmdCk7CiAgICB3aGlsZSh0LS0pewogICAgICAgIGluaXRpYWxpemUoKTsKICAgICAgICBzY2FuZigiJWxsZCAlbGxkICVsbGQiLCZuICwmayAsJmMpOwoKICAgICAgICBmb3IoaW50IGo9MDsgajxuOyBqKyspewogICAgICAgICAgICBsbCB0ZW1wOwogICAgICAgICAgICBzY2FuZigiJWxsZCIsJnRlbXApOwogICAgICAgICAgICBzLmluc2VydCh0ZW1wKTsKICAgICAgICB9CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==