#include <bits/stdc++.h>
const double PI = 3.1415926535897932384626433;
const int KL = 1e4 + 10;
const long long MOD = 1e9 + 7;
using namespace std;
int n;
struct point {
  long double x, y, z;
};
long double dis(point a, point b) {
  long double dx = a.x - b.x;
  long double dy = a.y - b.y;
  long double dz = a.z - b.z;
  return sqrt(dx * dx + dy * dy + dz * dz);
}
point a[KL], p;
long double t[KL], vp, vs;
bool ok(long double mid) {
  long double ttt = 0.0;
  int pos;
  for (int i = 1; i <= n; i++) {
    ttt += t[i];
    if (ttt >= mid) {
      pos = i;
      break;
    }
  }
  long double dx = a[pos].x - a[pos - 1].x;
  long double dy = a[pos].y - a[pos - 1].y;
  long double dz = a[pos].z - a[pos - 1].z;
  long double d = dis(a[pos], a[pos - 1]);
  long double dc = (mid - (ttt - t[pos])) * vs;
  long double sm = dc / d;
  dx = dx * sm;
  dy = dy * sm;
  dz = dz * sm;
  point c = {dx + a[pos - 1].x, dy + a[pos - 1].y, dz + a[pos - 1].z};
  long double ds = dis(c, p);
  return (ds / mid <= vp);
}
void prnt(long double nm) { cout << fixed << setprecision(10) << nm << " "; }
int main() {
  cin >> n;
  for (int i = 0; i <= n; i++) {
    cin >> a[i].x >> a[i].y >> a[i].z;
  }
  cin >> vp >> vs >> p.x >> p.y >> p.z;
  long double tt = 0.0;
  for (int i = 1; i <= n; i++) {
    t[i] = dis(a[i - 1], a[i]) / vs;
    tt += t[i];
  }
  if (!ok(tt))
    cout << "NO" << endl;
  else {
    long double lo = 0;
    long double hi = tt;
    for (int i = 0; i < 100; i++) {
      long double mid = (lo + hi) / 2;
      if (ok(mid))
        hi = mid;
      else
        lo = mid;
    }
    cout << "YES" << endl;
    cout << fixed << setprecision(10) << lo << endl;
    if (lo == 0) {
      prnt(a[0].x);
      prnt(a[0].y);
      prnt(a[0].z);
      cout << endl;
      return 0;
    }
    long double ttt = 0.0;
    int pos;
    for (int i = 0; i <= n; i++) {
      ttt += t[i];
      if (ttt >= lo) {
        pos = i;
        break;
      }
    }
    long double dx = a[pos].x - a[pos - 1].x;
    long double dy = a[pos].y - a[pos - 1].y;
    long double dz = a[pos].z - a[pos - 1].z;
    long double d = dis(a[pos], a[pos - 1]);
    long double dc = (lo - (ttt - t[pos])) * vs;
    long double sm = dc / d;
    dx = dx * sm;
    dy = dy * sm;
    dz = dz * sm;
    point c = {dx + a[pos - 1].x, dy + a[pos - 1].y, dz + a[pos - 1].z};
    prnt(c.x);
    prnt(c.y);
    prnt(c.z);
    cout << endl;
  }
  return 0;
}
