#include<cstdio>
#include<iostream>
#include<vector>
#include<algorithm>
#define ll long long
using namespace std;
vector <ll> ans;
int n,p;
int bearch(ll x)
{
int l=0,r=n-1;
while(l<=r)
{
int m=(l+r)/2;
if(ans[m]==x)
return m;
else if(ans[m]<x)
{
l=m+1;
}
else
r=m-1;
}
return r;
}
int main()
{
cin>>n>>p;
for(int i=0;i<n;i++)
{
ll x;
cin>>x;
ans.push_back(x);
}
sort(ans.begin(),ans.end());
ll maxn=0,l;
for(int i=0;i<n;i++)
{
ll h=ans[i]*p;
int x=bearch(h);
if(x-i+1>maxn)
maxn=x-i+1;
}
cout<<maxn<<endl;
return 0;
}
#include<iostream>
#include<vector>
#include<algorithm>
#define ll long long
using namespace std;
vector <ll> ans;
int n,p;
int bearch(ll x)
{
int l=0,r=n-1;
while(l<=r)
{
int m=(l+r)/2;
if(ans[m]==x)
return m;
else if(ans[m]<x)
{
l=m+1;
}
else
r=m-1;
}
return r;
}
int main()
{
cin>>n>>p;
for(int i=0;i<n;i++)
{
ll x;
cin>>x;
ans.push_back(x);
}
sort(ans.begin(),ans.end());
ll maxn=0,l;
for(int i=0;i<n;i++)
{
ll h=ans[i]*p;
int x=bearch(h);
if(x-i+1>maxn)
maxn=x-i+1;
}
cout<<maxn<<endl;
return 0;
}