#include <bits/stdc++.h>
using namespace std;
long long t[100010];
int main() {
  long long a, d, n;
  int m;
  cin >> n >> m >> a >> d;
  for (int i = 0; i < m; ++i) {
    cin >> t[i];
  }
  long long ind = 1;
  int cnt = 0;
  long long last_time_closed = 0;
  for (int i = 0; i < m;) {
    long long time = ind * a;
    if (time < t[i] && ind <= n) {
      long long range = (min(n, t[i] / a) - ind + 1);
      long long q = d / a + 1;
      cnt += (range + q - 1) / q;
      last_time_closed = (((((range + q - 1) / q - 1) * q)) + ind) * a + d;
    } else {
      cnt++;
      last_time_closed = t[i] + d;
    }
    bool check = false;
    while (i < m && t[i] <= last_time_closed) {
      i++;
      check = true;
    }
    if (last_time_closed % a == 0)
      ind = last_time_closed / a + 1;
    else
      ind = (last_time_closed + a - 1) / a;
  }
  if (ind <= (long long)n) {
    long long range = (n - ind + 1);
    long long q = d / a + 1;
    cnt += (range + q - 1) / q;
  }
  cout << cnt << endl;
  return 0;
}
