for _ in range(int(input())):
n, x = map(int, input().split())
nums = list(map(int, input().split()))
o = sorted(nums)
l = {x:0 for x in o}
for item in o:
l[item] += 1
for item in o:
if l.get(item*x) and l.get(item*x) > 0 and l.get(item):
l[item] -= 1
l[item*x]-=1
print(sum(l.values()))
#include<bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL);
using namespace std;
#define int long long
#define ll long long
signed main(){
IOS;
int t;
cin>>t;
while(t--)
{
int n,x;
cin>>n>>x;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);
for(int i=0;i<n;i++)
{
if(a[i]!=-1)
{
int ind=lower_bound(a,a+n,a[i]*x)-a;
if(a[ind]==a[i]*x)
{
a[i]=-1;
a[ind]=-1;
}
}
}
int count=0;
for(int i=0;i<n;i++)
{
if(a[i]==-1)
{
count++;
}
}
cout<<(n-count)<<endl;
}
return 0;
}
1091A - New Year and the Christmas Ornament | 1352B - Same Parity Summands |
1102A - Integer Sequence Dividing | 630B - Moore's Law |
1004A - Sonya and Hotels | 1680B - Robots |
1690A - Print a Pedestal (Codeforces logo) | 1295A - Display The Number |
1077A - Frog Jumping | 1714G - Path Prefixes |
1369C - RationalLee | 289B - Polo the Penguin and Matrix |
1716A - 2-3 Moves | 1670B - Dorms War |
1716B - Permutation Chain | 987A - Infinity Gauntlet |
1676G - White-Black Balanced Subtrees | 1716D - Chip Move |
1352F - Binary String Reconstruction | 1487B - Cat Cycle |
1679C - Rooks Defenders | 56A - Bar |
1694B - Paranoid String | 35A - Shell Game |
1684A - Digit Minimization | 43B - Letter |
1017A - The Rank | 1698B - Rising Sand |
235A - LCM Challenge | 1075B - Taxi drivers and Lyft |