#include<stdio.h>
#include<iostream>
#include<stdio.h>
#include<cmath>
#include<algorithm>
using namespace std;
struct frame
{
double x;
double y;
}c[1001];
struct range
{
double l, r;
}g[1001];
bool cmp(range a, range b)
{
return a.l<b.l;
}
int main()
{
int n, d, i;
int Case = 0;
while(~scanf("%d%d", &n, &d))
{
if(n==0&&d==0)
break;
int sum = 1;
for(i=0; i<n; i++)
{
scanf("%lf%lf", &c[i].x, &c[i].y);
g[i].l = c[i].x - sqrt(d*d-c[i].y*c[i].y);
g[i].r = c[i].x + sqrt(d*d-c[i].y*c[i].y);
if(c[i].y>d|| d<=0 || c[i].y<0) sum = -1;
}
sort(g, g+n, cmp);
double m = g[0].r;
for(i=1; i<n&&sum!=-1; i++)
{
if(m < g[i].l)
{
sum++;
m = g[i].r;
}
else if(m > g[i].r)
m = g[i].r;
}
printf("Case %d: %d\n", ++Case, sum);
}
return 0;
}
#include<iostream>
#include<stdio.h>
#include<cmath>
#include<algorithm>
using namespace std;
struct frame
{
double x;
double y;
}c[1001];
struct range
{
double l, r;
}g[1001];
bool cmp(range a, range b)
{
return a.l<b.l;
}
int main()
{
int n, d, i;
int Case = 0;
while(~scanf("%d%d", &n, &d))
{
if(n==0&&d==0)
break;
int sum = 1;
for(i=0; i<n; i++)
{
scanf("%lf%lf", &c[i].x, &c[i].y);
g[i].l = c[i].x - sqrt(d*d-c[i].y*c[i].y);
g[i].r = c[i].x + sqrt(d*d-c[i].y*c[i].y);
if(c[i].y>d|| d<=0 || c[i].y<0) sum = -1;
}
sort(g, g+n, cmp);
double m = g[0].r;
for(i=1; i<n&&sum!=-1; i++)
{
if(m < g[i].l)
{
sum++;
m = g[i].r;
}
else if(m > g[i].r)
m = g[i].r;
}
printf("Case %d: %d\n", ++Case, sum);
}
return 0;
}