#include <bits/stdc++.h>
#define rep(i,j,k) for(register int i=j;i<=k;i++) 
#define dow(i,j,k) for(register int i=j;i>=k;i--) 
#define bug //printf("%d\n",__LINE__);
using namespace std;
vector<int>hl[200005];
int hr[200006];
int vis[200005];
priority_queue<int,vector<int>, greater<int> >q;
int n,m;
int ans;
int main(){
	scanf("%d%d",&n,&m) ;
	rep(i,1,n) {
		bug
		int l,r;
		scanf("%d%d",&l,&r);hl[l].push_back(r);
	}
	int L=0;
	bug
	rep(i,1,m) {
		bug
	//	cout<<"i "<<i<<" "<<hl[i].size()<<endl;
		rep(j,0,(int)hl[i].size()-1) {
	//	cout<<"j "<<j<<" "<<hl[i].size()-1<<endl;
	//	cout<<hl[i][j]<<" "<<L<<endl;
			//:w
		// :!g++ % -o %< -g -Wall
		// cout<<hl[i][j]<<endl;
		bug
			if(L<i) L++,q.push(hl[i][j]);bug
			else {
				bug
				if(!q.empty()&&hl[i][j]>q.top()) {
					hr[q.top()]++;
					bug
					q.pop(),q.push(hl[i][j]);
				}
				else hr[hl[i][j]]++;
			}
		}
	//	L++;
	//	cout<<i<<ans<<endl;
	}
//	cout<<"finish"<<endl;
//	cout<<L<<endl;
	bug
	int R=m+1;
	rep(i,0,(int)hl[0].size()-1) hr[hl[0][i]]++;
	ans=hr[m+1];
	//cout<<hr[m+1]<<endl;
	dow(i,m,1){
	//	cout<<i<<" "<<hr[i]<<endl;
		bug
   		while(hr[i]) {if(i<R&&L<R-1) hr[i]--,R--;else hr[i]--,ans++;}
	//	cout<<i<<" "<<hr[i]<<" "<<ans<<endl;
	//	L++;
	}
	cout<<ans<<endl;
	return 0;
}	


