#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
struct f
{
float s;
float f;
} a[10000];
int cmp(const void *a,const void *b)
{
struct f x,y;
x=*(struct f*)a;
y=*(struct f*)b;
if(x.s>y.s) return 1;
else if(x.s<y.s) return -1;
else if(x.f>y.f) return -1;
else return 1;
}
int main()
{
int T,ans=0;
scanf("%d",&T);
for(int u=0;u<T;u++);
{
int n,l/*长*/,w/*宽*/,j;
scanf("%d%d%d",&n,&l,&w);
for(int i=0;i<n;i++)
{
int b;
scanf("%f%d",&a[i].s,&b);
if(b<=w) j--;
else
{
a[i].s=a[i].s-sqrt(pow(w/2,2)+pow(b,2));
a[i].f=a[i].s+2*sqrt(pow(w/2,2)+pow(b,2));
}
j++;
}
qsort(a,n,sizeof(a[0]),cmp);
float i=0;
for(int j=0;j<n;j++)
{
if(a[j].s<=i)
{
ans++;
i=a[j].f;
}
if(i>l) break;
}
printf("%d",ans);
}
return 0;
}