#include <bits/stdc++.h>
using namespace std;
long long n, m, x, _, a, d, t[100001], ans;
long long rua(long long l, long long r) {
  if (r < l) return _;
  if (_ >= n * a) {
    ans++;
    return r + d;
  }
  if (l % a && l / a == r / a) {
    ans++;
    return r + d;
  }
  long long f = min((l - 1) / a + 1, n);
  long long la = min(r / a, n);
  long long k = (la - f) / x + 1;
  ans += k;
  f += (k - 1) * x;
  f *= a;
  if (f + d >= r) {
    return f + d;
  }
  ans++;
  return r + d;
}
int main() {
  scanf("%I64d%I64d%I64d%I64d", &n, &m, &a, &d), x = d / a + 1;
  for (long long i = 1; i <= m; i++)
    scanf("%I64d", &t[i]), _ = rua(_ + 1, t[i]);
  rua(_ + 1, n * a);
  printf("%I64d\n", ans);
  return 0;
}
