#include <bits/stdc++.h>
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
using Point = complex<long double>;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  srand(time(0));
  int n;
  cin >> n;
  vector<Point> p(n), q(n), d(n);
  vector<Point> a(n), b(n);
  vector<long double> v(n);
  for (int i = 0; i < n; ++i) {
    auto read = [&]() {
      long double x, y;
      cin >> x >> y;
      return Point{x, y};
    };
    p[i] = read();
    d[i] = read();
    cin >> v[i];
  }
  Point rot = polar(
      1.0L, ((long double)rand() * RAND_MAX + rand()) * RAND_MAX + rand());
  auto look = [&](long double mid) {
    for (int i = 0; i < n; ++i) {
      q[i] = p[i] + d[i] / abs(d[i]) * mid * v[i];
    }
    vector<pair<long double, int>> evs;
    for (int i = 0; i < n; ++i) {
      a[i] = p[i] * rot;
      b[i] = q[i] * rot;
      if (a[i].real() > b[i].real()) swap(a[i], b[i]);
      evs.emplace_back(a[i].real(), i);
      evs.emplace_back(b[i].real(), ~i);
    }
    sort(evs.begin(), evs.end());
    long double at;
    auto sgn = [&](long double d) {
      if (abs(d) < 1e-7L) return 0;
      return d < 0 ? -1 : 1;
    };
    auto eval = [&](int i) {
      long double lam = (at - a[i].real()) / (b[i].real() - a[i].real());
      return a[i].imag() + lam * (b[i].imag() - a[i].imag());
    };
    auto cmp = [&](int i, int j) { return eval(i) + 1e-7L < eval(j); };
    set<int, decltype(cmp)> s(cmp);
    auto dot = [&](Point a, Point b) { return (conj(a) * b).real(); };
    auto cross = [&](Point a, Point b) { return (conj(a) * b).imag(); };
    auto check = [&](int i, int j) {
      Point s1 = a[i], e1 = b[i];
      Point s2 = a[j], e2 = b[j];
      Point v1 = e1 - s1, v2 = e2 - s2, d = s2 - s1;
      auto a = cross(v1, v2), a1 = cross(v1, d), a2 = cross(v2, d);
      if (sgn(a) == 0) {
        auto b1 = dot(s1, v1), c1 = dot(e1, v1), b2 = dot(s2, v1),
             c2 = dot(e2, v1);
        if (sgn(a1) || sgn(a2) ||
            sgn(max(b1, min(b2, c2)) - min(c1, max(b2, c2))) > 0)
          return false;
        return true;
      }
      if (a < 0) {
        a = -a;
        a1 = -a1;
        a2 = -a2;
      }
      if (sgn(0 - a1) < 0 || sgn(a - (-a1)) < 0 || sgn(0 - a2) < 0 ||
          sgn(a - (-a2)) < 0)
        return false;
      return true;
    };
    bool ok = false;
    for (auto p : evs) {
      at = p.first;
      if (p.second >= 0) {
        auto pp = s.insert(p.second);
        if (!pp.second) {
          ok = true;
          break;
        }
        auto it = pp.first;
        if (it != s.begin()) {
          ok |= check(*prev(it), *it);
          if (ok) break;
        }
        if (next(it) != s.end()) {
          ok |= check(*it, *next(it));
          if (ok) break;
        }
      } else {
        auto it = s.find(~p.second);
        if (it == s.end() || (*it) != (~p.second)) {
          ok = true;
          break;
        }
        if (it != s.begin() && next(it) != s.end()) {
          ok |= check(*prev(it), *next(it));
          if (ok) break;
        }
        s.erase(it);
      }
      if (ok) break;
    }
    return ok;
  };
  long double lo = 0, hi = 1;
  while (!look(hi)) {
    hi *= 2;
    if (hi > 1e12) {
      cout << "No show :(" << endl;
      return 0;
    }
  }
  for (int it = 0; it < 40; ++it) {
    long double mid = (lo + hi) / 2;
    if (look(mid)) {
      hi = mid;
    } else
      lo = mid;
  }
  long double ans = (lo + hi) / 2;
  cout << fixed << setprecision(20) << ans << endl;
  return 0;
}
