#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
const long long MOD = 1000000007;
const double PI = acos(-1.);
const double eps = 1e-9;
long long modPow(long long a, long long b, long long MOD) {
  long long ret = 1;
  for (; b; b >>= 1) {
    if (b & 1) ret = ret * a % MOD;
    a = a * a % MOD;
  }
  return ret;
}
const int MXN = 100005;
int x[MXN], y[MXN];
long long z[MXN];
void solve() {
  int n, w, v, u;
  scanf("%d%d%d%d", &n, &w, &v, &u);
  for (int i = (0); i < (int)(n); i++) scanf("%d%d", &x[i], &y[i]);
  int le = 0, re = 0;
  for (int i = (0); i < (int)(n); i++) {
    z[i] = 1LL * u * x[i] - 1LL * v * y[i];
    if (z[i] < 0) le = 1;
    if (z[i] > 0) re = 1;
  }
  if (!le || !re) {
    printf("%.16f\n", 1. * w / u);
    return;
  }
  int id = max_element(x, x + n) - x;
  while (1) {
    int jd = (id - 1 + n) % n;
    if (x[jd] >= 0 && y[jd] <= y[id])
      id = jd;
    else
      break;
  }
  double t = 1. * y[id] / u;
  while (1) {
    double lt = 1. * x[id] / v;
    t = max(t, lt);
    int jd = (id + 1 + n) % n;
    if (x[jd] < x[id]) break;
    double rt = 1. * x[jd] / v;
    t = max(rt, t + 1. * (y[jd] - y[id]) / u);
    id = jd;
  }
  t += 1. * (w - y[id]) / u;
  printf("%.16f\n", t);
}
int main() {
  int _T = 1;
  for (int CA = (0); CA < (int)(_T); CA++) {
    solve();
  }
  return 0;
}
