func_code_string: #include <bits/stdc++.h>   const double PI = 3.1415926535897932384626433;   const int KL = 1e4 + 10;   const long long MOD = 1e9 + 7;   using namespace std;   int n;   struct point {     long double x, y, z;   };   long double dis(point a, point b) {     long double dx = a.x - b.x;     long double dy = a.y - b.y;     long double dz = a.z - b.z;     return sqrt(dx * dx + dy * dy + dz * dz);   }   point a[KL], p;   long double t[KL], vp, vs;   bool ok(long double mid) {     long double ttt = 0.0;     int pos;     for (int i = 1; i <= n; i++) {       ttt += t[i];       if (ttt >= mid) {         pos = i;         break;       }     }     long double dx = a[pos].x - a[pos - 1].x;     long double dy = a[pos].y - a[pos - 1].y;     long double dz = a[pos].z - a[pos - 1].z;     long double d = dis(a[pos], a[pos - 1]);     long double dc = (mid - (ttt - t[pos])) * vs;     long double sm = dc / d;     dx = dx * sm;     dy = dy * sm;     dz = dz * sm;     point c = {dx + a[pos - 1].x, dy + a[pos - 1].y, dz + a[pos - 1].z};     long double ds = dis(c, p);     return (ds / mid <= vp);   }   void prnt(long double nm) { cout << fixed << setprecision(10) << nm <<    ; }   int main() {     cin >> n;     for (int i = 0; i <= n; i++) {       cin >> a[i].x >> a[i].y >> a[i].z;     }     cin >> vp >> vs >> p.x >> p.y >> p.z;     long double tt = 0.0;     for (int i = 1; i <= n; i++) {       t[i] = dis(a[i - 1], a[i]) / vs;       tt += t[i];     }     if (!ok(tt))       cout <<  NO  << endl;     else {       long double lo = 0;       long double hi = tt;       for (int i = 0; i < 100; i++) {         long double mid = (lo + hi) / 2;         if (ok(mid))           hi = mid;         else           lo = mid;       }       cout <<  YES  << endl;       cout << fixed << setprecision(10) << lo << endl;       if (lo == 0) {         prnt(a[0].x);         prnt(a[0].y);         prnt(a[0].z);         cout << endl;         return 0;       }       long double ttt = 0.0;       int pos;       for (int i = 0; i <= n; i++) {         ttt += t[i];         if (ttt >= lo) {           pos = i;           break;         }       }       long double dx = a[pos].x - a[pos - 1].x;       long double dy = a[pos].y - a[pos - 1].y;       long double dz = a[pos].z - a[pos - 1].z;       long double d = dis(a[pos], a[pos - 1]);       long double dc = (lo - (ttt - t[pos])) * vs;       long double sm = dc / d;       dx = dx * sm;       dy = dy * sm;       dz = dz * sm;       point c = {dx + a[pos - 1].x, dy + a[pos - 1].y, dz + a[pos - 1].z};       prnt(c.x);       prnt(c.y);       prnt(c.z);       cout << endl;     }     return 0;   }   