#include <bits/stdc++.h>
using namespace std;
const int SQ = 300, MAX = 30001;
int dp[1000][30005], a[30005];
int main() {
  int n, d;
  cin >> n >> d;
  for (int i = 0; i < n; i++) {
    int p;
    cin >> p;
    a[p]++;
  }
  int l = max(d - SQ, 1);
  for (int j = MAX; j >= d; j--)
    for (int i = max(d - SQ, 1); i < min(d + SQ, MAX); i++)
      dp[i - l][j] = max(dp[i + 1 - l][j + i + 1],
                         max(((i > 0) ? dp[i - l][i + j] : 0),
                             ((i > 1) ? dp[i - 1 - l][i + j - 1] : 0))) +
                     a[j];
  cout << dp[d - l][d] << endl;
  return 0;
}
