#include <bits/stdc++.h>
using namespace std;
double x[10000], y[10000];
double trar(pair<double, double> a, pair<double, double> b,
            pair<double, double> c) {
  return 0.5 * (a.first * b.second + b.first * c.second + c.first * a.second -
                a.first * c.second - c.first * b.second - b.first * a.second);
}
int main(void) {
  std::ios::sync_with_stdio(false);
  long long n, i, in, id, p, q, pt = 0;
  double w, u, v, t, t1, t2, th, ph;
  cin >> n >> w >> v >> u;
  for (i = 0; i < n; i++) cin >> x[i] >> y[i];
  in = 0;
  t = w / u;
  for (i = 0; i < n; i++) {
    t1 = trar({0, 0}, {x[i], y[i]}, {t * v, w});
    t2 = trar({0, 0}, {x[(i + 1) % n], y[(i + 1) % n]}, {t * v, w});
    if (t1 * t2 < 0.0) {
      in++;
    } else if (fabs(t1) < 1e-9 && fabs(t2) < 1e-9)
      in -= 100;
    else if (fabs(t1) < 1e-9)
      pt++;
  }
  if (in + pt == 2) {
    th = atan(u / v);
    id = 0;
    for (i = 1; i < n; i++) {
      if (x[i] < x[id]) id = i;
    }
    for (i = 0; i < n; i++) {
      p = (id + i) % n;
      q = (id + i + 1) % n;
      ph = atan2(y[q] - y[p], x[q] - x[p]);
      if (ph < th)
        continue;
      else
        break;
    }
    p = (id + i) % n;
    t = max(x[p] / v, y[p] / u) + (w - y[p]) / u;
  }
  cout << fixed << setprecision(8) << t << endl;
  return 0;
}
