#include <bits/stdc++.h>
using namespace std;
struct Vect2 {
  long double x, y;
  Vect2() : x(0), y(0) {}
  Vect2(long double xx, long double yy) : x(xx), y(yy) {}
  Vect2 operator+(const Vect2 &v) const { return Vect2(x + v.x, y + v.y); }
  Vect2 operator-(const Vect2 &v) const { return Vect2(x - v.x, y - v.y); }
  void operator*=(long double a) {
    x *= a;
    y *= a;
  }
  long double operator*(const Vect2 &v) const { return (x * v.y - y * v.x); }
  long double length() const { return sqrt(x * x + y * y); }
  long double length2() const { return (x * x + y * y); }
  void normalize() {
    long double tmp = length();
    x /= tmp;
    y /= tmp;
  }
} speed, pts[10000], bst;
int main() {
  int n, x, y, wst;
  long double w, v, u;
  cin >> n >> w >> v >> u;
  speed = Vect2(v, u);
  scanf("%d %d", &x, &y);
  pts[0] = Vect2((long double)x, (long double)y);
  bst = pts[0];
  wst = 0;
  for (int i = 1; i < n; ++i) {
    scanf("%d %d", &x, &y);
    pts[i] = Vect2((long double)x, (long double)y);
    if (bst * pts[i] > 0) bst = pts[i];
    if (pts[wst] * pts[i] < 0) wst = i;
  }
  cout.precision(20);
  while (speed * (pts[(wst + 1) % n] - pts[wst]) < 0) wst = (wst + 1) % n;
  if (bst * speed >= 0 || speed * pts[wst] >= 0)
    cout << (w / speed.y);
  else {
    Vect2 tmp = speed;
    tmp *= (pts[wst].y / tmp.y);
    cout << (w / speed.y + (pts[wst].x - tmp.x) / speed.x);
  }
  return 0;
}
