#include <bits/stdc++.h>   using namespace std;   using namespace std::chrono;   using ll = long long;   using ld = long double;   using pt = complex<ld>;   constexpr ld EPS = 1e-9;   ld cross(pt a, pt b) { return imag(conj(a) * b); }   ld cross(pt p, pt a, pt b) { return cross(a - p, b - p); }   int orientation(pt a, pt b, pt c) {     ld orien = cross(b - a, c - a);     return (orien > EPS) - (orien < -EPS);   }   bool lineSegmentIntersection(pt a, pt b, pt c, pt d) {     if (orientation(a, b, c) == 0 && orientation(a, b, d) == 0) {       ld dist = abs(a - b);       return (abs(a - c) <= dist && abs(b - c) <= dist) ||              (abs(a - d) <= dist && abs(b - d) <= dist);     }     return orientation(a, b, c) * orientation(a, b, d) <= 0 &&            orientation(c, d, a) * orientation(c, d, b) <= 0;   }   struct seg {     pt a, b;     ll id;     bool operator<(const seg& o) const {       if (real(a) < real(o.a)) {         ld s = cross(a, b, o.a);         return (s > EPS || (abs(s) <= EPS && imag(a) < imag(o.a)));       } else if (real(a) > real(o.a)) {         ld s = cross(o.a, o.b, a);         return (s < EPS || (abs(s) <= EPS && imag(a) < imag(o.a)));       }       return imag(a) < imag(o.a);     }   };   struct event {     pt p;     ll id, type;     bool operator<(const event& o) const {       if (real(p) != real(o.p)) return real(p) < real(o.p);       if (type != o.type) return type > o.type;       return imag(p) < imag(o.p);     }   };   bool lessPs(const pt& a, const pt& b) {     if (real(a) != real(b)) return real(a) < real(b);     return imag(a) < imag(b);   }   bool intersect(const seg& a, const seg& b) {     return lineSegmentIntersection(a.a, a.b, b.a, b.b);   }   pair<int, int> intersect(const vector<seg>& s) {     ll n = (ll)(s).size();     vector<event> e;     e.reserve(2 * n);     for (ll i = 0; i < n; i++) {       e.push_back({s[i].a, i, 1});       e.push_back({s[i].b, i, -1});     }     sort(begin(e), end(e));     set<seg> q;     for (ll i = 0; i < n * 2; i++) {       ll id = e[i].id;       if (e[i].type == 1) {         auto it = q.lower_bound(s[id]);         if (it != q.end() && intersect(*it, s[id])) return {it->id, s[id].id};         if (it != q.begin() && intersect(*prev(it), s[id]))           return {it->id, s[id].id};         q.insert(s[id]);       } else {         auto it = q.lower_bound(s[id]), next = it, prev = it;         if (it != q.begin() && it != --q.end()) {           ++next, --prev;           if (intersect(*next, *prev)) return {next->id, prev->id};         }         q.erase(it);       }     }     return {-1, -1};   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     ll n;     cin >> n;     vector<pt> p(n), d(n);     for (ll i = 0; i < n; i++) {       ll x, y, dx, dy, s;       cin >> x >> y >> dx >> dy >> s;       p[i] = {(ld)x, (ld)y};       d[i] = {(ld)dx, (ld)dy};       d[i] /= abs(d[i]);       d[i] *= s;     }     ld l = 0;     ld r = 1e10 + 10;     vector<seg> segs(n);     for (ll i = 0; i < 100; i++) {       ld mid = (l + r) / 2;       for (ll j = 0; j < n; j++) {         segs[j] = {p[j], p[j] + mid * d[j], j};         if (lessPs(segs[j].b, segs[j].a)) swap(segs[j].b, segs[j].a);       }       if (intersect(segs).first >= 0) {         r = mid;       } else {         l = mid;       }     }     if (r > 1e10) {       cout <<  No show :(  << endl;     } else {       cout << fixed << setprecision(10) << l << endl;     }   }