#include <bits/stdc++.h>
using namespace std;
const int N = 30001;
vector<vector<int>> dp(N, vector<int>(605, -1));
vector<int> val(N), m(N + 305);
int mx = 0;
int func(int n, int len) {
  if (n > mx || len <= 0) return 0;
  if (dp[n][m[len]] != -1) return dp[n][m[len]];
  return dp[n][m[len]] =
             val[n] + max({func(n + len - 1, len - 1), func(n + len, len),
                           func(n + len + 1, len + 1)});
  ;
}
int main() {
  int n, k, x;
  cin >> n >> k;
  int c = 0;
  for (int i = max(1, k - 300); i < max(N, k + 300); i++) {
    m[i] = ++c;
  }
  for (int i = 0; i < n; i++) {
    cin >> x;
    val[x] += 1;
    mx = max(mx, x);
  }
  cout << func(k, k);
}
