#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9;
long long n, m, a, d, cur, k, nump, ans;
long long t[N];
int main() {
  long long x;
  scanf("%I64d%I64d%I64d%I64d", &n, &m, &a, &d);
  for (int i = 0; i < m; i++) {
    scanf("%I64d", &x);
    t[i] = x;
  }
  sort(t, t + m);
  m = unique(t, t + m) - t;
  k = d / a + 1;
  cur = min(t[0], a);
  for (int i = 0; i < m; i++) {
    if (t[i] < cur) continue;
    if (nump >= n || t[i] <= (nump + 1) * a) {
      cur = t[i] + d;
      ans++;
      nump = cur / a;
      cur++;
    } else {
      long long del = min(n, t[i] / a);
      long long Ds = (del - nump + k - 1) / k;
      ans += Ds;
      cur = (nump + (Ds - 1) * k + 1) * a + d;
      nump = cur / a;
      cur++;
      if (cur <= t[i]) {
        cur = t[i] + d;
        ans++;
        nump = cur / a;
        cur++;
      }
    }
  }
  if (nump < n) {
    ans += (n - nump + k - 1) / k;
  }
  printf("%I64d", ans);
  return 0;
}
