#include<iostream.h>
#include<fstream.h>
#define INF 1000000
#define N 1001
#define M 5001
int n,m,i,j,k,deg[N]={0},g1[N][N],l,t,b[M],c[M],e[M];
long capac,flow[N][N]={0},d[N],g2[N][N];
long min(long a,long b)
{if(a<b)
return a;
return b;}
long EK(int g1[N][N],long g2[N][N],int deg[N],int n,int source,int sink,long flow[N][N],long d[N])
{long pre[N],que[N],p,q,t,i,j,k,l,r,v1[N],v2[N],w=1;
while(1)
{for(k=1;k<=n;k++)
pre[k]=-1;
d[source]=INF;
p=0;
q=0;
que[q++]=source;
while(p<q&&pre[sink]<0)
{t=que[p++];
for(i=1;i<=deg[t];i++)
if(pre[g1[t][i]]<0&&(j=g2[t][g1[t][i]]-flow[t][g1[t][i]])!=0)
{pre[que[q++]=g1[t][i]]=t;
d[g1[t][i]]=min(d[t],j);}}
if(pre[sink]<0)
break;
for(l=sink;l!=source;l=pre[l])
{flow[pre[l]][l]+=d[sink];
deg[pre[l]]++;
g1[pre[l]][deg[pre[l]]]=l;
deg[l]++;
g1[l][deg[l]]=pre[l];
flow[l][pre[l]]-=d[sink];}}
j=0;
for(i=1;i<=n;i++)
j+=flow[source][i];
return j;}
int main()
{ifstream f1("maxflow.in");
ofstream f2("maxflow.out");
f1>>n>>m;
for(k=1;k<=m;k++)
{f1>>b[k]>>c[k]>>e[k];
deg[b[k]]++;
g1[b[k]][deg[b[k]]]=c[k];
g2[b[k]][c[k]]=e[k];}
f2<<EK(g1,g2,deg,n,1,n,flow,d)<<endl;
f1.close();
f2.close();
return 0;}