#include <bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define mod 1000000007
#define pb push_back
#define mp make_pair
#define ll long long
#define vi vector <int>
#define pii pair <int, int>
#define eprintf(...) fprintf(stderr, __VA_ARGS__)
#define rep(i,n) for (int i = 0; i < (int) (n); ++ i)
#define foreach(it,c) for (__typeof(c.begin()) it = c.begin(); it != c.end(); ++ it)

inline int read() {
	int x = 0, f = 1, c = getchar();
	for (;!isdigit(c);c = getchar()) if (c == '-') f ^= 1;
	for (; isdigit(c);c = getchar()) x = x * 10 + c - '0';
	return f ? x : -x;
}

#define N 200005
int n, m;
int l[N], r[N];
vi qrys[N];
priority_queue <int, vector <int>, greater <int> > pq;

int main() {
	n = read(), m = read();
	rep(i, n) l[i] = read(), r[i] = read();
	rep(i, n) qrys[l[i]].pb(i);
	vi Rs;
	int L = 1;
	rep(i, m + 1) {
		rep(j, qrys[i].size()) {
			int id = qrys[i][j];
			pq.push(r[id]);
			if (l[id] >= L) ++ L;
			else Rs.pb(pq.top()), pq.pop();
		}
	}
	int R = m;
	sort(Rs.begin(), Rs.end());
	int ans = 0;
	for (int i = (int) Rs.size() - 1; ~i; -- i) {
		if (L <= R && Rs[i] <= R) -- R;
		else ++ ans;
	}
	printf("%d\n", ans);
	return 0;
}