#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e5 + 20;
long long n, m, a, d, times, sec, step;
long long t[MAX], cnt, pre[MAX], nxt[MAX];
void process(long long k, long long kr, long long ti) {
  long long num = kr - k + 1, aa, k2;
  assert(num >= 0);
  if (num % step != 0) {
    aa = num / step;
    times += aa;
    k2 = k + aa * step;
  } else {
    aa = num / step - 1;
    assert(aa >= 0);
    times += aa;
    k2 = k + aa * step;
  }
  long long k3 = t[ti] - (k2 * a + d);
  if (k3 > (long long)0)
    times++, sec = d;
  else
    sec = -k3;
}
int main() {
  scanf("%lld %lld %lld %lld", &n, &m, &a, &d);
  set<long long> mm;
  step = d / a + 1;
  for (int i = 0; i < m; ++i) {
    scanf("%lld", &t[i]);
    if (t[i] % a != 0 || t[i] / a > n) mm.insert(t[i]);
  }
  cnt = 0;
  for (long long ele : mm) t[cnt++] = ele;
  times = 1, sec = d;
  if (cnt) {
    for (int i = 0; i < cnt; ++i) {
      long long t1 = t[i] / a;
      if (t[i] % a)
        pre[i] = t1, nxt[i] = t1 + 1;
      else
        pre[i] = t1 - 1, nxt[i] = t1 + 1;
    }
    if (pre[0] >= 1) {
      process(1, std::min(pre[0], n), 0);
    }
    for (int i = 1; i < cnt; ++i) {
      if (t[i - 1] + sec >= t[i])
        sec = t[i - 1] + sec - t[i];
      else {
        if (nxt[i - 1] > pre[i]) {
          times++, sec = d;
        } else {
          long long l = std::max((long long)1, nxt[i - 1]);
          long long r = std::min(n, pre[i]);
          if (l > r) {
            times++, sec = d;
          } else {
            long long bound = t[i - 1] + sec;
            times++, sec = d;
            if (bound < l * a)
              process(l, r, i);
            else if (bound < r * a) {
              long long t1 = bound / a + 1;
              process(t1, r, i);
            }
          }
        }
      }
    }
    long long t1 = (t[cnt - 1] + sec) / a + 1;
    if (t1 <= n) {
      times++, sec = d;
      t1 = n - t1 + 1;
      if (t1 % step)
        times += t1 / step;
      else
        times += t1 / step - 1;
    }
  } else {
    if (n % step)
      times += n / step;
    else
      times += n / step - 1;
  }
  printf("%lld\n", times);
  return 0;
}
