#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-6, INF = 1e15, PI = acos(-1.0);
double sq(double x) { return x * x; }
struct P {
  double a[3];
  P() {}
  P(double *t) {
    for (int i = 0; i < 3; i++) a[i] = t[i];
  }
  void eat() { scanf("%lf%lf%lf", a, a + 1, a + 2); }
  double operator*(P p) {
    double ans = 0;
    for (int i = 0; i < 3; i++) ans += a[i] * p.a[i];
    return ans;
  }
  double mag2() {
    double ans = 0;
    for (int i = 0; i < 3; i++) ans += a[i] * a[i];
    return ans;
  }
  P operator*(double k) {
    P res;
    for (int i = 0; i < 3; i++) res.a[i] = a[i] * k;
    return res;
  }
  P operator+(P p) {
    P res;
    for (int i = 0; i < 3; i++) res.a[i] = a[i] + p.a[i];
    return res;
  }
  P operator-(P p) { return (*this) + (p * -1); }
  double mag() { return sqrt(mag2()); }
};
const int N = 203600;
P p[N];
int n;
P q;
double vp, vs;
int main() {
  scanf("%d", &n);
  for (int i = 0; i <= n; i++) p[i].eat();
  scanf("%lf%lf", &vp, &vs);
  q.eat();
  for (int i = 0; i <= n; i++) p[i] = p[i] - q;
  double t0 = 0;
  double ans;
  bool sol = 0;
  P pc;
  for (int i = 0; i <= n; i++)
    if (!sol) {
      double dist = p[i].mag();
      if (i == n) break;
      P a = p[i], b = p[i + 1], v = b - a;
      v = v * (1. / v.mag()) * vs;
      double A = vp * vp - v.mag2();
      double B = vp * vp * t0 * 2 - a * v * 2;
      double C = vp * vp * t0 * t0 - a * a;
      double D = B * B - 4 * A * C;
      if ((fabs((A) - (0)) < EPS)) {
        if (!(fabs((B) - (0)) < EPS)) {
          double s1 = -INF, s2 = INF;
          double mx = (b - a).mag() / vs;
          if (((0) < (B)-EPS))
            s1 = -C / B;
          else
            s2 = -C / B;
          s1 = max((double)0.0, s1);
          s2 = min(mx, s2);
          if (!((s2) < (s1)-EPS)) {
            ans = t0 + s1;
            pc = a + v * s1;
            sol = 1;
          }
        }
      } else if (!((D) < (0) - EPS)) {
        double s1 = (-B - sqrt(D)) / 2 / A;
        double s2 = (-B + sqrt(D)) / 2 / A;
        double mx = (b - a).mag() / vs;
        double st = max((double)0.0, s1);
        double ed = min(mx, s2);
        st = s1;
        double s3;
        if (!((s1) < (0) - EPS)) s3 = 0, sol = 1;
        if (!sol && !((mx) < (s2)-EPS)) s3 = s2, sol = 1;
        if (sol) {
          ans = t0 + s3;
          pc = a + v * s3;
        }
      }
      t0 += (p[i + 1] - p[i]).mag() / vs;
    }
  pc = pc + q;
  if (!sol)
    puts("NO");
  else {
    puts("YES");
    printf("%.20f\n", ans);
    printf("%.20f %.20f %.20f\n", pc.a[0], pc.a[1], pc.a[2]);
  }
}
