#include <bits/stdc++.h>
using namespace std;
int main() {
  long long n, a, m, i, ii, x, d, c;
  vector<long long> t;
  cin >> n >> m >> a >> d;
  for (i = 0; i < m; i++) {
    cin >> x;
    t.push_back(x);
  }
  c = 0;
  i = 0;
  ii = 1;
  while (i < m && ii <= n) {
    if (ii * a + d < t[i]) {
      x = min(t[i], n * a);
      x = ((x - d - 1 - ii * a) / a + 1) / (d / a + 1);
      c += x;
      ii += x * (d / a + 1);
    }
    if (ii > n) break;
    x = min(ii * a, t[i]);
    i = upper_bound(t.begin(), t.end(), x + d) - t.begin();
    ii = ii +
         max((long long)0,
             (long long)((x + d - ii * a) < 0 ? 0 : (x + d - ii * a) / a + 1));
    c++;
  }
  while (i < m) {
    i = upper_bound(t.begin(), t.end(), t[i] + d) - t.begin();
    c++;
  }
  if (ii <= n) {
    c += (n - ii + 1) / (d / a + 1) + ((n - ii + 1) % (d / a + 1) == 0 ? 0 : 1);
  }
  cout << c << endl;
  return 0;
}
