#include <bits/stdc++.h>
void re(int &x) { scanf("%d", &x); }
void re(int &x, int &y) { scanf("%d %d", &x, &y); }
void re(long long &x) { scanf("%lld", &x); }
void re(long long &x, long long &y) { scanf("%lld %lld", &x, &y); }
void re(double &x) { scanf("%lf", &x); }
void re(double &x, int &y) { scanf("%lf %lf", &x, &y); }
using namespace std;
const int N = 1e4 + 5;
const int inf = 0x3f3f3f3f;
struct Point {
  double x, y;
  Point() {}
  Point(double _x, double _y) {
    x = _x;
    y = _y;
  }
  void input() { scanf("%.2lf%.2lf", &x, &y); }
};
bool cmp(Point a, Point b) { return atan2(a.y, a.x) < atan2(b.y, b.x); }
Point p[N];
int main() {
  int n;
  double w, u, v;
  cin >> n >> w >> v >> u;
  for (int i = 0; i <= n - 1; i++) cin >> p[i].x >> p[i].y;
  sort(p, p + (int)n, cmp);
  double ang = atan2(u, v);
  double R = 0;
  for (int i = 0; i <= n - 1; i++) {
    R = max(R, p[i].x);
  }
  double ans = w / u;
  if (atan2(p[n - 1].y, p[n - 1].x) <= ang) {
    ans = w / u;
  } else
    for (int i = 0; i <= n - 1; i++) {
      ans = max(max(p[i].y / u, p[i].x / v) + (w - p[i].y) / u, ans);
      if (p[i].x == R) {
        break;
      }
    }
  printf("%.8f\n", ans);
  return 0;
}
