#include<cstdio>
#include<set>
#include<vector>
using namespace std;
typedef long long int ll;
ll k, n, c;
multiset<ll> s;
vector< multiset<ll> :: iterator> v;
inline void initialize(){
s.clear();
v.clear();
return;
}
ll inf = 1e18 + 3;
bool safe_mul(ll a, ll b){
if(a <= inf/b) return true;
return false;
}
void remove_used(){
for(int j=0; j<k; j++)
s.erase(v[j]);
return;
}
ll check(ll a){
multiset<ll> :: iterator it;
it = s.lower_bound(a);
if(it == s.end()) return -1;
v.push_back(it);
return *it;
}
bool IsPoss(){
if(s.size() < k) return false;
ll start = *(s.begin());
v.clear();
v.push_back(s.begin());
if(!safe_mul(start, c)) return false;
ll curr = start*c;
for(int j=1; j<k; j++){
ll temp = check(curr);
if(temp == -1) return false;
if(!safe_mul(temp, c)) return false;
curr = temp*c;
}
remove_used();
return true;
}
void solve(){
ll ans = 0;
while(IsPoss())
ans++;
printf("%lld\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;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxzZXQ+CiNpbmNsdWRlPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgbGw7CgpsbCBrLCBuLCBjOwoKbXVsdGlzZXQ8bGw+IHM7Cgp2ZWN0b3I8IG11bHRpc2V0PGxsPiA6OiBpdGVyYXRvcj4gdjsKCmlubGluZSB2b2lkIGluaXRpYWxpemUoKXsKICAgIHMuY2xlYXIoKTsKICAgIHYuY2xlYXIoKTsKICAgIHJldHVybjsKfQoKbGwgaW5mID0gMWUxOCArIDM7Cgpib29sIHNhZmVfbXVsKGxsIGEsIGxsIGIpewogICAgaWYoYSA8PSBpbmYvYikgcmV0dXJuIHRydWU7CiAgICByZXR1cm4gZmFsc2U7Cn0KCnZvaWQgcmVtb3ZlX3VzZWQoKXsKICAgIGZvcihpbnQgaj0wOyBqPGs7IGorKykKICAgICAgICBzLmVyYXNlKHZbal0pOwogICAgcmV0dXJuOwp9CgpsbCBjaGVjayhsbCBhKXsKICAgIG11bHRpc2V0PGxsPiA6OiBpdGVyYXRvciBpdDsKICAgIGl0ID0gcy5sb3dlcl9ib3VuZChhKTsKICAgIGlmKGl0ID09IHMuZW5kKCkpIHJldHVybiAtMTsKICAgIHYucHVzaF9iYWNrKGl0KTsKICAgIHJldHVybiAqaXQ7Cn0KCmJvb2wgSXNQb3NzKCl7CiAgICBpZihzLnNpemUoKSA8IGspIHJldHVybiBmYWxzZTsKICAgIGxsIHN0YXJ0ID0gKihzLmJlZ2luKCkpOwogICAgdi5jbGVhcigpOwogICAgdi5wdXNoX2JhY2socy5iZWdpbigpKTsKICAgIGlmKCFzYWZlX211bChzdGFydCwgYykpIHJldHVybiBmYWxzZTsKICAgIGxsIGN1cnIgPSBzdGFydCpjOwogICAgZm9yKGludCBqPTE7IGo8azsgaisrKXsKICAgICAgICBsbCB0ZW1wID0gY2hlY2soY3Vycik7CiAgICAgICAgaWYodGVtcCA9PSAtMSkgcmV0dXJuIGZhbHNlOwogICAgICAgIGlmKCFzYWZlX211bCh0ZW1wLCBjKSkgcmV0dXJuIGZhbHNlOwogICAgICAgIGN1cnIgPSB0ZW1wKmM7CiAgICB9CiAgICByZW1vdmVfdXNlZCgpOwogICAgcmV0dXJuIHRydWU7Cn0KCnZvaWQgc29sdmUoKXsKICAgIGxsIGFucyA9IDA7CiAgICB3aGlsZShJc1Bvc3MoKSkKICAgICAgICBhbnMrKzsKICAgIHByaW50ZigiJWxsZFxuIixhbnMpOwogICAgcmV0dXJuOwp9CgppbnQgbWFpbigpewogICAgaW50IHQ7CiAgICBzY2FuZigiJWQiLCZ0KTsKICAgIHdoaWxlKHQtLSl7CiAgICAgICAgaW5pdGlhbGl6ZSgpOwogICAgICAgIHNjYW5mKCIlbGxkICVsbGQgJWxsZCIsJm4gLCZrICwmYyk7CiAgICAgICAgZm9yKGludCBqPTA7IGo8bjsgaisrKXsKICAgICAgICAgICAgbGwgdGVtcDsKICAgICAgICAgICAgc2NhbmYoIiVsbGQiLCZ0ZW1wKTsKICAgICAgICAgICAgcy5pbnNlcnQodGVtcCk7CiAgICAgICAgfQogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=