#include<stdio.h> 

 #include<stdlib.h> 

 #include<deque> 

 #include<string.h> 

 #include<iostream> 

 using namespace std; 

 #define maxn 550 

 #define INF 99999999 



 int G[maxn][maxn]; 

 int prev[maxn]; 

 bool vis[maxn]; 



 int EK(int n) 

 { 

     int i,u; 

     deque<int>p; 

     memset(prev,0,sizeof(prev)); 

     memset(vis,false,sizeof(vis)); 

     vis[1]=true; 

     prev[1]=0; 

     int Flag=false; 

     p.push_back(1); 

     while(!p.empty()) 

     { 

         u=p.front(); 

         p.pop_front(); 

         for(i=1;i<=n;i++) 

         { 

             if(!vis[i]&&G[u][i]) 

             { 

                 prev[i]=u; 

                 vis[i]=true; 

                 if(i==n) 

                 { 

                     Flag=true; 

                     p.clear(); 

                     break; 

                 } 

                 else 

                     p.push_back(i); 

             } 

         } 

     } 

     int Min=INF; 

     if(!Flag) 

         return 0; 

     i=n; 

     while(prev[i]) 

     { 

        if(Min>G[prev[i]][i]) 

             Min=G[prev[i]][i]; 

         i=prev[i]; 

     } 

     i=n; 

     while(prev[i]) 

     { 

         G[prev[i]][i]-=Min; 

         G[i][prev[i]]+=Min; 

         i=prev[i]; 

     } 

     return Min; 

 } 

 int main() 

 { 



     int m,n; 

     int i; 

     int x,y,z; 

     while(scanf("%d%d",&m,&n)!=EOF) 

     { 

         memset(G,0,sizeof(G)); 

         for(i=1;i<=m;i++) 

         { 

             scanf("%d%d%d",&x,&y,&z); 

             G[x][y]+=z; 

         } 

         int sum=0; 

         int t; 

         
while(t=EK(n))//很重要 

         { 

              sum+=t; 

             // printf("%d\n",EK(n)); 

         } 

         printf("%d\n",sum); 

     } 

     return 0; 

 }