#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;

#define N 810000

int n, m;
int l[N], r[N], tx[N], mi[N], add[N];
int ans;

bool cmp(int x, int y) {
	return l[x] < l[y];
}

void mkt(int k, int q, int h) {
	if (q < h) {
		mkt(k * 2, q, (q + h) / 2);
		mkt(k * 2 + 1, (q + h) / 2 + 1, h);
		mi[k] = min(mi[k * 2], mi[k * 2 + 1]);
	}else {
		mi[k] = m + 1 - q;
	}
}

void modify(int k, int q, int h, int l, int r, int c) {
	if (l <= q && h <= r)
		add[k] += c;
	else {
		if (r <= (q + h) / 2)
			modify(k * 2, q, (q + h) / 2, l, r, c);
		else if ((q + h) / 2 < l)
			modify(k * 2 + 1, (q + h) / 2 + 1, h, l, r, c);
		else
			modify(k * 2, q, (q + h) / 2, l, r, c), modify(k * 2 + 1, (q + h) / 2 + 1, h, l, r, c);
		mi[k] = min(mi[k * 2] + add[k * 2], mi[k * 2 + 1] + add[k * 2 + 1]);
	}
}

int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++)
		scanf("%d%d", &l[i], &r[i]);
	ans = max(0, n - m);
	ans = - ans;
	for (int i = 1; i <= n; i++)
		tx[i] = i;
	sort(tx + 1, tx + n + 1, cmp);
	mkt(1, 1, m + 1);
	for (int i = 1; i <= n; i++) {
		modify(1, 1, m + 1, 1, r[tx[i]], -1);
		ans = min(ans, l[tx[i]] + mi[1] + add[1]);
		// printf("?? %d %d\n", i, ans);
	}
	printf("%d\n", -ans);
}
