#include <bits/stdc++.h>
const double dinf = std::numeric_limits<double>::max();
struct pairhash {
  template <typename T, typename U>
  std::size_t operator()(const std::pair<T, U>& x) const {
    return std::hash<T>()(x.first) ^ std::hash<U>()(x.second);
  }
};
long long compute_gcd(long long a, long long b) {
  if (b == 0) return a;
  return compute_gcd(b, a % b);
}
unsigned long long compute_lcm(unsigned long long a, unsigned long long b) {
  unsigned long long gcd = compute_gcd(a, b);
  return a / gcd * b;
}
int mod_mul(int a, int b, int mod) { return ((long long)a * b) % mod; }
int mod_add(int a, int b, int mod) { return ((long long)a + b) % mod; }
long long choose(int n, int k) {
  if (k == 0 || n == 0) return 1;
  long long result = n * choose(n - 1, k - 1) / k;
  return result;
}
using namespace std;
pair<double, double> segment(int x, int vx, int x1, int x2) {
  if (x1 > x2) swap(x1, x2);
  if (vx == 0) {
    if (x > x1 && x < x2) return make_pair(0, dinf);
    return make_pair(dinf, dinf);
  }
  double enter = 0;
  if (x > x1 && x < x2) {
    enter = 0;
  } else if (x == x1 && vx < 0) {
    return make_pair(dinf, dinf);
  } else if (x == x2 && vx > 0) {
    return make_pair(dinf, dinf);
  } else {
    enter = min((double)(x1 - x) / vx, (double)(x2 - x) / vx);
    if (enter < 0) return make_pair(dinf, dinf);
  }
  double leave = max((double)(x1 - x) / vx, (double)(x2 - x) / vx);
  return make_pair(enter, leave);
}
double solve(int n) {
  int x1, y1, x2, y2;
  cin >> x1 >> y1 >> x2 >> y2;
  double answerMin = 0;
  double answerMax = dinf;
  for (int i = 0; i < n; ++i) {
    int x, y, vx, vy;
    cin >> x >> y >> vx >> vy;
    auto xs = segment(x, vx, x1, x2);
    auto ys = segment(y, vy, y1, y2);
    if (ys.first > xs.second || xs.first > ys.second) {
      return dinf;
    }
    if (xs.first == dinf || ys.first == dinf) {
      return dinf;
    }
    answerMin = max(answerMin, max(xs.first, ys.first));
    answerMax = min(answerMax, min(xs.second, ys.second));
    if (answerMin > answerMax || abs(answerMax - answerMin) < 1e-12)
      return dinf;
  }
  return answerMin;
}
int main() {
  int n;
  cin >> n;
  cout << setprecision(20);
  double result = solve(n);
  if (result == dinf)
    cout << "-1";
  else
    cout << result;
  return 0;
}
