#include <bits/stdc++.h>   using namespace std;   struct line {     long long x, y, dx, dy, s;   } a[25000];   struct point {     int i;     bool f;     long double x;   } b[50000], c[25000];   bool comp(point a, point b) {     if (a.x == b.x) {       if (a.f == b.f) return (a.i < b.i);       return (a.f < b.f);     }     return (a.x < b.x);   }   long double x;   bool operator<(point y, point z) {     long double y1, y2, dy, dx, ix, iy;     dy = a[y.i].dy;     dx = a[y.i].dx;     ix = a[y.i].x;     iy = a[y.i].y;     y1 = iy + (x - ix) * (dy / dx);     dy = a[z.i].dy;     dx = a[z.i].dx;     ix = a[z.i].x;     iy = a[z.i].y;     y2 = iy + (x - ix) * (dy / dx);     if (y1 == y2) return (y.i < z.i);     return (y1 < y2);   }   long double compute(line a, long long xn, long long xd, long long yn,                       long long yd) {     long double x = xn;     x = x / xd;     x = (a.x - x) * (a.x - x);     long double y = yn;     y = y / yd;     y = (a.y - y) * (a.y - y);     long double ans = x + y;     ans = sqrt(ans);     ans = ans / a.s;     return ans;   }   bool check(int i, int j, long double t) {     long long xn, xd, yn, yd;     long double t1 = -1, t2 = -1;     if (a[i].dx * a[j].dy != a[j].dx * a[i].dy) {       xn = a[i].dx * a[j].dy * a[j].x - a[j].dx * a[i].dy * a[i].x +            a[j].dx * a[i].dx * (a[i].y - a[j].y);       xd = a[i].dx * a[j].dy - a[j].dx * a[i].dy;       yn = a[i].dy * a[j].dy * (a[j].x - a[i].x) + a[j].dy * a[i].dx * a[i].y -            a[i].dy * a[j].dx * a[j].y;       yd = a[i].dx * a[j].dy - a[j].dx * a[i].dy;       if (xd < 0) {         xn *= -1;         xd *= -1;       }       if (yd < 0) {         yn *= -1;         yd *= -1;       }       if (((a[i].dx > 0 && (xn - xd * a[i].x) >= 0) ||            (a[i].dx < 0 && (xn - xd * a[i].x) <= 0)) &&           ((a[i].dy > 0 && (yn - yd * a[i].y) >= 0) ||            (a[i].dy < 0 && (yn - yd * a[i].y) <= 0)))         t1 = compute(a[i], xn, xd, yn, yd);       if (((a[j].dx > 0 && (xn - xd * a[j].x) >= 0) ||            (a[j].dx < 0 && (xn - xd * a[j].x) <= 0)) &&           ((a[j].dy > 0 && (yn - yd * a[j].y) >= 0) ||            (a[j].dy < 0 && (yn - yd * a[j].y) <= 0)))         t2 = compute(a[j], xn, xd, yn, yd);     } else if ((a[i].dx * (a[j].y - a[i].y)) == (a[i].dy * (a[j].x - a[i].x))) {       bool f1 = false;       xn = a[j].x;       xd = 1;       yn = a[j].y;       yd = 1;       if (((a[i].dx > 0 && (xn - xd * a[i].x) >= 0) ||            (a[i].dx < 0 && (xn - xd * a[i].x) <= 0)) &&           ((a[i].dy > 0 && (yn - yd * a[i].y) >= 0) ||            (a[i].dy < 0 && (yn - yd * a[i].y) <= 0)))         f1 = true;       bool f2 = false;       xn = a[i].x;       xd = 1;       yn = a[i].y;       yd = 1;       if (((a[j].dx > 0 && (xn - xd * a[j].x) >= 0) ||            (a[j].dx < 0 && (xn - xd * a[j].x) <= 0)) &&           ((a[j].dy > 0 && (yn - yd * a[j].y) >= 0) ||            (a[j].dy < 0 && (yn - yd * a[j].y) <= 0)))         f2 = true;       if (f1 && f2) {         xn = a[i].x * a[j].s + a[j].x * a[i].s;         xd = a[i].s + a[j].s;         yn = a[i].y * a[j].s + a[j].y * a[i].s;         yd = a[i].s + a[j].s;         t1 = compute(a[i], xn, xd, yn, yd);         t2 = compute(a[j], xn, xd, yn, yd);       } else if (f1) {         xn = a[j].x;         xd = 1;         yn = a[j].y;         yd = 1;         t1 = compute(a[i], xn, xd, yn, yd);         t2 = 0;       } else if (f2) {         xn = a[i].x;         xd = 1;         yn = a[i].y;         yd = 1;         t1 = 0;         t2 = compute(a[j], xn, xd, yn, yd);       }     }     if (t1 >= 0 && t2 >= 0 && max(t1, t2) <= t) return true;     return false;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     bool flag = false;     int n, i, j, z;     cin >> n;     for (i = 0; i < n; i++)       cin >> a[i].x >> a[i].y >> a[i].dx >> a[i].dy >> a[i].s;     long double l = 0, h = 1e13, m, dx, dy, s;     set<point> t;     set<point>::iterator it, it1, it2;     for (z = 0; z < 70; z++) {       m = (l + h) / 2;       for (i = 0; i < n; i++) {         b[2 * i].i = b[2 * i + 1].i = i;         b[2 * i].x = a[i].x;         dx = a[i].dx;         dy = a[i].dy;         s = a[i].s;         b[2 * i + 1].x = b[2 * i].x + ((dx * s * m) / sqrt(dx * dx + dy * dy));         if (b[2 * i].x < b[2 * i + 1].x) {           b[2 * i].f = 0;           b[2 * i + 1].f = 1;         } else {           b[2 * i].f = 1;           b[2 * i + 1].f = 0;         }       }       j = 2 * n;       sort(b, b + j, comp);       for (i = 0; i < j; i++) {         if (b[i].f) {           x = b[i].x;           it = t.lower_bound(c[b[i].i]);           it1 = it;           it1++;           if (it != t.begin() && it1 != t.end()) {             it2 = it;             it2--;             if (check(it1->i, it2->i, m)) break;           }           t.erase(it);         } else {           x = b[i].x;           t.insert(b[i]);           it = t.lower_bound(b[i]);           it1 = it;           it1++;           if (it1 != t.end() && check(it->i, it1->i, m)) break;           if (it != t.begin()) {             it1 = it;             it1--;             if (check(it->i, it1->i, m)) break;           }           c[b[i].i] = b[i];         }       }       if (i < j) {         flag = true;         h = m;       } else         l = m;       t.clear();     }     if (!flag)       cout <<  No show :( ;     else {       cout << fixed;       cout << setprecision(15);       cout << l;     }     return 0;   }