#include <bits/stdc++.h>
using namespace std;
int n, d, x, p[30003], ans, mx;
int M[30001][600];
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> d;
  for (int i = 1; i <= n; i++) {
    cin >> x;
    p[x]++;
    mx = max(mx, x);
  }
  for (int i = 0; i <= mx; i++) {
    for (int j = max(0, d - 250); j <= d + 250; j++) M[i][j - d + 255] = -1e9;
  }
  M[d][d - d + 255] = p[0] + p[d];
  ans = p[0] + p[d];
  for (int i = d + 1; i <= mx; i++) {
    for (int j = max(1, d - 246); j <= d + 246; j++) {
      M[i][j - d + 255] = -1e9;
      if (i - j >= 0) {
        M[i][j - d + 255] =
            max(M[i - j][j - 1 - d + 255],
                max(M[i - j][j - d + 255], M[i - j][j + 1 - d + 255])) +
            p[i];
        ans = max(ans, M[i][j - d + 255]);
      }
    }
  }
  cout << ans << '\n';
  return 0;
}
