#include<bits/stdc++.h>
#define ll long long
#define MAXN 50001
#define il inline
#define rg register
using namespace std;
struct cow
{
ll pos,height,i;
}a[MAXN];
queue<cow>s1,s2;
ll crowded[MAXN];
il bool comp(cow a1,cow a2)
{
return a1.pos<a2.pos;
}
int main()
{
ll n,d,ans=0;cin>>n>>d;
for (rg ll i=1;i<=n;++i)
{
cin>>a[i].pos>>a[i].height;
a[i].i=i;
}
sort(a+1,a+n+1,comp);
for (rg ll i=1;i<=n;++i)
{
while(s1.size())
{
while (s1.size()&&s1.front().pos+d*2<a[i].pos)
s1.pop();
while (s1.size()&&s1.back().height*2 <= a[i].height)
{
++crowded[s1.back().i];
s1.pop();
}
if (s1.size()&&!(s1.back().pos+d*2<a[i].pos)) break;
}
s1.push(a[i]);
}
for (rg ll i=n;i>1;--i)
{
while(s2.size())
{
while (s2.size()&&s2.front().pos-d*2>a[i].pos)
s2.pop();
while (s2.size()&&s2.back().height*2<=a[i].height)
{
++crowded[s2.back().i];
s2.pop();
}
if (s2.size()&&!(s2.back().pos-d*2>a[i].pos)) break;
}
s2.push(a[i]);
}
for (rg ll i=1;i<=n;++i) if (crowded[i]) ++ans;
cout<<ans;
return 0;
}