#include <bits/stdc++.h>
using namespace std;
int n, m, s, t;
int inf = 999999999;
vector<int> a[100000];
int c[1000][1000];
int f[1000][1000];
int d[1000];
bool bfs(int s, int t) {
queue<int> q;
for (int i = 1; i <= n; i++)
d[i] = 0;
d[s] = inf;
q.push(s);
while (!q.empty()) {
int u = q.front();
q.pop();
if (u == t)
return true;
for (int v : a[u])
if (d[v] == 0 && c[u][v] > f[u][v]) {
d[v] = u;
q.push(v);
}
}
return false;
}
void maxflow() {
int u, v, diff = inf;
for (v = t; v != s; v = d[v]) {
u = d[v];
if (diff > c[u][v] - f[u][v])
diff = c[u][v] - f[u][v];
}
for (v = t; v != s; v = u) {
u = d[v];
f[u][v] += diff;
f[v][u] -= diff;
}
}
int main() {
cin >> n >> m;
s = 1;
t = n;
for (int i = 1; i <= m; i++) {
int u, v, w;
cin >> u >> v >> w;
a[u].push_back(v);
a[v].push_back(u);
c[u][v] = w;
}
while (bfs(s, t))
maxflow();
long long int ans = 0;
for (int v : a[s])
ans += f[s][v];
if (n == 2)
print("1");
printf("%lld", ans);
return 0;
}