#include <bits/stdc++.h>
using namespace std;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
#define cout fout
#define cin fin
#define ll long long
const int nmx = 280;
int n;
int start, sink;
ll max_flow = 0;
int c[nmx][nmx];
int vis[nmx];
int t[nmx];
int Bfs(int k)
{
memset(t, 0, sizeof(t));
memset(vis, 0, sizeof(vis));
queue<int> q;
q.push(k);
vis[k] = 1;
while (!q.empty())
{
int front = q.front();
if (front == sink)
return true;
q.pop();
for (int to = 1; to <= n; to++)
{
if (c[front][to] > 0 && vis[to] != 1)
{
t[to] = front;
vis[to] = 1;
q.push(to);
}
}
}
return false;
}
ll MaxFlow()
{
while (Bfs(start))
{
ll mn = LLONG_MAX;
for (int k = sink; k != start; k = t[k])
mn = min(mn, (ll)c[t[k]][k]);
for (int k = sink; k != start; k = t[k])
{
c[k][t[k]] += mn;
c[t[k]][k] -= mn;
}
max_flow += mn;
}
return max_flow;
}
int main()
{
int m;
cin >> n >> m;
int x, y, cap;
while(m--)
{
cin >> x >> y >> cap;
c[x][y] = cap;
}
start = 1;
sink = n;
cout << MaxFlow();
}