#include <bits/stdc++.h>
using namespace std;
int n, m;
int l[810000], r[810000], tx[810000], mi[810000], add[810000];
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]);
  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\n", -ans);
}
