#include <bits/stdc++.h>
using namespace std;
const long long ool = 1e18 + 9;
const int oo = 1e9 + 9, base = 1e9 + 7;
const double eps = 1e-7;
const int N = 2e3 + 6;
int m;
long long n, A, D, ans;
vector<long long> vec;
int main() {
  ios_base ::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n >> m >> A >> D;
  for (int i = 1; i <= m; ++i) {
    long long x;
    cin >> x;
    if ((!(int)vec.size() || vec.back() != x) && (x % A != 0 || x / A > n))
      vec.emplace_back(x);
  }
  if (!(int)vec.size() || n * A > vec.back()) vec.emplace_back(n * A);
  long long last = 0;
  for (int i = 0; i <= (int)vec.size() - 1; ++i) {
    if (last >= vec[i]) continue;
    long long r = min(n * A, vec[i] / A * A);
    if (r > last) {
      long long cnt = r / A - last / A;
      ans += (cnt + (D / A + 1) - 1) / (D / A + 1);
      cnt = cnt % (D / A + 1) - 1;
      if (cnt < 0) cnt = D / A;
      last = r - (cnt * A) + D;
    }
    if (last < vec[i]) {
      ++ans;
      last = vec[i] + D;
    }
  }
  cout << ans << "\n";
  return 0;
}
