#include <bits/stdc++.h>
using namespace std;
const int maxN = 7e4;
const int INF = 1e9;
int n, d;
int dp[maxN][620];
int mark[maxN];
int ans;
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n >> d;
  int maxp = 0;
  for (int i = 0; i < n; i++) {
    int p;
    cin >> p;
    mark[p]++;
  }
  for (int i = 30000; i >= d; i--) {
    for (int j = 0; j < 600; j++) {
      int jmp = j + d - 300;
      if (jmp > 1) {
        dp[i][j] = mark[i] + max(dp[i + jmp][j], max(dp[i + jmp + 1][j + 1],
                                                     dp[i + jmp - 1][j - 1]));
      }
      if (jmp == 1)
        dp[i][j] = mark[i] + max(dp[i + jmp][j], dp[i + jmp + 1][j + 1]);
    }
  }
  cout << dp[d][300] << endl;
}
