#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;   }   