#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
const int INF = (1 << 30) - 1;
const int mod = (int)(1e9 + 7);
long long n, m, a, d;
long long T[100010];
int main() {
  scanf("%I64d%I64d%I64d%I64d", &n, &m, &a, &d);
  for (int i = 1; i <= m; ++i) {
    scanf("%I64d", &T[i]);
  }
  long long sta = 1, stt = 1;
  long long ans = 0;
  long long k = (d + 1) / a;
  if ((d + 1) % a) k++;
  while (sta <= n || stt <= m) {
    if (sta > n) {
      long long Jie = T[stt] + d;
      ans++;
      while (stt <= m && T[stt] <= Jie) stt++;
    } else if (stt > m) {
      ans += (n - sta + 1) / k;
      if ((n - sta + 1) % k) ans++;
      sta = n + 1;
    } else if (sta * a <= T[stt]) {
      long long q = T[stt] / a;
      long long p = (q - sta) / k;
      long long ned = n - sta + 1;
      if (p * k + k > ned) {
        long long plus = ned / k;
        if (ned % k) plus++;
        ans += plus;
        long long Jie = (sta + (plus - 1) * k) * a + d;
        while (stt <= m && T[stt] <= Jie) stt++;
        sta = n + 1;
        continue;
      }
      ans += p + 1;
      long long Jie = (sta + p * k) * a + d;
      sta = sta + p * k + k;
      while (stt <= m && T[stt] <= Jie) stt++;
    } else {
      long long Jie = T[stt] + d;
      ans++;
      while (stt <= m && T[stt] <= Jie) stt++;
      long long q = Jie / a;
      sta = max(sta, q + 1);
    }
  }
  printf("%I64d\n", ans);
  return 0;
}
