#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.00);
const double eps = 1e-6;
struct point {
  double x, y;
  void set() {
    double xx;
    scanf("%lf", &xx);
    ;
    double yy;
    scanf("%lf", &yy);
    ;
    x = xx;
    y = yy;
  }
};
struct line {
  double a, b, c;
  void get(point &p1, point &p2) {
    a = p2.y - p1.y;
    b = p1.x - p2.x;
    c = p1.y * p2.x - p1.x * p2.y;
    if (a < 0) a *= -1.0, b *= -1.0, c *= -1.0;
  }
  void get(double k, point p) {
    c = p.y - k * p.x;
    a = k;
    b = -1;
  }
  void show() { printf("%gx + %gy + %g = 0\n", a, b, c); }
  double get_x(double yy) { return (-c - b * yy) / a; }
};
struct node {
  point p;
  line l;
  double x;
  void fuck(double k, point b) {
    p = b;
    l.get(k, b);
    x = (-l.c) / l.a;
  }
} a[10100];
bool cmp(node a, node b) { return a.x < b.x; }
int main() {
  int n;
  scanf("%d", &n);
  double w;
  scanf("%lf", &w);
  ;
  double v;
  scanf("%lf", &v);
  ;
  double u;
  scanf("%lf", &u);
  ;
  double k = u / v;
  for (int i = 0; i < n; i++) {
    point p;
    p.set();
    a[i].fuck(k, p);
  }
  sort(a, a + n, cmp);
  if (a[0].x < -eps && a[n - 1].x > eps) {
    node f = a[n - 1];
    double ans = f.l.get_x(w);
    printf("%.10lf\n", ans / v);
  } else {
    printf("%.10lf\n", w * 1.0 / u);
  }
}
