#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:16777216")
using namespace std;
template <class T>
void pv(T a, T b) {
  for (T i = a; i != b; ++i) cout << *i << " ";
  cout << endl;
}
int cmp(long double x, long double y = 0) {
  if (fabs(x - y) <= 1e-12)
    return 0;
  else
    return x < y ? -1 : +1;
}
struct point {
  long double x, y, z;
  point() {}
  point(long double x, long double y, long double z) : x(x), y(y), z(z) {}
  point operator+(point p) { return point(x + p.x, y + p.y, z + p.z); }
  point operator-(point p) { return point(x - p.x, y - p.y, z - p.z); }
  point operator*(long double d) { return point(x * d, y * d, z * d); }
  long double norm() { return sqrt(x * x + y * y + z * z); }
} p[11111], harry;
int n;
long double vs, vh;
int func(point A, point B, long double t, long double tadd) {
  point C = A * t + B * (1 - t);
  long double th = (harry - C).norm() / vh;
  long double ts = tadd + ((C - B).norm() / vs);
  return cmp(th, ts) <= 0;
}
int main() {
  cin >> n;
  for (int i = 0; i <= n; i++) {
    cin >> p[i].x >> p[i].y >> p[i].z;
  }
  cin >> vh >> vs;
  cin >> harry.x >> harry.y >> harry.z;
  cout << fixed << setprecision(6);
  long double tadd = 0;
  for (int i = 1; i <= n; i++) {
    if (func(p[i], p[i - 1], 1.0, tadd)) {
      long double t = 1.0, take = 1.0;
      for (int k = 0; k < 1000; k++) {
        long double nt = t - take;
        take /= 2;
        if (nt >= 0 && func(p[i], p[i - 1], nt, tadd)) {
          t = nt;
        }
      }
      {
        point A = p[i], B = p[i - 1];
        point C = A * t + B * (1 - t);
        long double th = (harry - C).norm() / vh;
        long double ts = tadd + (C - B).norm() / vs;
        cout << "YES" << endl;
        cout << fixed << th << endl;
        cout << fixed << C.x << " " << fixed << C.y << " " << fixed << C.z
             << endl;
        return 0;
      }
    }
    tadd += (p[i] - p[i - 1]).norm() / vs;
  }
  cout << "NO" << endl;
  return 0;
}
