#include <queue>
#include <iostream>
#define int long long
using namespace std;
int n, m, s, t, ans;
int u[205], v[205], w[205];
int f[205][205], parent[205];
int dis[205];
queue <int> q;
bool Bellman_Ford () {
for (int i = 1; i <= n; i ++)
dis[i] = 0x7fffffff;
dis[s] = 1;
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= m; j ++) {
if (f[u[j] ][v[j] ]) {
if (dis[v[j] ] > dis[u[j] ] + 1) {
dis[v[j] ] = dis[u[j] ] + 1;
parent[v[j] ] = u[j];
}
}
if (f[v[j] ][u[j] ]) {
if (dis[u[j] ] > dis[v[j] ] + 1) {
dis[u[j] ] = dis[v[j] ] + 1;
parent[u[j] ] = v[j];
}
}
}
}
return dis[t] < 0x7fffffff;
}
int augment () {
int max_flow = 2147483647;
for (int i = t; i != s; i = parent[i])
max_flow = min (max_flow, f[parent[i] ][i]);
for (int i = t; i != s; i = parent[i]) {
f[parent[i] ][i] -= max_flow;
f[i][parent[i] ] += max_flow;
}
return max_flow;
}
signed main () {
cin >> n >> m >> s >> t;
for (int i = 1; i <= m; i ++) {
cin >> u[i] >> v[i] >> w[i];
f[u[i] ][v[i] ] += w[i];
}
while (Bellman_Ford () )
ans += augment ();
cout << ans;
return 0;
}