#include <bits/stdc++.h>
using namespace std;
template <typename T>
bool setmin(T& a, T b) {
  if (b < a) {
    a = b;
    return true;
  } else {
    return false;
  }
}
template <typename T>
bool setmax(T& a, T b) {
  if (b > a) {
    a = b;
    return true;
  } else {
    return false;
  }
}
template <typename T>
bool setmineq(T& a, T b) {
  if (b <= a) {
    a = b;
    return true;
  } else {
    return false;
  }
}
template <typename T>
bool setmaxeq(T& a, T b) {
  if (b >= a) {
    a = b;
    return true;
  } else {
    return false;
  }
}
template <typename T>
T gcd(T a, T b) {
  return (b == 0 ? a : gcd(b, a % b));
}
template <typename T>
T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
int n, m, ans;
pair<int, int> p[200000];
pair<int, int> q[200000];
int main() {
  cin >> n >> m;
  for (int i = (0); i < (n); i++) {
    int l, r;
    cin >> l >> r;
    l--;
    r--;
    p[i] = make_pair(r, l + m);
  }
  sort(p, p + n);
  int c = 0;
  for (int i = (0); i < (n); i++) {
    int k = max(c + 1, p[i].first);
    if (k <= p[i].second) {
      c = k;
    } else {
      ans++;
    }
  }
  cout << ans << endl;
  return 0;
}
