#include<bits/stdc++.h>
using namespace std;
#define int long long
int read(){
int s=0,w=1;
char c=getchar();
while(!isdigit(c)){
if(c=='-') w=-1;
c=getchar();
}
while(isdigit(c)){
s=s*10+c-'0';
c=getchar();
}
return s*w;
}
int n,ans;
double d,x,y,maxn;
bool f;
struct Node{
double l,r;
}isl[1005];
bool cmp(Node x,Node y){
if(x.l!=y.l){
return x.l<y.l;
}
return x.r>y.r;
}
signed main(){
while(1){
ans=0;
f=0;
cin>>n>>d;
if(n==0&&d==0) break;
for(int i=1;i<=n;i++){
cin>>x>>y;
isl[i].l=x-sqrt(d*d-y*y);
isl[i].r=x+sqrt(d*d-y*y);
if(y>d){
f=1;
}
}
if(f==1){
puts("-1");
continue;
}
sort(isl+1,isl+1+n,cmp);
maxn=isl[1].r;
ans++;
for(int i=2;i<=n;i++){
if(isl[i].l>maxn){
maxn=isl[i].r;
ans++;
}
}
cout<<ans;
puts("");
}
return 0;
}
在我们学校的oj对了一个点,其他显示输出超限