#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
int dcmp(double x) {
  if (fabs(x) < eps) return 0;
  if (x > 0.0)
    return 1;
  else
    return -1;
}
const int maxn = 10005;
struct Node {
  int x, y;
  bool operator<(const Node t) const {
    if (y ^ t.y) return y < t.y;
    return x < t.x;
  }
} node[maxn];
int n, w, v, u;
void init() {
  scanf("%d%d%d%d", &n, &w, &v, &u);
  for (int i = 1; i <= n; i++) scanf("%d%d", &node[i].x, &node[i].y);
  sort(node + 1, node + n + 1);
}
inline bool check() {
  for (int i = 1; i <= n; i++)
    if (dcmp((double)node[i].x / v - (double)node[i].y / u) == -1) return false;
  return true;
}
int main() {
  init();
  if (check()) {
    printf("%lf", (double)w / u);
    exit(0);
  }
  double ans = 0.0;
  double cur = 0.0;
  for (int i = 1; i <= n; i++) {
    if (dcmp((double)node[i].x / v - ans - ((double)node[i].y - cur) / u) == -1)
      ans += ((double)node[i].y - cur) / u;
    else
      ans = (double)node[i].x / v;
    cur = (double)node[i].y;
  }
  ans += ((double)w - cur) / u;
  printf("%lf", ans);
  return 0;
}
