#include <bits/stdc++.h>
using namespace std;
int main() {
  unsigned long long n, a, m, d;
  cin >> n >> m >> a >> d;
  unsigned long long open = 0, close_t = 0;
  vector<unsigned long long> b(m);
  for (int i = 0; i < m; i++) cin >> b[i];
  b.push_back(n * a);
  unsigned long long last_t = 0;
  for (int i = 0; i <= m; i++) {
    unsigned long long t = b[i];
    if (close_t >= t) continue;
    unsigned long long ta1 = (close_t / a + 1) * a;
    unsigned long long ta2 = t / a * a;
    ta2 = min(n * a, ta2);
    if (ta1 <= ta2 && ta1 > last_t && ta1 <= n * a) {
      last_t = ta2;
      unsigned long long na = (ta2 - ta1) / a + 1;
      unsigned long long delta = d / a + 1;
      open += (na % delta) ? (na / delta + 1) : (na / delta);
      ta2 -= (na % delta - 1 + delta) % delta * a;
      ta2 = max(ta1, ta2);
      close_t = ta2 + d;
    }
    if (close_t < t) {
      open++;
      close_t = t + d;
    }
  }
  cout << open;
  return 0;
}
