#include <bits/stdc++.h>
using namespace std;
template <typename T>
void read(T &num) {
  char c = getchar();
  num = 0;
  T f = 1;
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    num = (num << 3) + (num << 1) + (c ^ 48);
    c = getchar();
  }
  num *= f;
}
template <typename T>
void qwq(T x) {
  if (x > 9) qwq(x / 10);
  putchar(x % 10 + '0');
}
template <typename T>
void write(T x) {
  if (x < 0) {
    x = -x;
    putchar('-');
  }
  qwq(x);
  putchar('\n');
}
struct wzy {
  int li, ri;
} as[100010];
inline bool cmp(wzy a, wzy b) { return a.li < b.li; }
int main() {
  int n, l, a;
  read(n);
  read(l);
  read(a);
  for (int i = 1; i <= n; i++) {
    int x, y;
    read(x);
    read(y);
    as[i].li = x;
    as[i].ri = x + y;
  }
  sort(as + 1, as + n + 1, cmp);
  int ans = 0;
  for (int i = 1; i <= n - 1; i++) {
    ans += (as[i + 1].li - as[i].ri) / a;
  }
  ans += (l - as[n].ri) / a;
  ans += (as[1].li) / a;
  write(ans);
  return 0;
}
