#include <bits/stdc++.h>
using namespace std;
int fn[800010], s[800010], n, m, an;
pair<int, int> p[200000];
bool cmp(pair<int, int> const &a, pair<int, int> const &b) {
  if (a.first == b.first) return a.second > b.second;
  return a.first < b.first;
}
void ad(int i, int z, int l = 0, int r = m + 2, int id = 1) {
  if (l + 1 == r) {
    fn[id] += z, s[id] += z;
    return;
  }
  int m = l + r >> 1, a = id << 1, b = id << 1 | 1;
  if (i < m)
    ad(i, z, l, m, a);
  else
    ad(i, z, m, r, b);
  fn[id] = max(fn[a] + s[b], fn[b]);
  s[id] = s[a] + s[b];
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < (int)(n); ++i) scanf("%d%d", &p[i].first, &p[i].second);
  sort(p, p + n, cmp);
  for (int i = 1; i < (int)(m + 1); ++i) ad(i, -1);
  for (int i = 0; i < (int)(n); ++i) {
    ad(p[i].second, 1);
    an = max(an, fn[1] - p[i].first);
  }
  printf("%d\n", an);
}
