func_code_string: #include <bits/stdc++.h>   const double eps = 1e-15;   const int N = 10000 + 10;   struct node {     double x, y, z;     node() {}     node(double _x, double _y, double _z) {       x = _x;       y = _y;       z = _z;     }   };   node a[N], st;   int n;   double Time[N], len[N], v1, v2;   double sqr(double x) { return x * x; }   bool eq(double x, double y) { return fabs(x - y) <= eps; }   double D(node i, node j) {     return sqrt(sqr(i.x - j.x) + sqr(i.y - j.y) + sqr(i.z - j.z));   }   int main() {     scanf( %d , &n);     for (int i = 0; i <= n; ++i) scanf( %lf%lf%lf , &a[i].x, &a[i].y, &a[i].z);     scanf( %lf%lf , &v1, &v2);     scanf( %lf%lf%lf , &st.x, &st.y, &st.z);     if (eq(st.x, a[0].x) && eq(st.y, a[0].y) && eq(st.z, a[0].z)) {       puts( YES );       puts( 0 );       printf( %.10f %.10f %.10f n , a[0].x, a[0].y, a[0].z);     } else {       Time[0] = 0;       for (int i = 1; i <= n; ++i) {         len[i] = D(a[i - 1], a[i]);         Time[i] = Time[i - 1] + len[i] / v2 + eps;       }       int idx = -1;       for (int i = 1; i <= n; ++i)         if (D(st, a[i]) <= Time[i] * v1 + eps) {           idx = i;           break;         }       if (idx == -1)         puts( NO );       else {         puts( YES );         double L = len[idx] / v2;         double dx = a[idx - 1].x - a[idx].x, dy = a[idx - 1].y - a[idx].y,                dz = a[idx - 1].z - a[idx].z;         double l = 0, r = len[idx] / v2, mid;         for (int i = 0; i < 100; ++i) {           mid = (l + r) / 2;           if (D(node(a[idx].x + dx * mid / L + eps, a[idx].y + dy * mid / L + eps,                      a[idx].z + dz * mid / L + eps),                 st) <= v1 * (Time[idx] - mid) + eps)             l = mid;           else             r = mid;         }         printf( %.10f n , Time[idx] - l);         printf( %.10f %.10f %.10f n , a[idx].x + dx * l / L + eps,                a[idx].y + dy * l / L + eps, a[idx].z + dz * l / L + eps);       }     }     return 0;   }   