#include <bits/stdc++.h>
using namespace std;
const long long int MOD = 1000000007;
const long long int INF = 100100100100100100;
const long long int N_MAX = 1 << 18;
long long int N, M;
vector<pair<long long int, long long int> > lr;
long long int cop_M;
long long int dat1[2 * N_MAX - 1];
long long int dat2[2 * N_MAX - 1];
long long int add(long long int, long long int, long long int, long long int,
                  long long int, long long int);
long long int secmin(long long int, long long int, long long int, long long int,
                     long long int);
int main() {
  cin >> N >> M;
  for (long long int i = 0; i < N; i++) {
    long long int a, b;
    cin >> a >> b;
    lr.push_back(make_pair(a, b));
  }
  sort(lr.begin(), lr.end());
  for (long long int i = 0; i < M + 1; i++) {
    add(i, i + 1, i - M, 0, 0, M + 1);
  }
  long long int ans = 0;
  for (long long int i = 0; i < N; i++) {
    pair<long long int, long long int> tmp = lr[i];
    cerr << lr[i].first << " " << lr[i].second << endl;
    add(0, lr[i].second, 1, 0, 0, M + 1);
    ans = max(ans, secmin(0, M + 1, 0, 0, M + 1) - lr[i].first);
    cerr << secmin(0, M + 1, 0, 0, M + 1) << " " << lr[i].first << endl;
    for (long long int i = 0; i < M + 1; i++) {
      cerr << secmin(i, i + 1, 0, 0, M + 1) << " ";
    }
    cerr << endl;
  }
  cout << ans << endl;
}
long long int add(long long int a, long long int b, long long int x,
                  long long int k, long long int l, long long int r) {
  if (a <= l && r <= b) {
    dat1[k] += x;
  } else if (l < b && a < r) {
    long long int vl = add(a, b, x, k * 2 + 1, l, (l + r) / 2);
    long long int vr = add(a, b, x, k * 2 + 2, (l + r) / 2, r);
    dat2[k] = max(vl, vr);
  }
  return dat1[k] + dat2[k];
}
long long int secmin(long long int a, long long int b, long long int k,
                     long long int l, long long int r) {
  if (b <= l || r <= a) {
    return -INF;
  } else if (a <= l && r <= b) {
    return dat1[k] + dat2[k];
  } else {
    long long int vl = secmin(a, b, k * 2 + 1, l, (l + r) / 2);
    long long int vr = secmin(a, b, k * 2 + 2, (l + r) / 2, r);
    return max(vl, vr) + dat1[k];
  }
}
