#include <bits/stdc++.h>
using namespace std;
template <class T>
T gcd(T a, T b) {
  return (b != 0 ? gcd<T>(b, a % b) : a);
}
template <class T>
T lcm(T a, T b) {
  return (a / gcd<T>(a, b) * b);
}
template <class T>
inline bool read(T &x) {
  int c = getchar();
  int sgn = 1;
  while (~c && c < '0' || c > '9') {
    if (c == '-') sgn = -1;
    c = getchar();
  }
  for (x = 0; ~c && '0' <= c && c <= '9'; c = getchar()) x = x * 10 + c - '0';
  x *= sgn;
  return ~c;
}
const int INF = 2000000009;
const int MX = 100005;
const double EPS = 1e-9;
const int MOD = 1000000007;
int a[MX], sum[MX];
int main() {
  int n = ({
    int a;
    read(a);
    a;
  }),
      x = ({
        int a;
        read(a);
        a;
      });
  for (int i = 0; i < n; i++) {
    int l = ({
      int a;
      read(a);
      a;
    }),
        r = ({
          int a;
          read(a);
          a;
        });
    a[l]++;
    a[r + 1]--;
  }
  for (int i = 1; i < MX; i++) {
    a[i] += a[i - 1];
    sum[i] = sum[i - 1] + a[i];
  }
  int ans = 0;
  int pos = 1;
  while (pos < MX) {
    if (a[pos]) {
      ans++;
      pos++;
    } else {
      int temp = sum[min(MX - 1, pos + x - 1)] - sum[pos - 1];
      if (temp) {
        ans++;
        pos++;
      } else {
        pos = min(MX, pos + x);
      }
    }
  }
  printf("%d\n", ans);
  return 0;
}
