#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
long long n, m, a, d, t[maxn];
int main() {
  scanf("%lld%lld%lld%lld", &n, &m, &a, &d);
  for (int i = 0; i < m; i++) scanf("%lld", &t[i]);
  if (a * n > t[m - 1]) t[m++] = a * n;
  long long l = 0, last = 0, r, ans = 0;
  for (int i = 0; i < m; i++) {
    if (i && (t[i - 1] == t[i] || last >= t[i])) continue;
    r = min(n, t[i] / a);
    if (r >= l) {
      l = min(n, last / a) + 1;
      if (r >= l) {
        if (d < a) {
          ans += (r - l) + 1;
          last = r * a + d;
        } else {
          ans += (r - l) / (d / a + 1) + 1;
          long long q = (r - l) % (d / a + 1);
          last = (r - q) * a + d;
        }
      }
    }
    if (last >= t[i]) continue;
    ans++;
    last = t[i] + d;
  }
  printf("%lld\n", ans);
  return 0;
}
