#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
template <class T>
T f_abs(T a) {
  return a > 0 ? a : -a;
}
template <class T>
T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
template <class T>
T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
const int maxn = 1e5 + 50;
const double eps = 1e-9;
double x[maxn], y[maxn], a[maxn], b[maxn];
double X1, Y1, X2, Y2;
int n;
void f(double x, double a, double x1, double x2, double& L, double& R) {
  if (a > 0) {
    L = (x1 - x) / a;
    R = (x2 - x) / a;
  } else if (a < 0) {
    L = (x2 - x) / a;
    R = (x1 - x) / a;
  } else {
    if (x > x1 && x < x2) {
      L = 0;
      R = 1e18;
    } else {
      L = 0, R = 0;
    }
  }
}
int judge(double t) {
  for (int i = 0; i < n; i++) {
    double nx = x[i] + a[i] * t;
    double ny = y[i] + b[i] * t;
    if (nx > X1 && nx < X2 && ny > Y1 && ny < Y2)
      continue;
    else
      return 0;
  }
  return 1;
}
int main() {
  scanf("%d", &n);
  scanf("%lf%lf%lf%lf", &X1, &Y1, &X2, &Y2);
  if (X1 > X2) swap(X1, X2);
  if (Y1 > Y2) swap(Y1, Y2);
  for (int i = 0; i < n; i++) scanf("%lf%lf%lf%lf", &x[i], &y[i], &a[i], &b[i]);
  double L1, R1, L2, R2, nL, nR, l = 0, r = 1e18;
  int flag = 1;
  for (int i = 0; i < n; i++) {
    f(x[i], a[i], X1, X2, L1, R1);
    f(y[i], b[i], Y1, Y2, L2, R2);
    nL = max(L1, L2);
    nR = min(R1, R2);
    l = max(l, nL);
    r = min(r, nR);
    if (l >= r || nL >= nR) flag = 0;
  }
  if (flag)
    printf("%.20f\n", l);
  else
    printf("-1\n");
  return 0;
}
