#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  int L, N, P, T;
  cin >> L >> N >> P >> T;
  vector<int> dp, dpbest;
  dp.reserve(N + 1);
  dpbest.reserve(N + 1);
  dp.push_back(0);
  dpbest.push_back(-T);
  for (int i = 0, j = 0; i < N; i++) {
    int s, e;
    cin >> s >> e;
    dp.push_back(dp.back());
    dpbest.push_back(dpbest.back());
    while (true) {
      int tot = e - max(dpbest[j] + T, s);
      int val = dp[j] + tot / P;
      int finish = e - tot % P;
      if (val > dp.back() || (val == dp.back() && finish < dpbest.back())) {
        dp.back() = val;
        dpbest.back() = finish;
      }
      if (j < i && dpbest[j + 1] + T <= e) {
        j++;
      } else {
        break;
      }
    }
  }
  cout << dp.back() << '\n';
  return 0;
}
