#include <iostream>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;const double eps = 1e-10;inline double sqr(double x){return x*x;}struct point{ double x, y, z; void input(){ scanf("%lf%lf%lf", &x, &y, &z); }}p[50];struct vect{ double x, y, z, mod; void init(point p, point q){ x = q.x - p.x; y = q.y - p.y; z = q.z - p.z; mod = sqrt(sqr(x) + sqr(y) + sqr(z)); } double cal(){ return mod = sqrt(sqr(x) + sqr(y) + sqr(z)); }}vec[50], v[50];double scalar(vect a, vect b){ return a.x * b.x + a.y * b.y + a.z * b.z;}void function(double a, double b, double c, bool &mark, double &k){ double det = sqr(b) - 4 * a * c; if (det < eps && fabs(det) > eps){ mark = false; return; } else { mark = true; k = (-b + sqrt(det)) / (2.0 * a); return; }}void solve(int n){ double m, m1, mt, m0, v0, k, t = 0.0; int i; scanf("%lf%lf%lf%lf", &m, &m1, &m0, &v0); p[0].x = p[0].y = p[0].z = 0.0; for (i = 1; i <= n; ++i){ p[i].input(); vec[i-1].init(p[i-1], p[i]); } mt = m - m0; k = sqrt(sqr(m0) * sqr(v0) / (sqr(mt) * sqr(vec[0].mod))); v[0].x = k * vec[0].x; v[0].y = k * vec[0].y; v[0].z = k * vec[0].z; t += (vec[0].mod / v[0].cal()); for (i = 1; i < n; ++i){ double a, b, c, k1; a = sqr(mt - m0) * sqr(vec[i].mod); b = -2 * mt * (mt - m0) * scalar(vec[i], v[i-1]); c = -sqr(m0) * v0 * v0 + sqr(mt) * sqr(v[i-1].cal()); bool mark = false; function(a, b, c, mark, k1); if (mark){ if (k1 > 0) k = k1; v[i].x = k * vec[i].x; v[i].y = k * vec[i].y; v[i].z = k * vec[i].z; t += (vec[i].mod / v[i].cal()); } else { printf("Another kind of KKV.n"); return; } mt -= m0; } printf("%.2lfn", t);}int main(void){ int n; while (~scanf("%d", &n)){ solve(n); } return 0;}