#include <bits/stdc++.h>
using namespace std;
struct point {
  double x, y, z;
};
double vidst(point a, point b) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y) +
              (a.z - b.z) * (a.z - b.z));
}
bool men(double a, double b) {
  if (b - a > 1.0e-8)
    return true;
  else
    return false;
}
bool menr(double a, double b) {
  if (a - b < 1.0e-8)
    return true;
  else
    return false;
}
point s[10010], p;
double vp, vs, r[10010], d[10010];
int n;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n + 1; ++i) scanf("%lf%lf%lf", &s[i].x, &s[i].y, &s[i].z);
  scanf("%lf%lf", &vp, &vs);
  scanf("%lf%lf%lf", &p.x, &p.y, &p.z);
  r[0] = 0;
  for (int i = 1; i <= n; ++i) r[i] = vidst(s[i], s[i - 1]);
  d[0] = 0;
  for (int i = 1; i <= n; ++i) d[i] = d[i - 1] + r[i];
  double ts, tp;
  ts = d[n] / vs;
  tp = vidst(p, s[n]) / vp;
  if (men(ts, tp)) {
    printf("NO\n");
    return 0;
  }
  printf("YES\n");
  int fl = 1, i = n;
  while (fl && i > 0) {
    --i;
    ts = d[i] / vs;
    tp = vidst(p, s[i]) / vp;
    if (men(ts, tp)) fl = 0;
  }
  if (fl) {
    ts = 0;
    printf("%.8lf\n", ts);
    printf("%.8lf %.8lf %.8lf\n", s[0].x, s[0].y, s[0].z);
    return 0;
  }
  point v, ze;
  ze.x = ze.y = ze.z = 0;
  v.x = s[i + 1].x - s[i].x;
  v.y = s[i + 1].y - s[i].y;
  v.z = s[i + 1].z - s[i].z;
  double mo = vidst(v, ze);
  v.x /= mo;
  v.y /= mo;
  v.z /= mo;
  double t0 = d[i] / vs;
  double ka, kb, kc;
  ka = -(vs * vs - vp * vp);
  kb = -(2 * (vs * v.x * (s[i].x - p.x) + vs * v.y * (s[i].y - p.y) +
              vs * v.z * (s[i].z - p.z)) -
         2 * t0 * vp * vp);
  kc = -((s[i].x - p.x) * (s[i].x - p.x) + (s[i].y - p.y) * (s[i].y - p.y) +
         (s[i].z - p.z) * (s[i].z - p.z) - t0 * t0 * vp * vp);
  double t;
  if (fabs(ka) < 1.0e-8)
    t = -kc / kb;
  else
    t = (-kb + sqrt(kb * kb - 4 * ka * kc)) / (2 * ka);
  printf("%.8lf\n", t + d[i] / vs);
  printf("%.8lf %.8lf %.8lf\n", s[i].x + v.x * t * vs, s[i].y + v.y * t * vs,
         s[i].z + v.z * t * vs);
  return 0;
}
