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