#include <bits/stdc++.h>
struct point {
  double x, y, z;
  point() {}
  point(double _x, double _y, double _z) : x(_x), y(_y), z(_z) {}
};
const double eps = 1e-8;
double vlen(point p) { return sqrt(p.x * p.x + p.y * p.y + p.z * p.z); }
point xmult(point u, point v) {
  point ret;
  ret.x = u.y * v.z - v.y * u.z;
  ret.y = u.z * v.x - u.x * v.z;
  ret.z = u.x * v.y - u.y * v.x;
  return ret;
}
point subt(point u, point v) {
  point ret;
  ret.x = u.x - v.x;
  ret.y = u.y - v.y;
  ret.z = u.z - v.z;
  return ret;
}
int dot_online_in(point p, point l1, point l2) {
  return (((vlen(xmult(subt(p, l1), subt(p, l2)))) > 0
               ? (vlen(xmult(subt(p, l1), subt(p, l2))))
               : -(vlen(xmult(subt(p, l1), subt(p, l2))))) < eps) &&
         (l1.x - p.x) * (l2.x - p.x) < eps &&
         (l1.y - p.y) * (l2.y - p.y) < eps && (l1.z - p.z) * (l2.z - p.z) < eps;
}
double x[10001], y[10001], z[10001], d[10001];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i <= n; i++) scanf("%lf %lf %lf", &x[i], &y[i], &z[i]);
  double vp, vs, px, py, pz;
  scanf("%lf %lf", &vp, &vs);
  scanf("%lf %lf %lf", &px, &py, &pz);
  double lo = 0, hi = 0;
  for (int i = 1; i <= n; i++) {
    d[i] = sqrt((x[i] - x[i - 1]) * (x[i] - x[i - 1]) +
                (y[i] - y[i - 1]) * (y[i] - y[i - 1]) +
                (z[i] - z[i - 1]) * (z[i] - z[i - 1]));
    hi += d[i] / vs;
  }
  if (hi * vp < sqrt((x[n] - px) * (x[n] - px) + (y[n] - py) * (y[n] - py) +
                     (z[n] - pz) * (z[n] - pz)))
    printf("NO\n");
  else {
    double X = -1, Y = -1, Z = -1;
    while ((hi - lo) >= 1e-10) {
      double mid = (lo + hi) / 2;
      double s = mid * vs;
      for (int i = 1; i <= n; i++)
        if (s > d[i])
          s -= d[i];
        else {
          double t = s / d[i];
          X = x[i - 1] + (x[i] - x[i - 1]) * t;
          Y = y[i - 1] + (y[i] - y[i - 1]) * t;
          Z = z[i - 1] + (z[i] - z[i - 1]) * t;
          if (!dot_online_in(point(X, Y, Z),
                             point(x[i - 1], y[i - 1], z[i - 1]),
                             point(x[i], y[i], z[i]))) {
            X = x[i - 1] - (x[i] - x[i - 1]) * t;
            Y = y[i - 1] - (y[i] - y[i - 1]) * t;
            Z = z[i - 1] - (z[i] - z[i - 1]) * t;
          }
          break;
        }
      if (mid * vp >=
          sqrt((X - px) * (X - px) + (Y - py) * (Y - py) + (Z - pz) * (Z - pz)))
        hi = mid;
      else
        lo = mid;
    }
    printf("YES\n");
    printf("%.10lf\n", lo);
    printf("%.10lf %.10lf %.10lf\n", X, Y, Z);
  }
  return 0;
}
