#include <bits/stdc++.h>
 
using namespace std;
 
#define DEBUG(x) cerr<<#x<<": "<<x<<endl;
#define DEBUG_VEC(v) cerr<<#v<<":";for(int i=0;i<v.size();i++) cerr<<" "<<v[i]; cerr<<endl;
#define DEBUG_MAT(v) cerr<<#v<<endl;for(int i=0;i<v.size();i++){for(int j=0;j<v[i].size();j++) {cerr<<v[i][j]<<" ";}cerr<<endl;}
typedef long long ll;
#define int ll
 
#define vi vector<int>
#define vl vector<ll>
#define vii vector< vector<int> >
#define vll vector< vector<ll> >
#define vs vector<string>
#define pii pair<int,int>
#define pis pair<int,string>
#define psi pair<string,int>
#define pll pair<ll,ll>
template<class S, class T> pair<S, T> operator+(const pair<S, T> &s, const pair<S, T> &t) { return pair<S, T>(s.first + t.first, s.second + t.second); }
template<class S, class T> pair<S, T> operator-(const pair<S, T> &s, const pair<S, T> &t) { return pair<S, T>(s.first - t.first, s.second - t.second); }
template<class S, class T> ostream& operator<<(ostream& os, pair<S, T> p) { os << "(" << p.first << ", " << p.second << ")"; return os; }
#define X first
#define Y second
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define rep1(i,n) for(int i=1;i<=(int)(n);i++)
#define rrep(i,n) for(int i=(int)(n)-1;i>=0;i--)
#define rrep1(i,n) for(int i=(int)(n);i>0;i--)
#define REP(i,a,b) for(int i=a;i<b;i++)
#define in(x, a, b) (a <= x && x < b)
#define all(c) c.begin(),c.end()
template<class T> bool chmax(T &a, const T &b) { if (a<b) { a = b; return 1; } return 0; }
template<class T> bool chmin(T &a, const T &b) { if (a>b) { a = b; return 1; } return 0; }
#define UNIQUE(v) v.erase(std::unique(v.begin(), v.end()), v.end());
const ll inf = 1000000001;
const ll INF = (ll)1e18 + 1;
const long double pi = 3.1415926535897932384626433832795028841971L;
#define Sp(p) cout<<setprecision(25)<< fixed<<p<<endl;
//int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
//int dx2[8] = { 1,1,0,-1,-1,-1,0,1 }, dy2[8] = { 0,1,1,1,0,-1,-1,-1 };
vi dx = {1, 0, -1, 0}, dy = {0, 1, 0, -1};
vi dx2 = { 1,1,0,-1,-1,-1,0,1 }, dy2 = { 0,1,1,1,0,-1,-1,-1 };
#define fio() cin.tie(0); ios::sync_with_stdio(false);
const ll MOD = 1000000007;
// const ll MOD = 998244353;
// #define mp make_pair
//#define endl '\n'

using ld = long double;
const ld EPS = 1e-10;

vector<vector<ld>> xyz(222, vector<ld>(3)), vxyz(222, vector<ld>(3));
vector<ld> r(222), vr(222);

ld f(int u, int v, ld t) {
    vector<ld> x1(3), x2(3);
    ld dist1 = 0;
    rep (i, 3) {
        x1[i] = xyz[u][i] + vxyz[u][i] * t;
        x2[i] = xyz[v][i] + vxyz[v][i] * t;
        dist1 += (x1[i] - x2[i]) * (x1[i] - x2[i]);
    }
    dist1 = sqrtl(dist1);

    ld rr1 = r[u] - t * vr[u], rr2 = r[v] - t * vr[v];
    ld dist2 = rr1 + rr2;
    return dist1 - dist2;
}

void solve(int n) {
    rep (i, n) {
        rep (j, 3) cin >> xyz[i][j];
        rep (j, 3) cin >> vxyz[i][j];
        cin >> r[i] >> vr[i];
    }

    using P = pair<ld, pii>;
    vector<P> events;
    rep (i, n) {
        ld time = r[i] / vr[i];
        events.push_back({time, pii(i, -1)});

        for (int j = i + 1; j < n; j++) {
            ld left = 0, right = time;
            rep (_, 70) {
                ld x1 = (2 * left + right) / 3., x2 = (left + 2 * right) / 3.;
                ld f1 = f(i, j, x1), f2 = f(i, j, x2);
                if (f1 < 0) {
                    right = x1;
                }
                else {
                    if (f1 > f2) left = x1;
                    else right = x2;
                }
            }
            // DEBUG(left);
            // DEBUG(right);
            if (abs(f(i, j, left)) < EPS) events.push_back({left, pii(i, j)});
        }
        // for (int j = i + 1; j < n; j++) {
        //     int idx = -1;
        //     for (int k = 0; k < 3; k++) {
        //         if (abs(vxyz[i][k] - vxyz[j][k]) > EPS) idx = k;
        //     }
        //     if (idx == -1) continue;
        //     ld t = (xyz[i][idx] - xyz[j][idx]) / (vxyz[j][idx] - vxyz[i][idx]);
        //     if (t <= 0) continue;

        //     bool col = true;
        //     for (int k = 0; k < 3; k++) {
        //         ld x1 = xyz[i][k] + t * vxyz[i][k];
        //         ld x2 = xyz[j][k] + t * vxyz[j][k];
        //         if (abs(x1 - x2) > EPS) col = false;
        //     }
        //     if (col) {
        //         events.push_back({t, pii(i, j)});
        //     }
        // }
    }

    sort(all(events));
    // DEBUG_VEC(events);

    vector<ld> ans(n, -1);
    for (P ev: events) {
        ld time = ev.first;
        int u = ev.second.first, v = ev.second.second;
        if (v < 0) {
            if (ans[u] < 0) ans[u] = time;
        }
        else {
            if (ans[u] < 0 and ans[v] < 0) {
                ans[u] = ans[v] = time;
            }
        }
    }
    rep (i, n) {
        cout << setprecision(25) << fixed<< ans[i] << endl;
    }
}

signed main() {
    while (true) {
        int n;
        cin >> n;
        if (n == 0) return 0;
        solve(n);
    }
}


Measured memory_bytes: 3324