#include <bits/stdc++.h>
#define mp  make_pair
#define ls  (n<<1)
#define rs  (ls|1)
using namespace std;

typedef pair <int,int>  PII;
int n,m,t[800010],tag[800010],ans;
PII a[200010];

void build(int n,int l,int r)
{
	if (l==r)  t[n]=l-m-1;
	else
		{
			int mid=(l+r)>>1;
			build(ls,l,mid),build(rs,mid+1,r);
			t[n]=max(t[ls],t[rs]);
		}
}

void modify(int n,int l,int r,int L,int R)
{
	if ((L<=l)&&(r<=R))  t[n]++,tag[n]++;
	else
		{
			int mid=(l+r)>>1;
			if (L<=mid)  modify(ls,l,mid,L,R);
			if (mid<R)  modify(rs,mid+1,r,L,R);
			t[n]=max(t[ls],t[rs])+tag[n];
		}
}

int ask(int n,int l,int r,int L,int R)
{
	if ((L<=l)&&(r<=R))  return t[n];
	else
		{
			int mid=(l+r)>>1;
			if (mid>=R)  return ask(ls,l,mid,L,R)+tag[n];
			if (L>mid)  return ask(rs,mid+1,r,L,R)+tag[n];
			return max(ask(ls,l,mid,L,R),ask(rs,mid+1,r,L,R))+tag[n];
		}
}

void work()
{
	scanf("%d %d",&n,&m),ans=max(0,n-m);
	for (int i=1,l,r; i<=n; i++)
		scanf("%d %d",&l,&r),a[i]=mp(l,r);
	sort(a+1,a+n+1);
	build(1,1,m+1);
	for (int i=1; i<=n; i++)
		{
			modify(1,1,m+1,1,a[i].second);
			ans=max(ans,ask(1,1,m+1,a[i].first+1,m+1)-a[i].first);
		}
	printf("%d",ans);
}

int main()
{
	work();
	return 0;
}
