#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int d = 0, N = 0, errorCount = 0, ans = 0;
struct Point
{
int x, y;
double left, right;
Point(int x = 0, int y = 0) : x(x), y(y)
{
int linePingFang = d * d - y * y;
double line = sqrt(linePingFang * 1.0);
this->left = (x * 1.0) - line;
this->right = (x * 1.0) + line;
}
};
Point points[1007];
bool compare(const Point &a, const Point &b)
{
if (a.right != b.right)
{
return a.right < b.right;
}
else
{
return a.left < b.left;
}
}
void input()
{
errorCount = 0, ans = 0;
int x = 0, y = 0;
for (int i = 1; i <= N; i++)
{
scanf("%d%d", &x, &y);
if (y > d)
{
errorCount++;
continue;
}
points[i] = Point(x, y);
}
if (errorCount == 0)
{
sort(points + 1, points + N + 1, compare);
}
}
void solve()
{
if (errorCount > 0)
{
ans = -1;
return;
}
double currentRight = (double)(-0x3f3f3f3f);
for (int i = 1; i <= N; i++)
{
if (currentRight < points[i].left)
{
currentRight = points[i].right;
ans++;
}
}
}
int main()
{
int num = 0;
while (true)
{
scanf("%d%d", &N, &d);
if (N == 0 || d == 0)
{
break;
}
input();
solve();
printf("Case %d: %d\n", ++num, ans);
}
return 0;
}