#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const long long maxn = 1e5 + 7;
const long long maxe = 1e6 + 7;
const long long INF = 1e9 + 7;
const double PI = acos(-1);
int dx[4] = {0, 0, 1, -1};
int dy[4] = {-1, 1, 0, 0};
inline void Max(int &a, int b) {
  if (b > a) a = b;
}
inline void Min(int &a, int b) {
  if (a == -1 || b < a) a = b;
}
int n, t, p, L;
pair<int, int> dp[maxn];
int l[maxn], r[maxn];
void update(int k, pair<int, int> t) {
  if (dp[k].first < t.first)
    dp[k] = t;
  else if (dp[k].first == t.first)
    dp[k].second = min(dp[k].second, t.second);
}
int main() {
  cin >> L >> n >> p >> t;
  for (int i = 1; i <= n; i++) scanf("%d%d", &l[i], &r[i]);
  dp[0] = make_pair(0, -INF);
  for (int i = 1, j = 0; i <= n; i++) {
    if (j) j--;
    for (; j < i && dp[j].second + t <= r[i]; j++) {
      int pos = max(dp[j].second + t, l[i]);
      int num = (r[i] - pos) / p;
      update(i, make_pair(num + dp[j].first, pos + num * p));
    }
    update(i, dp[i - 1]);
  }
  cout << dp[n].first << endl;
  return 0;
}
