#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y;
}a[805];
int s[805];
int t[805];
int aa;
int b;
int x[805];
int xx[805];
int xxx[805];
int xxxx[805];
int y[805];
int yy[805];
int yyy[805];
int yyyy[805];
double f[805][805];
double dis(int a,int b,int c,int d){
return sqrt((a-c)*(a-c)+(b-d)*(b-d));
}
double diss(int k){
return sqrt((x[k]-xx[k])*(x[k]-xx[k])+(y[k]-yy[k])*(y[k]-yy[k]));
}
double disss(int k){
return sqrt((x[k]-xxx[k])*(x[k]-xxx[k])+(y[k]-yyy[k])*(y[k]-yyy[k]));
}
double dissss(int k){
return sqrt((xx[k]-xxx[k])*(xx[k]-xxx[k])+(yy[k]-yyy[k])*(yy[k]-yyy[k]));
}
void zuo(int k){
double mx=max(diss(k),max(disss(k),dissss(k)));
double b;
double p;
double o;
double q;
if(mx==diss(k)){
double mix=(x[k]+xx[k])/2;
double miy=(y[k]+yy[k])/2;
double kk=(miy-yyy[k])/(mix-xxx[k]);
b=miy-kk*mix;
p=(y[k]-yyy[k])/(x[k]-xxx[k]);
double bb=yy[k]-p*xx[k];
o=(b-bb)/(p-kk);
q=kk*o+b;
}
else if(mx==disss(k)){
double mix=(x[k]+xxx[k])/2;
double miy=(y[k]+yyy[k])/2;
double kk=(miy-yy[k])/(mix-xx[k]);
b=miy-kk*mix;
p=(y[k]-yy[k])/(x[k]-xx[k]);
double bb=yyy[k]-p*xxx[k];
o=(b-bb)/(p-kk);
q=kk*o+b;
}
else{
double mix=(xx[k]+xxx[k])/2;
double miy=(yy[k]+yyy[k])/2;
double kk=(miy-y[k])/(mix-x[k]);
b=miy-kk*mix;
p=(y[k]-yyy[k])/(x[k]-xxx[k]);
double bb=yy[k]-p*xx[k];
o=(b-bb)/(p-kk);
q=kk*o+b;
}
xxxx[k]=o;
yyyy[k]=q;
}
void floed(int m,int t){
for(int i=1; i<=405; i++){
for(int j=1; j<=405; j++){
f[i][j]=1e9;
}
f[i][i]=0;
}
for(int i=1; i<=4*m; i++){
for(int j=i; j<=4*m; j++){
f[i][j]=t*dis(a[i].x,a[i].y,a[j].x,a[j].y);
f[j][i]=t*dis(a[i].x,a[i].y,a[j].x,a[j].y);
}
}
for(int k=1; k<=4*m; k++){
for(int i=1; i<=4*m; i++){
for(int j=1; j<=4*m; j++){
f[i][j]=min(t*f[i][k]+t*f[k][j],t*f[i][j]);
}
}
}
for(int i=1; i<=4*m; i++){
for(int j=1; j<=4*m; j++){
cout<<f[i][j]<<" ";
}
cout<<endl;
}
}
int main(){
int n;
cin>>n;
int cnt=0;
for(int i=1; i<=n; i++){
cin>>s[i]>>t[i]>>aa>>b;
cnt=0;
for(int j=1; j<=s[i]; j++){
cin>>x[j]>>y[j]>>xx[j]>>yy[j]>>xxx[j]>>yyy[j];
zuo(j);
cout<<xxxx[j]<<" "<<yyyy[j]<<endl;
a[++cnt].x=x[j];
a[cnt].y=y[j];
a[++cnt].x=xx[j];
a[cnt].y=yy[j];
a[++cnt].x=xxx[j];
a[cnt].y=yyy[j];
a[++cnt].x=xxxx[j];
a[cnt].y=yyyy[j];
}
floed(s[i],t[i]);
double ans=1e9;
for(int i=aa*4-4; i<=aa*4; i++){
for(int j=b*4-4; j<=b*4; j++){
ans=min(f[i][j],ans);
}
}
printf("%.1lf",ans);
}
return 0;
}