#include<stdio.h>
#define N 510
#define INF 2000000000
int n,m,k,c[N][N],f[N][N],p,z,i,s,d,pre[N],t,l,h[N],poz[N],j,g[N][N],deg[N],que[1000010],q;
long a[N],b[N],o[N][N],r;
long long e=0;
int main()
{freopen("fmcm.in","r",stdin);
freopen("fmcm.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&s,&d),s--,d--;
for(i=0;i<n;i++)
a[i]=INF;
a[s]=p=q=0,que[q++]=s;
while(m--)
scanf("%d%d%d%d",&i,&j,&l,&z),i--,j--,g[i][deg[i]++]=j,g[j][deg[j]++]=i,o[i][j]=z,o[j][i]=-z,c[i][j]=l;
while(p<q)
{i=que[p++];
for(j=0;j<deg[i];j++)
if(f[i][g[i][j]]<c[i][g[i][j]]&&a[g[i][j]]>a[i]+o[i][g[i][j]])
a[g[i][j]]=a[i]+o[i][g[i][j]],que[q++]=g[i][j];}
for(i=0;i<n;i++)
for(j=0;j<deg[i];j++)
o[i][g[i][j]]+=a[i]-a[g[i][j]];
while(1)
{for(i=0;i<n;i++)
poz[i]=-1,b[i]=INF;
b[s]=l=0,r=INF,h[l++]=s,pre[d]=-1;
while(l)
{i=h[0],poz[i]=-1,h[0]=h[--l],poz[h[0]]=0;
for(j=1;j<l-1;j<<=1)
if(b[h[j+1]]<b[h[0]])
j++,p=h[j],h[j]=h[0],h[0]=p,poz[h[j]]=j,poz[h[0]]=0;
for(k=0;k<deg[i];k++)
if(c[i][g[i][k]]>f[i][g[i][k]]&&b[g[i][k]]>b[i]+o[i][g[i][k]])
{b[g[i][k]]=b[i]+o[i][g[i][k]],pre[g[i][k]]=i;
if(poz[g[i][k]]==-1)
j=poz[g[i][k]]=l,h[l++]=g[i][k];
else
j=poz[g[i][k]];
for(t=j>>1;t&&b[t]>b[j];t>>=1)
p=h[j],h[j]=h[t],h[t]=p,poz[h[j]]=j,poz[h[t]]=t;}}
if(pre[d]==-1)
break;
for(l=d;l!=s;l=pre[l])
if(r>(t=c[pre[l]][l]-f[pre[l]][l]))
r=t;
for(l=d;l!=s;l=pre[l])
f[pre[l]][l]+=r,f[l][pre[l]]-=r;
e+=(b[d]+a[d])*r;}
printf("%lld",e);
fclose(stdin),fclose(stdout);
return 0;}