#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10, mod = 1e9 + 7;
const double eps = 1e-9;
struct point {
  double x, y, z;
};
point p[N];
double v1, v2;
int n;
double getdis(int id1, int id2) {
  double d1 = p[id1].x - p[id2].x;
  double d2 = p[id1].y - p[id2].y;
  double d3 = p[id1].z - p[id2].z;
  return sqrt(d1 * d1 + d2 * d2 + d3 * d3);
}
pair<pair<double, double>, double> getpos(double t) {
  for (int i = 1; i <= n; i++) {
    double dis = getdis(i - 1, i);
    if (dis / v2 <= t) {
      t -= dis / v2;
      continue;
    }
    return {{p[i - 1].x + double(p[i].x - p[i - 1].x) * t / (dis / v2),
             p[i - 1].y + double(p[i].y - p[i - 1].y) * t / (dis / v2)},
            p[i - 1].z + double(p[i].z - p[i - 1].z) * t / (dis / v2)};
  }
  if (t <= eps) return {{p[n].x, p[n].y}, p[n].z};
  return {{-1, -1}, -1};
}
bool check(double m) {
  auto xx = getpos(m);
  if (xx.first.first == -1) return true;
  p[n + 2].x = xx.first.first;
  p[n + 2].y = xx.first.second;
  p[n + 2].z = xx.second;
  return getdis(n + 1, n + 2) / v1 <= m;
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 0; i <= n; i++) cin >> p[i].x >> p[i].y >> p[i].z;
  cin >> v1 >> v2;
  cin >> p[n + 1].x >> p[n + 1].y >> p[n + 1].z;
  double l = 0, r = mod;
  for (int i = 0; i < 200; i++) {
    double m = (l + r) / 2;
    if (check(m))
      r = m;
    else
      l = m;
  }
  if (getpos(r).first.first == -1) return cout << "NO", 0;
  cout << "YES\n";
  cout << fixed << setprecision(6) << l << endl;
  auto xx = getpos(l);
  cout << xx.first.first << " " << xx.first.second << " " << xx.second;
  return 0;
}
