#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-7;
struct point {
  double x, y, z;
  point() { x = y = z = 0.0; }
  point(double a, double b, double c) {
    x = a;
    y = b;
    z = c;
  }
};
inline point mid_point(point a, point b) {
  return point(a.x + (b.x - a.x) / 2.0, a.y + (b.y - a.y) / 2.0,
               a.z + (b.z - a.z) / 2.0);
}
inline double sqr(double x) { return x * x; }
inline double dist(point a, point b) {
  return sqrt(sqr(a.x - b.x) + sqr(a.y - b.y) + sqr(a.z - b.z));
}
int n;
bool b;
double vp, vs, dp, ds, tds, tp, ts, tts;
point s[10001], p, e;
int main(void) {
  scanf("%d", &n);
  for (int i = 0; i <= n; 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);
  b = 0;
  ds = 0;
  for (int i = 1; i <= n; i++) {
    dp = dist(p, s[i]);
    tp = dp / vp;
    ds += dist(s[i - 1], s[i]);
    ts = ds / vs;
    if (tp <= ts || fabs(tp - ts) < eps) {
      e = s[i];
      ds -= dist(s[i - 1], s[i]);
      ts = ds / vs;
      point lo = s[i - 1];
      point hi = s[i];
      point mid;
      while (dist(lo, hi) > eps) {
        mid = mid_point(lo, hi);
        dp = dist(p, mid);
        tp = dp / vp;
        tds = ds + dist(s[i - 1], mid);
        tts = tds / vs;
        if (tp <= tts) {
          e = mid;
          hi = mid;
        } else
          lo = mid;
      }
      tp = dist(p, e) / vp;
      b = 1;
      printf("YES\n");
      printf("%.9lf\n", tp);
      printf("%.9lf %.9lf %.9lf\n", e.x, e.y, e.z);
      break;
    }
  }
  if (!b) printf("NO\n");
  return 0;
}
