#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int n;
double d;
typedef struct Postion
{
double left, right;
};
bool cmp(Postion p1, Postion p2)
{
if((p1.left < p2.left) || (p1.left == p2.left && p1.right < p2.right))
//if(p1.left < p2.left)
return true;
else
return false;
}
Postion Pos[1010];
void solve()
{
Postion temp;
temp = Pos[0];
int ans = 1;
// for(int i = 0; i < n; i++)
// cout << Pos[i].left << " " << Pos[i].right << endl;
for(int i = 1; i < n; i++)
{
if(Pos[i].left > temp.right)
{
temp = Pos[i];
ans++;
}
else if(Pos[i].right < temp.right)
{
temp = Pos[i];
}
}
cout << ans << endl;
}
/*
void solve()
{
int ans = 1;
int index = 0;
double Right = Pos[0].right;
while(Right < Pos[n-1].left)
{
while(Pos[index].left <= Right)
{
if(Pos[index].right < Right)
Right = Pos[index].right;
index++;
}
ans++;
Right = Pos[index].right;
}
cout << ans << endl;
cout << endl;
}
*/
int main()
{
int kase = 0;
while(scanf("%d %lf", &n, &d) && n && d)
{
bool flag = true;
for(int i = 0; i < n; i++)
{
double x, y;
scanf("%lf %lf", &x, &y);
if(fabs(y) > d)
flag = false;
//cout << fabs(y) << " " << d << endl;
double len = sqrt(d*d - (y*y));
Pos[i].left = x - len;
Pos[i].right = x + len;
}
sort(Pos, Pos+n, cmp);
cout << "Case " << ++kase << ": ";
if(flag) solve();
else cout << "-1" << endl;
}
return 0;
}