#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
#define m_p make_pair
#define p_b push_back
#define m1 first
#define m2 second
#define N 100010

using namespace std;

typedef pair<int,int> pa;
vector<pa> a;
vector<int> b;
priority_queue<int,vector<int>,greater<int> >pq;
int n,m,pos,tpos,ans;

int main(){
	int i,t1,t2;
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++){
		scanf("%d%d",&t1,&t2);
		a.p_b(m_p(t1,t2));
	}
	sort(a.begin(),a.end());
	for(i=0;i<n;i++){
		pq.push(a[i].m2);
		if(a[i].m1<=pos){
			b.p_b(pq.top()); pq.pop();
		} else pos++;
	}
	sort(b.begin(),b.end(),greater<int>());
	tpos=pos; pos=0;
	for(i=0;i<b.size();i++)
	if(pos+tpos==m) ans++; else
	if(m+1-b[i]<=pos) ans++; else pos++;
	printf("%d\n",ans);
	return 0;
} 