#54626: 用Dijkstra (python)


jiiji47u56@gmail.com (jiiji47)


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}')