#include<stdio.h>
#define INF 10001
#define N 351
int n,m,k,deg[N]={0},g1[N][N],g2[N][N]={{0}},g3[N][N],f[N][N]={{0}},p,z,i,j,s,d;
long EK(int g1[N][N],int g2[N][N],int g3[N][N],int deg[N],int n,int s,int d,int f[N][N])
{int pre[N],que[N],p,q,t,i,k,l,m;
long e=0,a[N];
while(1)
{for(k=1;k<=n;k++)
{pre[k]=-1;
a[k]=INF;}
a[s]=p=q=0;
que[q++]=s;
while(p<q)
{t=que[p++];
for(i=1;i<=deg[t];i++)
if(a[g1[t][i]]>a[t]+g3[t][g1[t][i]]&&g2[t][g1[t][i]]>f[t][g1[t][i]])
{pre[que[q++]=g1[t][i]]=t;
a[g1[t][i]]=a[t]+g3[t][g1[t][i]];}}
if(pre[d]<0)
return e;
m=INF;
for(l=d;l!=s;l=pre[l])
if(m>g2[pre[l]][l]-f[pre[l]][l])
m=g2[pre[l]][l]-f[pre[l]][l];
for(l=d;l!=s;l=pre[l])
{f[pre[l]][l]+=m;
deg[pre[l]]++;
g1[pre[l]][deg[pre[l]]]=l;
deg[l]++;
g1[l][deg[l]]=pre[l];
f[l][pre[l]]-=m;}
e=e+a[d]*m;}}
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);
deg[i]++;
g1[i][deg[i]]=j;
g2[i][j]=p;
g3[i][j]=z;
g3[j][i]=-z;}
printf("%ld",EK(g1,g2,g3,deg,n,s,d,f));
fclose(stdin);
fclose(stdout);
return 0;}