#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const double eps = 1e-6;
const double pi = acos(-1.0);
const int maxn = 1e6 + 10;
const int N = 3e4 + 5;
const long long inf = 0x3f3f3f3f;
const int dir[][2] = {{0, 1}, {1, 0},  {0, -1}, {-1, 0},
                      {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};
int dp[N][510], base = 250;
int a[N];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, d;
  cin >> n >> d;
  for (int i = 1, x; i <= n; i++) cin >> x, a[x]++;
  memset(dp, -inf, sizeof(dp));
  dp[d][base] = a[d];
  int ans = 0;
  for (int i = 1; i <= 30000; i++)
    for (int j = 1; j <= 500; j++) {
      int last = i - (d + j - base);
      if (last < 0 || last >= i) continue;
      for (int k = -1; k <= 1; k++)
        if (j + k > 0) dp[i][j] = max(dp[i][j], dp[last][j + k] + a[i]);
      ans = max(ans, dp[i][j]);
    }
  cout << ans;
  return 0;
}
