#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 5;
multiset<int> s1;
vector<int> v1[MAXN];
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    int l, r;
    cin >> l >> r;
    if (l == 0) {
      s1.insert(r);
    } else {
      v1[l].push_back(r);
    }
  }
  for (int i = 0; i <= m; i++) {
    sort(v1[i].begin(), v1[i].end());
  }
  int ind = 0;
  for (int i = 1; i <= m; i++) {
    if (v1[i].size() > 1) {
      for (int j = 0; j < v1[i].size() - 1; j++) {
        s1.insert(v1[i][j]);
      }
    }
    if (v1[i].size() == 0) {
      if (s1.size()) {
        if (*s1.begin() <= i) {
          s1.erase(s1.begin());
        } else {
          ind = max(ind, i);
          while (v1[ind].size() != 0 && ind <= m) {
            ind++;
          }
          if (v1[ind].size()) {
            v1[ind].pop_back();
          }
        }
      } else {
        ind = max(ind, i);
        while (v1[ind].size() != 0 && ind <= m) {
          ind++;
        }
        if (v1[ind].size()) {
          v1[ind].pop_back();
        }
      }
    }
  }
  cout << s1.size() << endl;
}
