#include <bits/stdc++.h>
using namespace std;
const int N = 11000;
int n;
double vp, vs, cur, sum, curT;
class point {
 public:
  double x, y, z;
  point() : x(0), y(0) {}
  point(double _x, double _y, double _z) : x(_x), y(_y), z(_z) {}
  bool operator==(point &p2) {
    return (this->x == p2.x) && (this->y == p2.y) && (this->z == p2.z);
  }
  point operator+(point &p2) {
    return point(this->x + p2.x, this->y + p2.y, this->z + p2.z);
  }
  point operator/(double d) {
    return point(this->x / d, this->y / d, this->z / d);
  }
};
point way[N], p;
double sqr(double x) { return x * x; }
double dist(point &a, point &b) {
  return sqrt(sqr(a.x - b.x) + sqr(a.y - b.y) + sqr(a.z - b.z));
}
double time(point &p1, point &p2) { return dist(p1, p2) / vp; }
point binSearch(point l, point r) {
  int cntIter = 100000;
  point st = l;
  while (cntIter--) {
    point m = (l + r) / 2;
    if (time(p, m) <= curT + dist(st, m) / vs)
      r = m;
    else
      l = m;
  }
  return r;
}
int main() {
  cin >> n;
  for (int i = 0; i <= n; i++)
    scanf("%lf%lf%lf", &way[i].x, &way[i].y, &way[i].z);
  cin >> vp >> vs;
  scanf("%lf%lf%lf", &p.x, &p.y, &p.z);
  if (p == way[0]) {
    printf("YES\n0.0\n%.19lf %.19lf %.19lf", p.x, p.y, p.z);
    return 0;
  }
  for (int i = 1; i <= n; i++) {
    cur = dist(way[i - 1], way[i]);
    sum += cur;
    curT += cur / vs;
    if (time(p, way[i]) <= curT) {
      sum -= cur;
      curT -= cur / vs;
      point ans = binSearch(way[i - 1], way[i]);
      curT += dist(way[i - 1], ans) / vs;
      printf("YES\n");
      printf("%.19lf\n", curT);
      printf("%.19lf %.19lf %.19lf", ans.x, ans.y, ans.z);
      return 0;
    }
  }
  printf("NO");
}
