#include <bits/stdc++.h>
using namespace std;
inline int readInt() {
  int n = 0, ch = getchar();
  while (!isdigit(ch)) ch = getchar();
  while (isdigit(ch)) n = n * 10 + ch - '0', ch = getchar();
  return n;
}
const int MAX_N = 200000 + 3;
int n, m;
struct Data {
  int l, r;
  Data(int l = 0, int r = 0) : l(l), r(r) {}
  bool operator<(const Data &ano) const { return l < ano.l; }
} a[MAX_N];
int main() {
  n = readInt(), m = readInt();
  for (int i = 0; i < n; ++i) a[i].l = readInt(), a[i].r = readInt();
  sort(a, a + n);
  priority_queue<int, vector<int>, greater<int> > pq1, pq2;
  int ans = 0, pos = 1;
  for (int i = 0; i < n; ++i)
    if (a[i].l >= pos && pos <= m) {
      pq1.push(a[i].r);
      ++pos, ++ans;
    } else {
      pq1.push(a[i].r);
      pq2.push(pq1.top());
      pq1.pop();
    }
  while (!pq2.empty() && pos <= m) {
    int p = pq2.top();
    pq2.pop();
    ++ans;
    pos = max(pos, p) + 1;
  }
  printf("%d\n", n - ans);
  return 0;
}
