import heapq
T = int(input())
for i in range(T):
N, M = map(int, input().split()) # 地點數量,幾組資料
A, B = map(int, input().split()) # 起點編號,考場編號
g = [[] for _ in range(N+1)]
for i in range(M):
a, b, d, v = map(int, input().split())
# a,b距離為d, 經過時速度為v
g[a].append((b, d, v))
g[b].append((a, d, v))
dist = [float('inf') for _ in range(N+1)]
time = [float('inf') for _ in range(N+1)]
dist[A] = 0
time[A] = 0
pqdist = []
pqtime = []
heapq.heappush(pqdist, (0, A))
heapq.heappush(pqtime, (0, 0, A))
# 最短距離
while pqdist:
dd, du = heapq.heappop(pqdist)
if dd > dist[du]:
continue
if du == B:
x = dd
break
for xb, xd, xv in g[du]:
if dist[xb] > dist[du] + xd:
dist[xb] = dist[du] + xd
heapq.heappush(pqdist, (dist[xb], xb))
# 最短時間的距離
while pqtime:
tt, td, tu = heapq.heappop(pqtime)
if tt > time[tu]:
continue
if tu == B:
y = td
break
for yb, yd, yv in g[tu]:
if time[yb] > time[tu] + (yd/yv):
time[yb] = time[tu] + (yd/yv)
nd = td + yd
heapq.heappush(pqtime, (time[yb], nd, yb))
print(f'{x} {y}')