#include <bits/stdc++.h>
using namespace std;
unsigned long long n, x, k, t[100100], use[100100], m, a, d, ans, nr;
string s;
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> m >> a >> d;
  int dbgg = 0;
  if (d == 1000000000000000000) dbgg = 1;
  for (unsigned long long i = 1; i <= m; i++) cin >> t[i];
  unsigned long long last_closed = 0;
  unsigned long long nr = d / a + 1;
  unsigned long long ok = 1;
  for (unsigned long long i = 1; i <= m; i++) {
    if (ok) {
      unsigned long long first_open = ((last_closed + a) / a) * a;
      if (first_open <= t[i]) {
        unsigned long long lst_open_index = t[i] - first_open;
        lst_open_index /= nr * a;
        unsigned long long last_open = first_open + lst_open_index * nr * a;
        if (last_open >= n * a) {
          ok = 0;
          lst_open_index = n * a - first_open;
          lst_open_index /= nr * a;
          last_open = first_open + lst_open_index * nr * a;
        }
        if (last_open >= first_open) {
          lst_open_index = (last_open - first_open) / (nr * a);
          ans += lst_open_index + 1;
          last_closed = last_open + d;
        };
        ;
        ;
        ;
        ;
      }
    }
    if (last_closed < t[i]) {
      ans++;
      last_closed = t[i] + d;
    };
    ;
  }
  if (ok) {
    unsigned long long first_open = ((last_closed + a) / a) * a;
    if (n * a >= first_open) {
      unsigned long long cnt = (n * a - first_open) / a + 1;
      if (cnt > 0) ans += cnt / nr + 1 - (cnt % nr == 0);
    }
  }
  cout << ans << '\n';
}
