#include <bits/stdc++.h>
using namespace std;
const int maxm = 1e5 + 7;
long long n, m, a, d;
long long num[maxm];
void init() {
  for (long long i = 0; i < m; ++i) {
    scanf("%I64d", &num[i]);
  }
  num[m] = n * a;
  sort(num, num + m + 1);
}
void solve() {
  long long ans = 1, pre = min(num[0], a);
  long long k = (d + 1) / a;
  if ((d + 1) % a) k += 1;
  for (long long i = 0; i <= m;) {
    long long clo = pre + d;
    if (clo >= num[i]) {
      ++i;
      continue;
    }
    long long t = (clo / a + 1) * a;
    if (num[i] <= t || num[i] > n * a) {
      pre = num[i];
      ++ans;
      ++i;
      continue;
    }
    long long t2 = (num[i] - t) / a;
    t2 += 1;
    long long text = 0;
    if (t2 % k) text = 1;
    t2 /= k;
    t2 += text;
    ans += t2;
    t += (t2 - 1) * k * a;
    pre = t;
  }
  cout << ans << endl;
}
int main() {
  while (scanf("%I64d%I64d%I64d%I64d", &n, &m, &a, &d) != EOF) {
    init();
    solve();
  }
  return 0;
}
