#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;
}
