#include <bits/stdc++.h>
using namespace std;
inline double dist(double x, double y, double z) {
  return sqrt(x * x + y * y + z * z);
}
int main(void) {
  ios_base::sync_with_stdio(false);
  int n;
  cin >> n;
  vector<double> x(n + 1), y(n + 1), z(n + 1);
  for (int i = 0; i <= n; ++i) cin >> x[i] >> y[i] >> z[i];
  double vp, vs;
  cin >> vp >> vs;
  double xs, ys, zs;
  cin >> xs >> ys >> zs;
  double acc = 0;
  for (int i = 0; i < n; ++i) {
    if (acc + dist(x[i + 1] - x[i], y[i + 1] - y[i], z[i + 1] - z[i]) / vs >=
        dist(x[i + 1] - xs, y[i + 1] - ys, z[i + 1] - zs) / vp) {
      double first = acc, last = acc + dist(x[i + 1] - x[i], y[i + 1] - y[i],
                                            z[i + 1] - z[i]) /
                                           vs;
      double factor =
          max(abs(x[i + 1] - x[i]),
              max(abs(y[i + 1] - y[i]), abs(z[i + 1] - z[i]))) /
          (dist(x[i + 1] - x[i], y[i + 1] - y[i], z[i + 1] - z[i]) / vs);
      while (factor * (last - first) > 0.0000001) {
        double mid = (first + last) / 2;
        double rate =
            (mid - acc) /
            (dist(x[i + 1] - x[i], y[i + 1] - y[i], z[i + 1] - z[i]) / vs);
        double xx = x[i] + (x[i + 1] - x[i]) * rate;
        double yy = y[i] + (y[i + 1] - y[i]) * rate;
        double zz = z[i] + (z[i + 1] - z[i]) * rate;
        if (dist(xx - xs, yy - ys, zz - zs) / vp <= mid) {
          last = mid;
        } else {
          first = mid;
        }
      }
      double rate =
          (last - acc) /
          (dist(x[i + 1] - x[i], y[i + 1] - y[i], z[i + 1] - z[i]) / vs);
      double xx = x[i] + (x[i + 1] - x[i]) * rate;
      double yy = y[i] + (y[i + 1] - y[i]) * rate;
      double zz = z[i] + (z[i + 1] - z[i]) * rate;
      cout << "YES\n" << fixed << last << endl;
      cout << fixed << xx << ' ' << yy << ' ' << zz << endl;
      return 0;
    }
    acc += dist(x[i + 1] - x[i], y[i + 1] - y[i], z[i + 1] - z[i]) / vs;
  }
  cout << "NO" << endl;
  return 0;
}
