//在海岸线扫描的范围才更大
#include <bits/stdc++.h>
using namespace std;
int n,d;
struct node{
double r,l;
}p[1005];
bool cmp(node a,node b){
return a.r<b.r;
}
int main(){
cin>>n>>d;
for(int i=1;i<=n;i++){
int x,y;
cin>>x>>y;
if(y>d){//距离大于半径
cout<<-1;
return 0;
}
p[i].l=double(x)-sqrt(dd-yy);//最左能扫到该岛的雷达位置
p[i].r=double(x)+sqrt(dd-yy);//最右能扫到该岛的雷达位置
}
sort(p+1,p+1+n,cmp);
int ans=1,cnt=p[1].r;
for(int i=1;i<=n;i++){
if(p[i].l>cnt){//找重合部分就造雷达
ans++;
cnt=p[i].r;
}
}
cout<<ans;
return 0;
}