#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int n, m, L, R, b[N], hr[N], ans;
priority_queue<int, vector<int>, greater<int> > h;
vector<int> hl[N];
char c;
int read() {
  int x = 0, sig = 1;
  for (c = getchar(); c < '0' || c > '9'; c = getchar())
    if (c == '-') sig = -1;
  for (; c >= '0' && c <= '9'; c = getchar()) x = x * 10 + c - 48;
  return x * sig;
}
int main() {
  n = read();
  m = read();
  for (int i = 1, l, r; i <= n; i++) {
    l = read();
    r = read();
    hl[l].push_back(r);
  }
  L = 0;
  for (int i = 1, t; i <= m; i++) {
    for (vector<int>::iterator it = hl[i].begin(); it != hl[i].end(); it++) {
      if (L < i) {
        L++;
        h.push(*it);
      } else {
        t = h.top();
        if (t >= *it)
          hr[*it]++;
        else {
          h.pop();
          hr[t]++;
          h.push(*it);
        }
      }
    }
  }
  for (vector<int>::iterator it = hl[0].begin(); it != hl[0].end(); it++)
    hr[*it]++;
  R = m + 1;
  ans = hr[m + 1];
  for (int i = m; i; i--) {
    for (; hr[i] > 0; hr[i]--) {
      if (i < R)
        R--;
      else
        ans++;
    }
  }
  printf("%d\n", ans);
  return 0;
}
