#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long LINF = 0x3f3f3f3f3f3f3f3fll;
const long double DINF = 1e18;
const long double pi = acos(-1.0);
const long double eps = 1e-9;
bool eq(long double a, long double b) { return abs(a - b) <= eps; }
struct pt {
  long double x, y;
  pt() {}
  pt(long double x_, long double y_) : x(x_), y(y_) {}
  bool operator<(const pt p) const {
    if (!eq(x, p.x)) return x < p.x;
    if (!eq(y, p.y)) return y < p.y;
    return 0;
  }
  bool operator==(const pt p) const { return eq(x, p.x) and eq(y, p.y); }
  pt operator+(const pt p) const { return pt(x + p.x, y + p.y); }
  pt operator-(const pt p) const { return pt(x - p.x, y - p.y); }
  pt operator*(const long double c) const { return pt(x * c, y * c); }
  pt operator/(const long double c) const { return pt(x / c, y / c); }
  long double operator*(const pt p) const { return x * p.x + y * p.y; }
  long double operator^(const pt p) const { return x * p.y - y * p.x; }
  friend istream& operator>>(istream& in, pt& p) { return in >> p.x >> p.y; }
};
struct line {
  pt p, q;
  line() {}
  line(pt p_, pt q_) : p(p_), q(q_) {}
  friend istream& operator>>(istream& in, line& r) { return in >> r.p >> r.q; }
};
long double dist(pt p, pt q) { return hypot(p.y - q.y, p.x - q.x); }
long double dist2(pt p, pt q) {
  return ((p.x - q.x) * (p.x - q.x)) + ((p.y - q.y) * (p.y - q.y));
}
long double norm(pt v) { return dist(pt(0, 0), v); }
long double angle(pt v) {
  long double ang = atan2(v.y, v.x);
  if (ang < 0) ang += 2 * pi;
  return ang;
}
long double sarea(pt p, pt q, pt r) { return ((q - p) ^ (r - q)) / 2; }
bool col(pt p, pt q, pt r) { return eq(sarea(p, q, r), 0); }
int paral(pt u, pt v) {
  if (!eq(u ^ v, 0)) return 0;
  if ((u.x > eps) == (v.x > eps) and (u.y > eps) == (v.y > eps)) return 1;
  return -1;
}
bool ccw(pt p, pt q, pt r) { return sarea(p, q, r) > eps; }
pt rotate(pt p, long double th) {
  return pt(p.x * cos(th) - p.y * sin(th), p.x * sin(th) + p.y * cos(th));
}
pt rotate90(pt p) { return pt(-p.y, p.x); }
bool isvert(line r) { return eq(r.p.x, r.q.x); }
long double getm(line r) {
  if (isvert(r)) return DINF;
  return (r.p.y - r.q.y) / (r.p.x - r.q.x);
}
long double getn(line r) {
  if (isvert(r)) return DINF;
  return r.p.y - getm(r) * r.p.x;
}
bool paraline(line r, line second) {
  return paral(r.p - r.q, second.p - second.q);
}
bool isinseg(pt p, line r) {
  if (p == r.p or p == r.q) return 1;
  return paral(p - r.p, p - r.q) == -1;
}
long double get_t(pt v, line r) { return (r.p ^ r.q) / ((r.p - r.q) ^ v); }
pt proj(pt p, line r) {
  if (r.p == r.q) return r.p;
  r.q = r.q - r.p;
  p = p - r.p;
  pt proj = r.q * ((p * r.q) / (r.q * r.q));
  return proj + r.p;
}
pt inter(line r, line second) {
  if (paraline(r, second)) return pt(DINF, DINF);
  if (isvert(r)) return pt(r.p.x, getm(second) * r.p.x + getn(second));
  if (isvert(second)) return pt(second.p.x, getm(r) * second.p.x + getn(r));
  long double x = (getn(second) - getn(r)) / (getm(r) - getm(second));
  return pt(x, getm(r) * x + getn(r));
}
bool interseg(line r, line second) {
  if (isinseg(r.p, second) or isinseg(r.q, second) or isinseg(second.p, r) or
      isinseg(second.q, r))
    return 1;
  return ccw(r.p, r.q, second.p) != ccw(r.p, r.q, second.q) and
         ccw(second.p, second.q, r.p) != ccw(second.p, second.q, r.q);
}
long double disttoline(pt p, line r) { return dist(p, proj(p, r)); }
long double disttoseg(pt p, line r) {
  if (isinseg(proj(p, r), r)) return disttoline(p, r);
  return min(dist(p, r.p), dist(p, r.q));
}
long double distseg(line a, line b) {
  if (interseg(a, b)) return 0;
  long double ret = DINF;
  ret = min(ret, disttoseg(a.p, b));
  ret = min(ret, disttoseg(a.q, b));
  ret = min(ret, disttoseg(b.p, a));
  ret = min(ret, disttoseg(b.q, a));
  return ret;
}
bool operator<(const line& a, const line& b) {
  if (a.p == b.p) return ccw(a.p, a.q, b.q);
  if (!eq(a.p.x, a.q.x) and (eq(b.p.x, b.q.x) or a.p.x + eps < b.p.x))
    return ccw(a.p, a.q, b.p);
  return ccw(a.p, b.q, b.p);
}
bool has_intersection(vector<line> v) {
  auto intersects = [&](pair<line, int> a, pair<line, int> b) {
    return interseg(a.first, b.first);
  };
  vector<pair<pt, pair<int, int>>> w;
  for (int i = 0; i < v.size(); i++) {
    if (v[i].q < v[i].p) swap(v[i].p, v[i].q);
    w.push_back({v[i].p, {0, i}});
    w.push_back({v[i].q, {1, i}});
  }
  sort(w.begin(), w.end());
  set<pair<line, int>> se;
  for (auto i : w) {
    line at = v[i.second.second];
    if (i.second.first == 0) {
      auto nxt = se.lower_bound({at, i.second.second});
      if (nxt != se.end() and intersects(*nxt, {at, i.second.second})) return 1;
      if (nxt != se.begin() and intersects(*(--nxt), {at, i.second.second}))
        return 1;
      se.insert({at, i.second.second});
    } else {
      auto nxt = se.upper_bound({at, i.second.second}), cur = nxt, prev = --cur;
      if (nxt != se.end() and prev != se.begin() and
          intersects(*nxt, *(--prev)))
        return 1;
      se.erase(cur);
    }
  }
  return 0;
}
int n;
vector<pair<pt, pt>> pts;
vector<int> S;
long double com = 0.218750000;
bool has = false;
bool show(long double m) {
  bool ret = false;
  vector<line> v;
  for (int i = 0; i < n; i++) {
    pt p = pts[i].first;
    pt q = pts[i].second;
    long double mul = m * S[i] / norm(q);
    q = q * mul;
    q = q + p;
    v.push_back(line(p, q));
  }
  ret = has_intersection(v);
  has |= ret;
  return ret;
}
long double bb(long double l, long double r) {
  if (eq(l, r)) return l;
  long double m = (l + r) / 2.0;
  if (show(m))
    r = m;
  else
    l = m;
  return bb(l, r);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    pt a, b;
    cin >> a >> b;
    int second;
    cin >> second;
    S.push_back(second);
    pts.push_back({a, b});
  }
  cout << setprecision(9) << fixed;
  long double ans = bb((long double)0, (long double)1e13);
  if (!has)
    cout << "No show :(" << '\n';
  else
    cout << ans << '\n';
  exit(0);
}
