#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;   }   