using namespace std;
#include<bits/stdc++.h>
double v[100001];
int main(){
int N,p;
cin>>N>>p;
int t,i,j;
int count=0;
for(i=0;i<N;i++){
cin>>v[i];
}
sort(v,v+N); //用sort函数将输入的数组排序
// for(i=0;i<N;i++){//输出
// cout<<v[i]<<" ";
// }
// cout<<"\n";
int max=-1;
int R=1;//R用来避免在下面的for循环中重复比较
int len;
for(i=0;i<N;i++){//外循环用i标注数列的最小元素
for( j=R;j<N;j++){//内循环用j标注每次待加入数列的数,若满足M<=m*p,j++,否则跳出循环
if(v[j]>p*v[i]){
R=j;
break;
}
}
count=j-i;//记录此次构造的数列长度
if(max<count){
max=count;
}
}
cout<<max<<'\n';
return 0;
}