#include<bits/stdc++.h>
using namespace std;
const int INF=1e9;
struct date
{
int x1,x2;
}arr[550][550];
int dis[550][550];
int money[550][550];
int T,n,m,s,d;
void Forlyd()
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
dis[i][j]=arr[i][j].x1;
money[i][j]=arr[i][j].x2;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
{
if(dis[j][k]>dis[j][i]+dis[i][k])
{
dis[j][k]=dis[j][i]+dis[i][k];
money[j][k]=money[j][i]+money[i][k];
}
else if(dis[j][k]==dis[j][i]+dis[i][k])
{
if(money[j][k]>money[j][i]+money[i][k])
{
money[j][k]=money[j][i]+money[i][k];
}
}
}
}
}
}
int main()
{
int i,j,k;
cin>>T;
while(T--)
{
cin>>n>>m>>s>>d;
for(i=0;i<550;i++)
{
for(j=0;j<550;j++)
{
arr[i][j].x1=INF;
arr[i][j].x2=INF;
}
}
for(i=0;i<m;i++)
{
int w1,w2,w3,w4;
cin>>w1>>w2>>w3>>w4;
arr[w1][w2].x1=w3;
arr[w1][w2].x2=w4;
arr[w2][w1].x1=w3;
arr[w2][w1].x2=w4;
}
Forlyd();
cout<<dis[s][d]<<' '<<money[s][d]<<'\n';
}
return 0;
}