#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
struct node {
  double x, y, vx, vy;
} a[maxn];
bool ck(double a, double b) {
  if (a - b > 1e-50 || (fabs(a - b) <= 1e-50))
    return true;
  else
    return false;
}
int main() {
  int n;
  scanf("%d", &n);
  double lx, ly, rx, ry;
  scanf("%lf%lf%lf%lf", &lx, &ly, &rx, &ry);
  double tl = 0, tr = 0x3f3f3f3f3f;
  for (int i = 0; i < n; ++i)
    scanf("%lf%lf%lf%lf", &a[i].x, &a[i].y, &a[i].vx, &a[i].vy);
  for (int i = 0; i < n; ++i) {
    double x = a[i].x, y = a[i].y, vx = a[i].vx, vy = a[i].vy;
    double tmpl = 0, tmpr = 0x3f3f3f3f3f;
    if (ck(x, rx) && ck(vx, 0)) {
      return 0 * printf("-1\n");
    } else if (ck(y, ry) && vy >= 0) {
      return 0 * printf("-1\n");
    } else if (ck(lx, x) && vx <= 0) {
      return 0 * printf("-1\n");
    } else if (ck(ly, y) && vy <= 0) {
      return 0 * printf("-1\n");
    }
    double tt = 0;
    if (vx >= 0 && vy >= 0) {
      if (x <= lx) {
        tt = max(tt, (lx - x + 1e-50) / vx);
      }
      if (y <= ly) {
        tt = max(tt, (ly - y + 1e-50) / vy);
      }
      if (ck(x + vx * tt, rx) || ck(y + vy * tt, ry)) return 0 * printf("-1\n");
      tl = max(tl, tt);
      tt = 0;
      tt = min((rx - x + 1e-50) / vx, (ry - y + 1e-50) / vy);
      tr = min(tr, tt);
    } else if (vx >= 0 && vy <= 0) {
      if (x <= lx) {
        tt = max(tt, (lx - x + 1e-50) / vx);
      }
      if (y >= ry) {
        tt = max(tt, (ry - y + 1e-50) / vy);
      }
      if (ck(x + vx * tt, rx) || ck(ly, y + vy * tt)) return 0 * printf("-1\n");
      tl = max(tl, tt);
      tt = 0;
      tt = min((rx - x + 1e-50) / vx, (ly - y + 1e-50) / vy);
      tr = min(tr, tt);
    } else if (vx <= 0 && vy >= 0) {
      if (x >= rx) {
        tt = max(tt, (rx - x + 1e-50) / vx);
      }
      if (y <= ly) {
        tt = max(tt, (ly - y + 1e-50) / vy);
      }
      if (ck(lx, x + vx * tt) || ck(y + vy * tt, ry)) return 0 * printf("-1\n");
      tl = max(tl, tt);
      tt = 0;
      tt = min((lx - x + 1e-50) / vx, (ry - y + 1e-50) / vy);
      tr = min(tr, tt);
    } else if (vx <= 0 && vy <= 0) {
      if (x >= rx) {
        tt = max(tt, (rx - x + 1e-50) / vx);
      }
      if (y >= ry) {
        tt = max(tt, (ry - y + 1e-50) / vy);
      }
      if (ck(lx, x + vx * tt) || ck(ly, y + vy * tt)) return 0 * printf("-1\n");
      tl = max(tl, tt);
      tt = 0;
      tt = min((lx - x + 1e-50) / vx, (ly - y + 1e-50) / vy);
      tr = min(tr, tt);
    }
  }
  if (!ck(tl, tr))
    printf("%.20f\n", tl);
  else
    printf("-1\n");
  return 0;
}
