#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 7;
int n,k;
int a[MAXN];
int dp[MAXN][2];
int max_score = -1,num;
int main() {
cin >> n >> k;
for(int i = 1;i <= n;i++){
int tmp;
cin >> tmp;
if(a[tmp] == 0){
num++;
}
a[tmp]++;
max_score = max(max_score,tmp);
}
if(k == 0){
cout << num;
return 0;
}
int sum = 0;
for(int i = 0;i <= max_score;i++){
if(i >= k){
dp[i][1] = a[i] + dp[i - k][0];
}else{
dp[i][1] = a[i] + max(dp[i - 1][1],dp[i - 1][0]);
}
if(i > 0){
dp[i][0] = max(dp[i - 1][1],dp[i - 1][0]);
}else{
dp[i][0] = 0;
}
}
cout << max(dp[max_score][1],dp[max_score][0]);
return 0;
}