#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
long long n, m, a, d;
long long t[maxn];
int main(int argc, char const *argv[]) {
  cin >> n >> m >> a >> d;
  for (int i = 1; i <= m; i++) scanf("%I64d", t + i);
  long long cross = d / a + 1;
  sort(t + 1, t + m + 1);
  int headt = 1, heada = 1;
  long long ans = 0;
  while (heada <= n && headt <= m) {
    if (heada * a < t[headt]) {
      long long st = heada, ed = min(t[headt] / a, n);
      long long num = ed - st + 1;
      ans += (long long)ceil(1.0 * num / cross);
      long long res = num % cross;
      if (res == 0) res += cross;
      long long nowst = ed - res + 1;
      long long edt = nowst * a + d;
      while (headt <= m && t[headt] <= edt) headt++;
      heada = min(edt / a + 1, n + 1);
    } else {
      long long edt = t[headt] + d;
      heada = min(edt / a + 1, n + 1);
      while (headt <= m && t[headt] <= edt) headt++;
      ans++;
    }
  }
  if (heada <= n) {
    long long num = n - heada + 1;
    ans += (long long)ceil(1.0 * num / cross);
  }
  if (headt <= m) {
    long long base = -1;
    for (int i = headt; i <= m; i++) {
      if (base == -1 || t[i] - base > d) {
        base = t[i];
        ans++;
      }
    }
  }
  cout << ans << endl;
  return 0;
}
