#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll INF = 4e18;
const int MAXN = 1.1e5;
ll T[MAXN];
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  ll N, M, A, D;
  cin >> N >> M >> A >> D;
  for (ll i = 0; i < M; i++) {
    cin >> T[i];
  }
  sort(T, T + M);
  T[M] = INF;
  auto getEmployee = [&](ll i) -> ll { return i <= N ? i * A : INF; };
  ll est = 1;
  ll cst = 0;
  ll ans = 0;
  while (est <= N || cst < M) {
    ll nxt = D + min(getEmployee(est), T[cst]);
    ll een = min(N + 1, (nxt / A) + 1);
    ll cen = ll(upper_bound(T, T + M, nxt) - T);
    ans++;
    if (cst == cen) {
      ll delta = een - est;
      assert(delta > 0);
      ll tgt = min(N + 1, T[cst] / A);
      ll extra = max(tgt - een, ll(0)) / delta;
      ans += extra;
      een += extra * delta;
    }
    assert(een > est || cen > cst);
    assert(est <= een && cst <= cen);
    tie(est, cst) = {een, cen};
  }
  cout << ans << '\n';
  return 0;
}
