前缀和
#include<iostream>
#include<cstring>
#include<algorithm>
#define int long long
using namespace std;
const int N=1000010;
int n,m;
int a[N];
int pre[N],las[N];
signed main(){
cin>>n>>m;
int flag=0;
for(int i=1;i<=n;i++){
int p;cin>>p;
if(p>0)las[p]++;
else if(p<0)pre[-p]++;
else flag++;
}
for(int i=1;i<=1000010;i++){
las[i]+=las[i-1];
pre[i]+=pre[i-1];
//cout<<i<<" "<<pre[i]<<" "<<las[i]<<endl;
}
int res=max(pre[min(m,N-1)]+flag,las[min(m,N-1)]+flag);
for(int i=1;2*i<=m;i++){
res=max(res,pre[i]+las[min(m-2*i,N-1)]+flag);
res=max(res,pre[min(m-2*i,N-1)]+las[i]+flag);
}
cout<<res<<endl;
return 0;
}