#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e5 + 5;
long long n, m, a, d;
long long arr[MAX];
int main() {
  scanf("%lld %lld %lld %lld", &n, &m, &a, &d);
  for (int i = int(1); i < int(m + 1); ++i) {
    scanf("%lld", arr + i);
  }
  long long get = d / a + 1;
  long long ans = 0;
  long long l_A = 1;
  long long L = 0, R = 0;
  for (int i = int(1); i < int(m + 1); ++i) {
    long long r_A = min(n, arr[i] / a);
    if (l_A > r_A) {
    } else {
      long long need = r_A - l_A + 1;
      long long ranges = (need + get - 1) / get;
      long long tmp = l_A + (ranges - 1) * get;
      ans += ranges;
      L = a * tmp, R = a * tmp + d;
    }
    if (L <= arr[i] && arr[i] <= R) {
    } else {
      ans++;
      L = arr[i];
      R = arr[i] + d;
    }
    l_A = R / a + 1;
  }
  if (l_A <= n) {
    long long r_A = n;
    long long need = r_A - l_A + 1;
    long long ranges = (need + get - 1) / get;
    l_A += (ranges - 1) * get;
    ans += ranges;
    L = l_A, R = l_A + d;
  }
  printf("%lld\n", ans);
  return 0;
}
