#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) { return !b ? a : gcd(b, a % b); }
class fraction {
 public:
  int a, b;
  fraction() { a = 0, b = 1; }
  fraction(int a, int b) {
    if (b < 0) {
      a *= -1;
      b *= -1;
    }
    if (a == 0) b = 1;
    int g = gcd(abs(a), abs(b));
    a /= g;
    b /= g;
    this->a = a;
    this->b = b;
  }
  bool operator==(fraction oth) const { return a == oth.a and b == oth.b; }
  bool operator!=(fraction oth) const { return !(*this == oth); }
  bool operator<(fraction oth) const {
    if (a < 0 and oth.a >= 0) return true;
    if (oth.a < 0 and a >= 0) return false;
    return (long long)a * oth.b < (long long)b * oth.a;
  }
  bool operator>(fraction oth) const {
    return !(*this < oth) and (*this != oth);
  }
  bool operator<=(fraction oth) const { return !(*this > oth); }
  bool operator>=(fraction oth) const { return !(*this < oth); }
};
int main() {
  int n;
  scanf("%d", &n);
  int x1, y1, x2, y2;
  scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
  fraction x(0, 1);
  fraction y(1e9, 1);
  for (int i = 1; i <= n; i++) {
    int rx, ry, vx, vy;
    scanf("%d %d %d %d", &rx, &ry, &vx, &vy);
    if ((rx == x1 or rx == x2) and vx == 0) {
      puts("-1");
      return 0;
    }
    if ((ry == y1 or ry == y2) and vy == 0) {
      puts("-1");
      return 0;
    }
    fraction tox1(x1 - rx, vx);
    fraction toy1(y1 - ry, vy);
    fraction tox2(x2 - rx, vx);
    fraction toy2(y2 - ry, vy);
    if (tox2 < tox1) swap(tox1, tox2);
    if (toy2 < toy1) swap(toy1, toy2);
    x = max(x, tox1);
    x = max(x, toy1);
    y = min(y, tox2);
    y = min(y, toy2);
  }
  if (x >= y) {
    puts("-1");
  } else {
    double l = (double)x.a / x.b;
    printf("%.9lf\n", l);
  }
  return 0;
}
