#include <bits/stdc++.h>
using namespace std;
int dp[30005][605], a[30005];
int n, d, x;
int obtRes(int i, int j) {
  if (i > 30000) return 0;
  int &res = dp[i][j];
  if (res != -1) return res;
  res = a[i];
  int s = d + (j - 300);
  if (s <= 0) return res = 0;
  return res += max(obtRes(i + s - 1, j - 1),
                    max(obtRes(i + s, j), obtRes(i + s + 1, j + 1)));
}
int main() {
  for (int i = 0; i < 30005; i++)
    for (int j = 0; j < 605; j++) dp[i][j] = -1;
  cin >> n >> d;
  while (n--) {
    cin >> x;
    a[x]++;
  }
  cout << obtRes(d, 300) << '\n';
  return 0;
}
