#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const double eps=1e-10;
struct point{
double x,y;
point(double _x=0,double _y=0):x(_x),y(_y){}
void show(){
printf("%.1lf %.1lf\n",x,y);
}
};
double xmulti(point p0,point p1,point p2){
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
double dis2(point p1,point p2){
return (p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);
}
point intersection(point u1,point u2,point v1,point v2){
double X1=xmulti(u1,u2,v1);
double X2=xmulti(u1,u2,v2); //xmulti是有向的,只要相交,
point p;
p.x=(v2.x*X1-v1.x*X2)/(X1-X2);
p.y=(v2.y*X1-v1.y*X2)/(X1-X2);
return p;
}
void line_circle_intersec(point c,double r,point l1,point l2,point &p1,point &p2){
point p=c;
p.x+=l1.y-l2.y;
p.y+=l2.x-l1.x;
p=intersection(c,p,l1,l2);
double l_l=sqrt(dis2(l1,l2));
double p_p=sqrt(r*r-dis2(c,p));
double B=p_p/l_l;
p1.x=p.x+(l1.x-l2.x)*B;
p1.y=p.y+(l1.y-l2.y)*B;
p2.x=p.x+(l2.x-l1.x)*B;
p2.y=p.y+(l2.y-l1.y)*B;
}
// 已知圆上一点和逆时针旋转圆心角,求解对称点
/*point rotated(point c,point p,double angle){ //angle是逆时针圆心角度数,P是原点,C是圆心
p.x-=c.x;
p.y-=c.y;
c.x+=p.x*cos(angle)-p.y*sin(angle);
c.y+=p.x*sin(angle)+p.y*cos(angle);
return c;
}*/
point rotated(point c,point p,double angle){ //angle是逆时针圆心角度数,P是原点,C是圆心
p.x-=c.x;
p.y-=c.y;
double t1=cos(angle)*1.0;
double t2=sin(angle)*1.0;
c.x+=p.x*t1-p.y*t2; //坐标旋转 点逆时针跑产生的增量向量相当于顺时针方向增加坐标值
c.y+=p.x*t2+p.y*t1;
return c;
}
int main()
{
//freopen("cin.txt","r",stdin);
int N;
point O,A,vec;
double R,r,t;
cin>>N;
while(N--){
scanf("%lf%lf%lf",&O.x,&O.y,&R);
scanf("%lf%lf%lf",&A.x,&A.y,&r);
scanf("%lf%lf%lf",&vec.x,&vec.y,&t);
point ans;
double len=sqrt(vec.x*vec.x+vec.y*vec.y)*t;
point p1,p2;
point pc1;
line_circle_intersec(O,R-r,A,point(A.x+vec.x,A.y+vec.y),p1,p2);
//if(fabs((p1.x-A.x)*vec.y - (p1.y-A.y)*vec.x)<eps) pc1=p1;
if((p1.x-A.x)*vec.x>=0&&(p1.y-A.y)*vec.y>=0) pc1=p1;
else pc1=p2;
double limit=sqrt(dis2(A,pc1));
if(len-limit<=-eps) {
ans.x=A.x+vec.x*t;
ans.y=A.y+vec.y*t;
ans.show();
continue;
}
len=len-limit;
double line_len=sqrt(dis2(p1,p2));
int sum=(int)(len/line_len);
R=R-r;
double cosx=(2*R*R-line_len*line_len)/(2*R*R);
double angle1=acos(cosx);
if(xmulti(O,A,pc1)<eps) angle1=-angle1;
point pc2=rotated(O,pc1,sum*angle1);
len=len-line_len*sum;
double B=len/line_len;
//point pc3=rotated(O,pc2,angle1);
point pc3=rotated(O,pc1,(sum+1)*angle1);
ans.x=pc2.x+(pc3.x-pc2.x)*B;
ans.y=pc2.y+(pc3.y-pc2.y)*B;
ans.show();
}
return 0;
}