#include <bits/stdc++.h>
using namespace std;
const int maxn = 10001;
int n, l, r;
double w, u, v;
pair<double, double> bus[maxn];
bool cmp1(int a, int b) {
  if (bus[a].first < bus[b].first ||
      bus[a].first == bus[b].first && bus[a].second < bus[b].second)
    return true;
  else
    return false;
}
bool cmp2(int a, int b) {
  if (bus[a].first > bus[b].first ||
      bus[a].first == bus[b].first && bus[a].second < bus[b].second)
    return true;
  else
    return false;
}
int main() {
  scanf("%d%lf%lf%lf", &n, &w, &v, &u);
  for (int i = 1; i <= n; i++) scanf("%lf%lf", &bus[i].first, &bus[i].second);
  bool flag1 = true, flag2 = true;
  for (int i = 1; i <= n; i++) {
    if (bus[i].first / v < bus[i].second / u) flag1 = false;
    if (bus[i].first / v > bus[i].second / u) flag2 = false;
    if (!flag1 && !flag2) break;
  }
  if (flag1 || flag2) {
    printf("%lf\n", w / u);
    return 0;
  }
  if (cmp1(1, 2) && cmp1(1, n))
    l = 1;
  else if (cmp1(n, n - 1) && cmp1(n, 1))
    l = n;
  else {
    for (int i = 2; i < n; i++)
      if (cmp1(i, i - 1) && cmp1(i, i + 1)) l = i;
  }
  if (cmp2(1, 2) && cmp2(1, n))
    r = 1;
  else if (cmp2(n, n - 1) && cmp2(n, 1))
    r = n;
  else {
    for (int i = 2; i < n; i++)
      if (cmp2(i, i - 1) && cmp2(i, i + 1)) r = i;
  }
  double t = 0;
  for (int i = l; i != r; i = i % n + 1)
    t = max(t, bus[i].first / v + (w - bus[i].second) / u);
  t = max(t, bus[r].first / v + (w - bus[r].second) / u);
  printf("%lf\n", t);
  return 0;
}
