RT,过不了
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int Maxn=4e6+114,V=2e6+7;
int n,a[Maxn],k,b[Maxn],ans;
int solve(int l,int r){
if(l==r) return 1+b[a[l]+k];
int mid=l+r>>1,lft=0,rgt=0,xml=0,xmr=0;
for(int i=mid;i>=l;--i) lft=max(lft,xml+=!(a[i]^a[mid])-!(a[i]^(a[mid]+k)));
for(int i=mid+1;i<=r;++i) rgt=max(rgt,xmr+=!(a[i]^a[mid])-!(a[i]^(a[mid]+k)));
return max(lft+rgt+b[a[mid]+k],max(solve(l,mid),solve(mid+1,r)));
}
int main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;++i) scanf("%d",&a[i]),a[i]+=V,b[a[i]]++,ans=max(ans,b[a[i]]);
if(k==0) return printf("%d",ans),0;
printf("%d",max(ans,solve(1,n)));
return 0;
}