//裸最大流
#include <cstring>
#include <cstdio>
#include <string>
#include <algorithm>
#include <queue>
#include <iostream>
using namespace std;
queue<int>Q;
#define inf 0x7fffffff
#define maxn 202
int n,m;
int map[maxn][maxn];
int flow[maxn];
int pre[maxn];
int Cp[maxn][maxn];
int bfs(int s,int t)
{
while(!Q.empty())Q.pop();
memset(pre,-1,sizeof(pre));
pre[s]=0;
flow[s]=inf;
Q.push(s);
while(!Q.empty())
{
int u=Q.front();
Q.pop();
if(u==t)break;
for(int i=1;i<=m;i++)
{
if(pre[i]==-1&&Cp[u][i]>0)
{
pre[i]=u;
Q.push(i);
flow[i]=min(flow[u],Cp[u][i]);
}
}
}
if(pre[t]==-1)return -1;
else return flow[t];
}
int maxflow(int s,int t)
{
int inc=0;
int sum=0;
while(1)
{
inc=bfs(s,t);
if(inc==-1)break;
int k=t;
while(k!=s)
{
int last=pre[k];
Cp[last][k]-=inc;
Cp[k][last]+=inc;
k=last;
}
sum+=inc;
}
return sum;
}
int main()
{
while(cin>>n>>m)
{
memset(map,0,sizeof(map));
memset(Cp,0,sizeof(Cp));
for(int i=0;i<n;i++)
{
int a,b,c;
cin>>a>>b>>c;
map[a][b]+=c;
Cp[a][b]+=c;
}
//memcpy(Cp,map,sizeof(map));
cout<<maxflow(1,m)<<endl;
}
return 0;
}