#include<bits/stdc++.h>
using namespace std;
#define int long long
double ci[111][5][2];
double mo[111];
double lu[111][5][111][5];
double qz(double a,double b,double c,double d){
return sqrt((a-c)*(a-c)+(b-d)*(b-d));
}
double qzz(int a,int b,int c,int d){
return qz(ci[a][b][0],ci[a][b][1],ci[c][d][0],ci[c][d][1]);
}
signed main (){
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int n;
cin >> n;
while(n--){
int s,t,a,b;
cin >> s >> t >> a >> b;
for (int i = 1 ; i <= s ; i ++){
cin >> ci[i][0][0] >> ci[i][0][1];
cin >> ci[i][1][0] >> ci[i][1][1];
cin >> ci[i][2][0] >> ci[i][2][1];
cin >> mo[i];
if(qzz(i,0,i,1)>qzz(i,0,i,2)){
if(qzz(i,0,i,1)>qzz(i,1,i,2)){
ci[i][3][0] = ci[i][0][0]-(ci[i][1][0]-ci[i][2][0]);
ci[i][3][1] = ci[i][0][1]-(ci[i][1][1]-ci[i][2][1]);
}else{
ci[i][3][0] = ci[i][1][0]-(ci[i][2][0]-ci[i][0][0]);
ci[i][3][1] = ci[i][1][1]-(ci[i][2][1]-ci[i][0][1]);
}
}else{
if(qzz(i,0,i,2)>qzz(i,1,i,2)){
ci[i][3][0] = ci[i][0][0]-(ci[i][2][0]-ci[i][1][0]);
ci[i][3][1] = ci[i][0][1]-(ci[i][2][1]-ci[i][1][1]);
}else{
ci[i][3][0] = ci[i][1][0]-(ci[i][2][0]-ci[i][0][0]);
ci[i][3][1] = ci[i][1][1]-(ci[i][2][1]-ci[i][0][1]);
}
}
}
for (int i = 1 ; i <= n ; i ++){
for (int j = 1 ; j <= n ; j ++){
for (int ii = 0 ; ii <= 3 ; ii ++){
for (int jj = 0 ; jj <= 3 ; jj ++){
lu[i][ii][j][jj] = qzz(i,ii,j,jj)*mo[i];
}
}
}
}
for (int i = 1; i <= n ; i++ ){
for (int ii = 0 ; ii <= 3 ; ii ++){
for (int j = 1 ; j <= n ; j++){
for (int jj = 0 ; jj <= 3 ; jj ++){
for (int k = 1 ; k <= n ; k ++){
for (int kk = 0 ; kk <= 3 ; kk ++){
lu[i][ii][j][jj] = min(lu[i][ii][j][jj],lu[i][ii][k][kk]+lu[k][kk][j][jj]);
}
}
}
}
}
}
double ans;
for (int i = 0 ; i <= 3 ; i ++){
for (int j = 0 ; j <= 3 ; j ++){
ans = min(ans,lu[a][i][b][j]);
}
}
cout << fixed<<setprecision(1)<<ans << endl;
}
return 0;
}