#include <bits/stdc++.h>   using namespace std;   double mas[10000][3];   void optim(int cnt, double Px, double Py, double Pz, double vs, double vp) {     double l = 0, r = 0;     double x1 = mas[cnt][0];     double y1 = mas[cnt][1];     double z1 = mas[cnt][2];     double x2 = mas[cnt + 1][0];     double y2 = mas[cnt + 1][1];     double z2 = mas[cnt + 1][2];     for (int i = 0; i < cnt; i++) {       l += sqrt((mas[i][0] - mas[i + 1][0]) * (mas[i][0] - mas[i + 1][0]) +                 (mas[i][1] - mas[i + 1][1]) * (mas[i][1] - mas[i + 1][1]) +                 (mas[i][2] - mas[i + 1][2]) * (mas[i][2] - mas[i + 1][2]));       r += sqrt((mas[i][0] - mas[i + 1][0]) * (mas[i][0] - mas[i + 1][0]) +                 (mas[i][1] - mas[i + 1][1]) * (mas[i][1] - mas[i + 1][1]) +                 (mas[i][2] - mas[i + 1][2]) * (mas[i][2] - mas[i + 1][2]));     }     int j = cnt;     r += sqrt((mas[j][0] - mas[j + 1][0]) * (mas[j][0] - mas[j + 1][0]) +               (mas[j][1] - mas[j + 1][1]) * (mas[j][1] - mas[j + 1][1]) +               (mas[j][2] - mas[j + 1][2]) * (mas[j][2] - mas[j + 1][2]));     l /= vs;     r /= vs;     while (r - l > 1E-12) {       double m = (r + l) / 2;       double xx = (x1 + x2) / 2, yy = (y1 + y2) / 2, zz = (z1 + z2) / 2;       double dist2 = sqrt((xx - Px) * (xx - Px) + (yy - Py) * (yy - Py) +                           (zz - Pz) * (zz - Pz));       double t2 = dist2 / vp;       if (t2 - m > 1E-10) {         l = m;         x1 = xx;         y1 = yy;         z1 = zz;       } else if (t2 - m < -1E-10) {         r = m;         x2 = xx;         y2 = yy;         z2 = zz;       } else {         l = m;         x1 = xx;         y1 = yy;         z1 = zz;         break;       }     }     printf( %.6lf n , l);     printf( %.6lf %.6lf %.6lf n , x1, y1, z1);   }   int main() {     int n;     cin >> n;     double vs, vp;     for (int i = 0; i <= n; i++) cin >> mas[i][0] >> mas[i][1] >> mas[i][2];     cin >> vp >> vs;     double Px, Py, Pz;     cin >> Px >> Py >> Pz;     bool f = false;     int cnt = 0;     double dist = 0;     if (fabs(Px - mas[0][0]) < 1E-7 && fabs(Py - mas[0][1]) < 1E-7 &&         fabs(Pz - mas[0][2]) < 1E-7) {       cout <<  YES  << endl;       printf( %.6lf n , 0.0);       printf( %.6lf %.6lf %.6lf n , Px, Py, Pz);       return 0;     }     for (int i = 0; i < n; i++) {       dist += sqrt((mas[i][0] - mas[i + 1][0]) * (mas[i][0] - mas[i + 1][0]) +                    (mas[i][1] - mas[i + 1][1]) * (mas[i][1] - mas[i + 1][1]) +                    (mas[i][2] - mas[i + 1][2]) * (mas[i][2] - mas[i + 1][2]));       double dist2 = sqrt((mas[i + 1][0] - Px) * (mas[i + 1][0] - Px) +                           (mas[i + 1][1] - Py) * (mas[i + 1][1] - Py) +                           (mas[i + 1][2] - Pz) * (mas[i + 1][2] - Pz));       double t1 = dist / vs;       double t2 = dist2 / vp;       if (t1 - t2 > -1E-14) {         cnt = i;         f = true;         break;       }     }     if (!f) {       cout <<  NO ;       return 0;     } else       cout <<  YES  << endl;     optim(cnt, Px, Py, Pz, vs, vp);     return 0;   }   