#include <bits/stdc++.h>
using namespace std;
struct line {
  long long x, y, dx, dy, s;
} a[25000];
struct line1 {
  long double x, y, dx, dy, s;
} d[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 = d[y.i].y + (x - d[y.i].x) * (d[y.i].dy / d[y.i].dx);
  long double y2 = d[z.i].y + (x - d[z.i].x) * (d[z.i].dy / d[z.i].dx);
  if (y1 == y2) return (y.i < z.i);
  return (y1 < y2);
}
long double compute(int i, long long xn, long long xd, long long yn,
                    long long yd) {
  long double x = xn;
  x = x / xd;
  x = (a[i].x - x) * (a[i].x - x);
  long double y = yn;
  y = y / yd;
  y = (a[i].y - y) * (a[i].y - y);
  long double ans = x + y;
  ans = sqrt(ans);
  ans = ans / a[i].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(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(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(i, xn, xd, yn, yd);
      t2 = compute(j, xn, xd, yn, yd);
    } else if (f1) {
      xn = a[j].x;
      xd = 1;
      yn = a[j].y;
      yd = 1;
      t1 = compute(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(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;
    d[i].x = a[i].x;
    d[i].y = a[i].y;
    d[i].dx = a[i].dx;
    d[i].dy = a[i].dy;
    d[i].s = a[i].s;
  }
  long double l = 0, h = 1e13, m;
  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;
      b[2 * i + 1].x =
          b[2 * i].x + ((d[i].dx * d[i].s * m) /
                        sqrt(d[i].dx * d[i].dx + d[i].dy * d[i].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;
}
