#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1e5+10;
typedef long long ll;
int n,t;
struct node{
ll x,v;
}s[maxn];
/*int find(int x){
return fa[x]==x?fa[x]:fa[x]=find(fa[x]);
}*/
inline int read(){
int num=0; char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9') num=num*10+ch-'0',ch=getchar();
return num;
}
int main(){
scanf("%d%d",&n,&t);
int ans=n;
for(int i=1;i<=n;i++){
s[i].x=read(),s[i].v=read();
}
int now=1,nxt=now+1,las=1;
while(true){
if(now==n) break;
if(s[now].v<s[nxt].v){
nxt=nxt+1;
}
else{
if((s[now].v-s[nxt].v)*t<(s[nxt].x-s[now].x)){
las=nxt; now=nxt; nxt=nxt+1;
ans-=(nxt-las+1);
}
}
}
cout<<ans<<endl;
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1e5+10;
typedef long long ll;
int n,t;
struct node{
ll x,v;
}s[maxn];
/*int find(int x){
return fa[x]==x?fa[x]:fa[x]=find(fa[x]);
}*/
inline int read(){
int num=0; char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9') num=num*10+ch-'0',ch=getchar();
return num;
}
int main(){
scanf("%d%d",&n,&t);
int ans=n;
for(int i=1;i<=n;i++){
s[i].x=read(),s[i].v=read();
}
int now=1,nxt=now+1,las=1;
while(true){
if(now==n) break;
if(s[now].v<s[nxt].v){
nxt=nxt+1;
}
else{
if((s[now].v-s[nxt].v)*t<(s[nxt].x-s[now].x)){
las=nxt; now=nxt; nxt=nxt+1;
ans-=(nxt-las+1);
}
}
}
cout<<ans<<endl;
return 0;
}