#include<bits/stdc++.h>
using namespace std;
#define Max 1010
#define INF 0x3f3f3f3f
int mapd[Max][Max];
int mapt[Max][Max];
int n,m,s,d;
int main()
{
memset(mapd,INF,sizeof(mapd));
memset(mapt,INF,sizeof(mapt));
cin>>n>>m>>s>>d;
int i,k,j;
int a,b,c,e;
for(i=0;i<m;i++)
{
cin>>a>>b>>c>>e;
mapd[a][b]=mapd[b][a]=c;
mapt[a][b]=mapt[b][a]=e;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
for(k=0;k<n;k++)
{
if(mapd[j][k]>mapd[j][i]+mapd[i][k]||(mapd[j][k]==mapd[j][i]+mapd[i][k])&&mapt[j][i]+mapt[i][k]<mapt[j][k])
{
mapd[j][k]=mapd[j][i]+mapd[i][k];
mapt[j][k]=mapt[j][i]+mapt[i][k];
}
}
}
}
cout<<mapd[s][d]<<" "<<mapt[s][d]<<endl;
return 0;
}