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

struct Dat{ int x, y, i; };

int n, m;
vector<Dat> pv;
vector<int> sv[200010];
set<int> ss, ts;

int main(){
	scanf("%d%d", &n, &m);
	for(int i = 1, x, y; i <= n; i++){
		scanf("%d%d", &x, &y);
		pv.push_back({x, y, i});
		sv[y].push_back(i);
		ss.insert(i);
	}
	sort(pv.begin(), pv.end(), [](Dat a, Dat b){ return a.x == b.x ? a.y > b.y : a.x < b.x; });
	for(int i = 1, j = 0; i <= m; i++){
		while(j < pv.size() && pv[j].x < i) j++;
		for(auto &t : sv[i]) ts.insert(t);
		if(j < pv.size()){ ss.erase(pv[j].i); j++; }
		else{
			while(!ts.empty()){
				auto t = ts.begin();
				if(ss.find(*t) != ss.end()){
					ss.erase(*t);
					ts.erase(t);
					break;
				}
				ts.erase(t);
			}
		}
	}
	printf("%d\n", ss.size());
}