#include <bits/stdc++.h>
using namespace std;
const int C = 10001;
const double eps = 0.0000000001;
struct point {
  long double x, y, z;
};
struct seg {
  point sx, sy;
};
bool lypa = 0;
int n, i;
point k[C], p, beg, en, mid;
seg a, b;
long double t1, t2, s1, s2, at, vp, vs;
long double dis(seg a) {
  return sqrt((a.sy.x - a.sx.x) * (a.sy.x - a.sx.x) +
              (a.sy.y - a.sx.y) * (a.sy.y - a.sx.y) +
              (a.sy.z - a.sx.z) * (a.sy.z - a.sx.z));
}
int main() {
  scanf("%d", &n), n++;
  for (i = 0; i < n; i++) cin >> k[i].x >> k[i].y >> k[i].z;
  cin >> vp >> vs;
  cin >> p.x >> p.y >> p.z;
  for (i = 1; i < n; i++) {
    a = {p, k[i]};
    b = {k[i - 1], k[i]};
    t1 = dis(a) / vp;
    t2 = at + dis(b) / vs;
    if (t1 <= t2) {
      lypa = 1;
      break;
    } else
      at = t2;
  }
  if (lypa == 0) {
    printf("NO");
    return 0;
  }
  printf("YES\n");
  beg = k[i - 1], en = k[i];
  while (dis({beg, en}) > eps) {
    mid = {(beg.x + en.x) / 2, (beg.y + en.y) / 2, (beg.z + en.z) / 2};
    t1 = dis({p, mid}) / vp;
    t2 = at + dis({beg, mid}) / vs;
    if (t1 <= t2)
      en = mid;
    else
      beg = mid, at = t2;
  }
  mid = {(beg.x + en.x) / 2, (beg.y + en.y) / 2, (beg.z + en.z) / 2};
  cout << fixed << setprecision(10) << at << endl;
  cout << fixed << setprecision(10) << mid.x << " " << mid.y << " " << mid.z;
  return 0;
}
