#include<bits/stdc++.h>
#define N 200009
using namespace std;

int n,m,cnt,b[N]; bool bo[N];
struct node{ int x,y; }a[N];
bool cmp1(node u,node v){ return u.x<v.x; }
struct cmp2{
	bool operator()(int u,int v){ return a[u].y>a[v].y; }
};
priority_queue<int,vector<int>,cmp2> Q;
int main(){
	scanf("%d%d",&n,&m);
	int i,k,now,ans=0;
	for (i=1; i<=n; i++) scanf("%d%d",&a[i].x,&a[i].y);
	sort(a+1,a+n+1,cmp1);
	for (i=1; i<=n; i++){
		bo[i]=1; Q.push(i);
		ans++;
		if (ans>a[i].x){
			k=Q.top(); Q.pop();
			bo[k]=0; ans--;
		}
	}
	for (i=1; i<=n; i++) if (!bo[i] && a[i].y<=m) b[++cnt]=a[i].y;
	sort(b+1,b+cnt+1);
	for (i=1,now=m-ans; i<=cnt; i++)
		if (now){
			ans++; now=min(now-1,m-b[i]);
		}
	printf("%d\n",n-ans);
	return 0;
}
