#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>

using namespace std;

const int N=2e5+5;

typedef long long LL;

int n,m,L,R,hr[N],ans;

priority_queue <int,vector <int> , greater <int> > h;

vector <int> hl[N];

char c;

int read()
{
	int x=0,sig=1;
	for (c=getchar();c<'0' || c>'9';c=getchar()) if (c=='-') sig=-1;
	for (;c>='0' && c<='9';c=getchar()) x=x*10+c-48;
	return x*sig;
}

int main()
{
	n=read(); m=read();
	for (int i=0,l,r;i<n;i++)
	{
		l=read(); r=read(); hl[l].push_back(r);
	}
	L=0;
	for (int i=1,t;i<=m;i++)
	{
		for (vector <int> ::iterator it=hl[i].begin();it!=hl[i].end();it++)
		{
			if (L<i)
			{
				L++; h.push(*it); continue;
			}
			t=h.top();
			if (t>= *it) hr[*it]++;else
			{
				h.pop(); hr[t]++; h.push(*it);
			}
		}
	}
	for (vector <int> ::iterator it=hl[0].begin();it!=hl[0].end();it++) hr[*it]++;
	R=m+1;
	ans=hr[m+1];
	for (int i=m;i;i--)
	{
		for (;hr[i]>0;hr[i]--)
		{
			if (i<R && L<R-1) R--;else ans++;
		}
	}
	printf("%d\n",ans);
	return 0;
}