#include <bits/stdc++.h>   using namespace std;   const long long M = 3e4 + 1;   long long n, m, d;   const long long K = 3e4 + 5;   const long long huge = 1e15;   long long dp[K][500];   long long a[K], ps[K];   long long solve(long long i, long long j) {     if (i >= M) return 0;     long long jj = j - (d - 250);     if (dp[i][jj] != -1) return dp[i][jj];     long long ans = 0;     if (j != 1)       ans = a[i] + max(solve(i + j, j),                        max(solve(i + j + 1, j + 1), solve(i + j - 1, j - 1)));     else       ans = a[i] + max(solve(i + j, j), solve(i + j + 1, j + 1));     return dp[i][jj] = ans;   }   signed main() {     ios::sync_with_stdio(0);     cin.tie(0);     ;     cin >> n;     cin >> d;     while (n--) {       cin >> m;       a[m]++;     }     memset(dp, -1, sizeof dp);     cout << a[0] + solve(d, d);   }   