#include<bits/stdc++.h>
#define ll long long int
#define in(i,a,n) for(i=0;i<n;i++)cin>>a[i];
#define M2 1000000007
#define sz(c) c.size()
#define fr first
#define sc second
#define pb push_back
#define ppb pop_back
#define mp make_pair
#define all(a) (a).begin(),(a).end()
#define rep(i,a,n) for(int i=a ; i<n ; i++)
#define what_is(x) cout << x << " is " << x << endl;
#define r0 return 0;
#define U 998244353
#define pi 3.1415926536
#define px cout<<x<<"\n";
#define M1 998244353
#define so cout<<"test ";
#define vl vector<ll>
#include<cmath>
using namespace std;
vl a,b;ll m1[1000007];
map<pair<ll,ll>,ll>dp,used;
ll island(ll cr,ll lt,ll n)
{
if(used[{cr,lt}]!=0)
return dp[{cr,lt}];
if(lt<1)return 0;
ll u=0,v=0,w=0;
if(cr>n)
return 0;
if(lt>1)
u=island(cr+lt-1,lt-1,n);
if(lt!=0)v=island(cr+lt,lt,n);
w=island(cr+lt+1,lt+1,n);
dp[{cr,lt}]=(m1[cr])+max(u,max(v,w));
used[{cr,lt}]=1;
return dp[{cr,lt}];}
main()
{ll i,j=0,k=0,l=0,n,m,ta,tb,t=0,u,h;
ll q;
scanf("%I64d%I64d",&n,&k);
ll a[n];
rep(i,0,n){scanf("%I64d",&a[i]);m1[a[i]]++;}
cout<<island(k,k,a[n-1]);}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcgaW50CiNkZWZpbmUgaW4oaSxhLG4pIGZvcihpPTA7aTxuO2krKyljaW4+PmFbaV07CiNkZWZpbmUgTTIgMTAwMDAwMDAwNwojZGVmaW5lIHN6KGMpIGMuc2l6ZSgpCiNkZWZpbmUgZnIgZmlyc3QKI2RlZmluZSBzYyBzZWNvbmQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwcGIgcG9wX2JhY2sKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBhbGwoYSkgKGEpLmJlZ2luKCksKGEpLmVuZCgpCiNkZWZpbmUgcmVwKGksYSxuKSBmb3IoaW50IGk9YSA7IGk8biA7IGkrKykKI2RlZmluZSB3aGF0X2lzKHgpIGNvdXQgPDwgeCA8PCAiIGlzICIgPDwgeCA8PCBlbmRsOwojZGVmaW5lIHIwIHJldHVybiAwOwojZGVmaW5lIFUgOTk4MjQ0MzUzCiNkZWZpbmUgcGkgMy4xNDE1OTI2NTM2CiNkZWZpbmUgcHggY291dDw8eDw8IlxuIjsKI2RlZmluZSBNMSA5OTgyNDQzNTMKI2RlZmluZSBzbyBjb3V0PDwidGVzdCAiOwojZGVmaW5lIHZsIHZlY3RvcjxsbD4KI2luY2x1ZGU8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZsIGEsYjtsbCBtMVsxMDAwMDA3XTsKbWFwPHBhaXI8bGwsbGw+LGxsPmRwLHVzZWQ7CmxsIGlzbGFuZChsbCBjcixsbCBsdCxsbCBuKQp7CiAgICBpZih1c2VkW3tjcixsdH1dIT0wKQogICAgICAgIHJldHVybiBkcFt7Y3IsbHR9XTsKICAgICAgICBpZihsdDwxKXJldHVybiAwOwogICAgbGwgdT0wLHY9MCx3PTA7CiAgICBpZihjcj5uKQogICAgICAgIHJldHVybiAwOwogICAgICAgIGlmKGx0PjEpCiAgICAgICAgICAgIHU9aXNsYW5kKGNyK2x0LTEsbHQtMSxuKTsKICAgICAgICBpZihsdCE9MCl2PWlzbGFuZChjcitsdCxsdCxuKTsKICAgICAgICB3PWlzbGFuZChjcitsdCsxLGx0KzEsbik7CiAgIGRwW3tjcixsdH1dPShtMVtjcl0pK21heCh1LG1heCh2LHcpKTsKICAgdXNlZFt7Y3IsbHR9XT0xOwogICByZXR1cm4gZHBbe2NyLGx0fV07fQptYWluKCkKe2xsIGksaj0wLGs9MCxsPTAsbixtLHRhLHRiLHQ9MCx1LGg7CmxsIHE7CnNjYW5mKCIlSTY0ZCVJNjRkIiwmbiwmayk7CmxsIGFbbl07CnJlcChpLDAsbil7c2NhbmYoIiVJNjRkIiwmYVtpXSk7bTFbYVtpXV0rKzt9CmNvdXQ8PGlzbGFuZChrLGssYVtuLTFdKTt9Cg==