#include <bits/stdc++.h>
using namespace std;
const int maxn = 10001;
const double eps = 1e-6;
int n;
double x[maxn + 1], y[maxn + 1], z[maxn + 1];
double vp, vs, px, py, pz;
double s[maxn + 1];
double dist(double x1, double y1, double z1, double x2, double y2, double z2) {
  return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) +
              (z1 - z2) * (z1 - z2));
}
bool f(int n, double X, double Y, double Z) {
  return dist(X, Y, Z, px, py, pz) / vp >
         (s[n] + dist(x[n], y[n], z[n], X, Y, Z)) / vs;
}
void dih(int n, double &t, double &X, double &Y, double &Z) {
  double rx = x[n + 1];
  double ry = y[n + 1];
  double rz = z[n + 1];
  double lx = x[n];
  double ly = y[n];
  double lz = z[n];
  for (int i = 0; i < 100; i++) {
    double mx = (lx + rx) / 2;
    double my = (ly + ry) / 2;
    double mz = (lz + rz) / 2;
    if (f(n, mx, my, mz)) {
      lx = mx;
      ly = my;
      lz = mz;
    } else {
      rx = mx;
      ry = my;
      rz = mz;
    }
  }
  t = (s[n] + dist(x[n], y[n], z[n], lx, ly, lz)) / vs;
  X = lx;
  Y = ly;
  Z = lz;
}
int main(int argc, char **argv) {
  scanf("%d", &n);
  for (int i = 0; i < n + 1; i++) scanf("%lf%lf%lf", &x[i], &y[i], &z[i]);
  scanf("%lf%lf", &vp, &vs);
  scanf("%lf%lf%lf", &px, &py, &pz);
  s[0] = 0;
  for (int i = 1; i < n + 1; i++)
    s[i] = s[i - 1] + dist(x[i], y[i], z[i], x[i - 1], y[i - 1], z[i - 1]);
  int i;
  for (i = 1; i < n + 1; i++) {
    if (s[i] / vs > (dist(px, py, pz, x[i], y[i], z[i]) / vp) - eps) break;
    if (i == n) {
      i = -1;
      break;
    }
  }
  if (i == -1)
    printf("NO\n");
  else {
    double t, X, Y, Z;
    dih(i - 1, t, X, Y, Z);
    printf("YES\n%lf\n%lf %lf %lf\n", t, X, Y, Z);
  }
  fclose(stdin);
  fclose(stdout);
  return 0;
}
