#include <bits/stdc++.h>
using namespace std;
const int N = 3e4 + 7;
const long double eps = 1e-10;
int sign(long double first) { return (first > eps) - (first < -eps); }
pair<long double, long double> operator+(pair<long double, long double> a,
                                         pair<long double, long double> b) {
  return pair<long double, long double>(a.first + b.first, a.second + b.second);
}
pair<long double, long double> operator-(pair<long double, long double> a,
                                         pair<long double, long double> b) {
  return pair<long double, long double>(a.first - b.first, a.second - b.second);
}
pair<long double, long double> operator*(pair<long double, long double> a,
                                         long double b) {
  return pair<long double, long double>(a.first * b, a.second * b);
}
long double operator*(pair<long double, long double> a,
                      pair<long double, long double> b) {
  return a.first * b.second - a.second * b.first;
}
long double len(pair<long double, long double> first) {
  return sqrt(((first.first) * (first.first)) +
              ((first.second) * (first.second)));
}
struct seg {
  pair<long double, long double> s, t;
  long double gety(long double first) const {
    if (fabs(t.first - s.first) < eps) return t.second;
    return s.second +
           (t.second - s.second) * (first - s.first) / (t.first - s.first);
  }
  friend bool operator<(const seg& a, const seg& b) {
    long double xp = max(a.s.first, b.s.first);
    long double ya = a.gety(xp), yb = b.gety(xp);
    if (fabs(ya - yb) < eps) {
      if (fabs(a.s.first - b.s.first) < eps) return a.t.first < b.t.first - eps;
      return a.s.first < b.s.first - eps;
    }
    return ya < yb;
  }
} Seg[N];
int n, kase, i, j;
long double l, r, mid, ans, speed[N];
pair<long double, long double> p[N], dir[N];
set<seg> Set;
bool pd(pair<long double, long double> a, seg b) {
  return sign(a.first - b.s.first) >= 0 && sign(a.first - b.t.first) <= 0 &&
         sign((b.s - a) * (b.t - a)) == 0;
}
bool inter(seg a, seg b) {
  pair<long double, long double> p1 = a.s, p2 = a.t, p3 = b.s, p4 = b.t;
  if (pd(p1, b) || pd(p2, b) || pd(p3, a) || pd(p4, a)) return 1;
  return sign((p2 - p1) * (p3 - p1)) * sign((p2 - p1) * (p4 - p1)) < 0 &&
         sign((p4 - p3) * (p1 - p3)) * sign((p4 - p3) * (p2 - p3)) < 0;
}
bool pre(set<seg>::iterator i, set<seg>::iterator& res) {
  if (i == Set.begin()) return 0;
  res = --i;
  return 1;
}
bool nex(set<seg>::iterator i, set<seg>::iterator& res) {
  res = ++i;
  if (res == Set.end()) return 0;
  return 1;
}
bool check(long double first) {
  vector<pair<pair<long double, long double>, int>> vec;
  for (i = 1; i <= n; ++i) {
    Seg[i].s = p[i];
    Seg[i].t = p[i] + dir[i] * speed[i] * (first / len(dir[i]));
    if (Seg[i].t < Seg[i].s) swap(Seg[i].s, Seg[i].t);
    vec.push_back({Seg[i].s, i});
    vec.push_back({Seg[i].t, -i});
  }
  sort(vec.begin(), vec.end());
  Set.clear();
  for (int i = 0; i < vec.size(); ++i) {
    int id = vec[i].second;
    if (id > 0) {
      Set.insert(Seg[id]);
      set<seg>::iterator i = Set.lower_bound(Seg[id]), res;
      if (pre(i, res)) {
        if (inter(Seg[id], (*res))) return 1;
      }
      if (nex(i, res)) {
        if (inter(Seg[id], (*res))) return 1;
      }
    } else {
      id = -id;
      set<seg>::iterator i = Set.lower_bound(Seg[id]), l, r;
      if (pre(i, l) && nex(i, r)) {
        if (inter(*l, *r)) return 1;
      }
      Set.erase(i);
    }
  }
  return 0;
}
int main() {
  cout << setprecision(10) << fixed;
  for (cin >> n, i = 1; i <= n; ++i)
    cin >> p[i].first >> p[i].second >> dir[i].first >> dir[i].second >>
        speed[i];
  for (l = 0, r = 1e12, ans = -1, kase = 1; kase <= 80; ++kase) {
    mid = (l + r) / 2;
    if (check(mid))
      r = ans = mid;
    else
      l = mid;
  }
  if (ans == -1)
    puts("No show :(");
  else
    cout << ans << endl;
}
