#include <bits/stdc++.h>
using namespace std;
const long long inf = (long long)1e18;
const long long mod = (long long)1e9 + 7;
const double pi = acos(-1.0);
const double eps = (double)1e-9;
const int dx[] = {0, 0, 1, 0, -1};
const int dy[] = {0, 1, 0, -1, 0};
const int N = 100500;
int m;
long long n, a, d, t[N], cur;
pair<long long, long long> get(long long L, long long R) {
  long long l = 0, r = n + 1, mid;
  while (l < r - 1) {
    mid = (l + r) / 2;
    if (a * mid >= L)
      r = mid;
    else
      l = mid;
  }
  long long resL = r;
  l = 0, r = n + 1, mid;
  while (l < r - 1) {
    mid = (l + r) / 2;
    if (a * mid > R)
      r = mid;
    else
      l = mid;
  }
  long long resR = r - 1;
  return {resL, resR};
}
int main() {
  scanf("%lld%d%lld%lld", &n, &m, &a, &d);
  for (int i = 1; i <= m; i++) scanf("%lld", &t[i]);
  long long cnt = min(n, d / a + 1);
  long long ans = 0;
  for (int i = 1; i <= m; i++) {
    if (cur > t[i]) continue;
    pair<long long, long long> p = get(cur, t[i]);
    long long l = p.first, r = p.second;
    if (l <= r) {
      long long k = (r - l + 1 + cnt - 1) / cnt;
      cur = (l + (k - 1) * cnt) * a + d + 1;
      ans += k;
    }
    if (cur <= t[i]) cur = t[i] + d + 1, ans++;
  }
  pair<long long, long long> p = get(cur, inf);
  if (p.second >= p.first) ans += (p.second - p.first + 1 + cnt - 1) / cnt;
  cout << ans << endl;
  return 0;
}
