#include<stdio.h>
#define INF 10000
#define N 351
int n,m,s,d,c[N][N],f[N][N]={0},i,z,p,j,v[N][N];
long ek(int c[N][N],int f[N][N],int s,int d,int n,int v[N][N])
{int i,lg,l[N],u,x,q[N],p,viz[N],g,b;
long e=0,a[N];
do
{for(i=1;i<=n;i++)
{viz[i]=0;
a[i]=INF;}
a[s]=p=u=lg=0;
q[0]=s;
while(p<=u)
{x=q[p++];
for(i=1;i<=n;i++)
if(f[x][i]<c[x][i]&&a[i]>a[x]+v[x][i])
{viz[i]=x;
a[i]=a[x]+v[x][i];
q[++u]=i;}}
if(!viz[d])
return e;
l[0]=d;
g=INF;
while(l[lg]!=s)
{lg++;
l[lg]=viz[l[lg-1]];
if(g>(b=c[l[lg]][l[lg-1]]-f[l[lg]][l[lg-1]]))
g=b;}
e=e+g*a[d];
for(i=lg;i>0;i--)
f[l[i]][l[i-1]]+=g;}
while(1);}
int main()
{freopen("fmcm.in","r",stdin);
freopen("fmcm.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&s,&d);
while(m--)
{scanf("%d%d%d%d",&i,&j,&p,&z);
c[i][j]=p;
v[i][j]=z;}
printf("%ld",ek(c,f,s,d,n,v));
fclose(stdin);
fclose(stdout);
return 0;}