#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e4 + 10;
int n;
double vs, vp, xx, yy, zz, ax, ay, az;
double a[MAXN][4], b[MAXN];
bool Check(double x) {
  double d, dd, dx, dy, dz;
  int k;
  d = x * vs;
  for (int i = 1; i <= n; i++)
    if (d < b[i]) {
      k = i;
      break;
    }
  d = d - b[k - 1];
  dx = a[k + 1][1] - a[k][1];
  dy = a[k + 1][2] - a[k][2];
  dz = a[k + 1][3] - a[k][3];
  dd = sqrt(dx * dx + dy * dy + dz * dz);
  double nx, ny, nz;
  nx = a[k][1] + dx * d / dd;
  ny = a[k][2] + dy * d / dd;
  nz = a[k][3] + dz * d / dd;
  double tt, dtx, dty, dtz, dtd;
  dtx = xx - nx;
  dty = yy - ny;
  dtz = zz - nz;
  dtd = sqrt(dtx * dtx + dty * dty + dtz * dtz);
  tt = dtd / vp;
  ax = nx, ay = ny, az = nz;
  if (tt > x)
    return 1;
  else
    return 0;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n + 1; i++) {
    scanf("%lf%lf%lf", &a[i][1], &a[i][2], &a[i][3]);
    if (i >= 2) {
      double x = a[i][1] - a[i - 1][1];
      double y = a[i][2] - a[i - 1][2];
      double z = a[i][3] - a[i - 1][3];
      b[i - 1] = b[i - 2] + sqrt(x * x + y * y + z * z);
    }
  }
  scanf("%lf%lf", &vp, &vs);
  scanf("%lf%lf%lf", &xx, &yy, &zz);
  double l, r, fx, fy, fz, ft;
  l = 0;
  r = b[n] / vs;
  fx = xx - a[n + 1][1];
  fy = yy - a[n + 1][2];
  fz = zz - a[n + 1][3];
  ft = sqrt(fx * fx + fy * fy + fz * fz) / vp;
  if (r < ft)
    printf("NO");
  else {
    while (l < r - 0.0000000001) {
      double mid = (l + r) / 2;
      if (Check(mid))
        l = mid + 0.0000000001;
      else
        r = mid;
    }
    printf("YES\n");
    printf("%.10lf\n", r);
    printf("%.10lf %.10lf %.10lf", ax, ay, az);
  }
}
