#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#define MAXN 1003
#define INFI 1000'000'009
using namespace std;
vector <int> graf[MAXN];
int much[MAXN][MAXN];
int seen[MAXN];
int n,m;
int DFS(int node,int mi){
int aux;
seen[node]=1;
if(node==n){
return mi;
}
for(int neigh : graf[node]){
if(much[node][neigh]>0 && seen[neigh]==0){
aux=DFS(neigh,min(mi,much[node][neigh]));
seen[neigh]=0;
if(aux!=-1){
much[node][neigh]-=aux;
much[neigh][node]+=aux;
return aux;
}
}
}
return -1;
}
int main(){
int i,a,b,val,aux,s;
FILE *fin,*fout;
fin=fopen("maxflow.in","r");
fout=fopen("maxflow.out","w");
fscanf(fin,"%d%d",&n,&m);
for(i=0;i<m;i++){
fscanf(fin,"%d%d%d",&a,&b,&val);
much[a][b]=val;
graf[a].push_back(b);
graf[b].push_back(a);
}
aux=0;
s=0;
while(aux!=-1){
s+=aux;
aux=DFS(1,INFI);
seen[1]=0;
}
fprintf(fout,"%d\n",s);
fclose(fin);
fclose(fout);
return 0;
}