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

const int S=(1<<20)+5;
char buf[S],*H,*T;
inline char Get()
{
	if(H==T) T=(H=buf)+fread(buf,1,S,stdin);
	if(H==T) return -1;return *H++;
}
inline int read()
{
	int x=0;char c=Get();
	while(!isdigit(c)) c=Get();
	while(isdigit(c)) x=x*10+c-'0',c=Get();
	return x;
}

const int N=200010;
struct Type
{
	int l,r;
	friend bool operator < (const Type &a,const Type &b){return a.l<b.l||a.l==b.l&&a.r>b.r;}
} a[N];
int n,m;
int c[N];

int main()
{
	n=read();m=read();
	for(int i=1;i<=n;i++) a[i].l=read(),a[i].r=read();
	sort(a+1,a+1+n);
	int L=0,R=m+1,cnt=0;
	for(int i=1;i<=n;i++)
		if(a[i].l>L&&L<m) L++;
		else c[++cnt]=a[i].r;
	sort(c+1,c+1+cnt);
	for(int i=cnt;i>=1;i--)
	{
		if(R-L==1) break;
		if(c[i]<R) R--;
	}
	printf("%d\n",n-(L+m-R+1));
	return 0;
}