#include <bits/stdc++.h>
using namespace std;
struct Point {
  double x, y;
  Point() {}
  Point(double _x, double _y) {
    x = _x;
    y = _y;
  }
  void read() { scanf("%lf%lf", &x, &y); }
};
Point P[1000005];
bool operator<(const Point &p1, const Point &p2) { return p1.y <= p2.y; }
int main() {
  int n;
  double w, v, u;
  scanf("%d%lf%lf%lf", &n, &w, &v, &u);
  for (int i = 0; i < n; i++) P[i].read();
  sort(P, P + n);
  bool flag = true;
  for (int i = 0; i < n; i++)
    if (P[i].x * u < P[i].y * v) flag = 0;
  if (flag == 1)
    printf("%.10lf\n", w / u);
  else {
    double ans = 0;
    int x_aux = 0;
    for (int i = 0; i < n; i++) {
      ans = max((P[i].y - x_aux) * 1.0 / u + ans, P[i].x * 1.0 / v);
      x_aux = P[i].y;
    }
    ans = ans + (w - x_aux) / u;
    printf("%.10lf\n", ans);
  }
}
