#include <bits/stdc++.h>
using namespace std;
int main() {
  long long n, m, a, d;
  cin >> n >> m >> a >> d;
  vector<long long> t(m + 1);
  for (int i = 0; i < m; i++) {
    scanf("%lld", &t[i]);
  }
  m++;
  t.back() = 4e18;
  long long cnt = d / a + 1;
  long long p = 1;
  long long q = 0;
  long long ans = 0;
  while (p <= n) {
    if (a * p + d < t[q]) {
      long long k = (t[q] - 1 - a * p - d) / (cnt * a) + 1;
      k = min(k, (n - p) / cnt + 1);
      ans += k;
      p += k * cnt;
    } else {
      long long start = min(a * p, t[q]);
      while (q < m && t[q] - start <= d) {
        q++;
      }
      p = (start + d) / a + 1;
      ans++;
    }
  }
  while (q < m) {
    long long start = t[q];
    while (q < m && t[q] - start <= d) {
      q++;
    }
    ans++;
  }
  cout << ans - 1 << endl;
}
