#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000010;
const int LOGMAXN = 20;
ifstream fin("input.txt");
ofstream fout("output.txt");
int n;
double w, u, v;
double cal(const pair<double, double>& pt1, const pair<double, double>& pt2) {
  return (pt2.second - pt1.second) / (pt2.first - pt1.first);
}
pair<double, double> input[100010];
int main() {
  cin >> n >> w >> v >> u;
  double p1, p2;
  double maxi = 0;
  double mini = 1e9 + 1;
  int index = 0;
  bool pass = true;
  for (int i = 0; i < n; i++) {
    cin >> p1 >> p2;
    input[i].first = p1;
    input[i].second = p2;
    if (p1 <= 0) {
      pass = false;
      continue;
    }
    maxi = max(maxi, p2 / p1);
    if (p2 / p1 < mini) {
      mini = p2 / p1;
      index = i;
    }
  }
  if (pass && maxi <= u / v + 1e-7) {
    cout << fixed << setprecision(10) << w / u;
    return 0;
  }
  if (input[index].first <= 0 || mini + 1e-7 >= u / v) {
    cout << fixed << setprecision(10) << w / u;
    return 0;
  }
  pair<double, double> pt1, pt2;
  pt1 = input[index];
  pt2 = input[(index + 1) % n];
  double result = pt1.first / v;
  while (pt1.first < pt2.first && cal(pt1, pt2) < u / v) {
    result += (pt2.first - pt1.first) / v;
    index = (index + 1) % n;
    pt1 = input[index];
    pt2 = input[(index + 1) % n];
  }
  result += (w - pt1.second) / u;
  cout << fixed << setprecision(10) << result;
  return 0;
}
