#include <bits/stdc++.h>
using namespace std;
double fndist(double x, double y, double z, double x1, double y1, double z1) {
  double res =
      sqrt((x1 - x) * (x1 - x) + (y1 - y) * (y1 - y) + (z1 - z) * (z1 - z));
  return res;
}
double x[10008], y[10008], z[10008], xx, yy, zz, vs, vh;
int fun(double curtime, double tst, double endtime, int ind) {
  double diff = curtime - tst;
  double x1, y1, z1;
  x1 = x[ind - 1] + (x[ind] - x[ind - 1]) * diff / (endtime - tst);
  y1 = y[ind - 1] + (y[ind] - y[ind - 1]) * diff / (endtime - tst);
  z1 = z[ind - 1] + (z[ind] - z[ind - 1]) * diff / (endtime - tst);
  double timek = fndist(x1, y1, z1, xx, yy, zz) / vh;
  if (curtime + 0.000000000001 < timek) {
    return 0;
  } else
    return 1;
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n + 1; i++) {
    cin >> x[i] >> y[i] >> z[i];
  }
  cin >> vh >> vs >> xx >> yy >> zz;
  double ts = 0, th = 0, rr = n + 2, tst = 0;
  for (int i = 1; i < n + 1; i++) {
    tst = ts;
    ts += fndist(x[i], y[i], z[i], x[i - 1], y[i - 1], z[i - 1]) / vs;
    th = fndist(x[i], y[i], z[i], xx, yy, zz) / vh;
    if (ts >= th) {
      rr = i;
      break;
    }
  }
  if (rr == n + 2) {
    cout << "NO";
    return 0;
  }
  double lo = tst, hi = ts, mid;
  cout << "YES" << endl;
  int cnt = 0;
  while (abs(hi - lo) > 0.000000000001) {
    cnt++;
    if (cnt > 1000) break;
    mid = lo + hi;
    mid /= 2;
    if (fun(mid, tst, ts, rr)) {
      hi = mid;
    } else {
      lo = mid;
    }
  }
  printf("%.7lf\n", lo);
  int ind = rr;
  double diff = lo - tst;
  double endtime = ts;
  double x1, y1, z1;
  x1 = x[ind - 1] + (x[ind] - x[ind - 1]) * diff / (endtime - tst);
  y1 = y[ind - 1] + (y[ind] - y[ind - 1]) * diff / (endtime - tst);
  z1 = z[ind - 1] + (z[ind] - z[ind - 1]) * diff / (endtime - tst);
  printf("%.7lf %.7lf %.7lf\n", x1, y1, z1);
  return 0;
}
