#include<bits/stdc++.h>
#define N 205
#define int long long
using namespace std;
struct E {
int ed,c;
};
vector<E> a[N],b[N];
queue<int> q;
int n,m,s,t,ans;
int d[N];
bool bfs() {
memset(d,0,sizeof(d));
while(!q.empty()) q.pop();
q.push(s); d[s] = 1;
while(!q.empty()) {
int fr = q.front(); q.pop();
for(auto j : a[fr]) {
int v = j.ed, c = j.c;
if(!d[v] && c) {
d[v] = d[fr] + 1;
if(v == t) return true;
q.push(v);
}
}
}
return false;
}
int dfs(int u,int minf) {
if(u == t) return minf;
int sum = 0;
for(int i = 0; i < a[u].size(); i ++) {
int v = a[u][i].ed, w = a[u][i].c;
if(d[v] == d[u]+1 && w) {
int f = dfs(v,min(minf,w));
a[u][i].c -= f;
b[v][i].c += f;
minf -= f;
sum += f;
if(minf <= 0) break;
}
}
if(sum == 0) d[u] = 0;
return sum;
}
signed main() {
cin >> n >> m >> s >> t;
for(int i = 1; i <= m; i ++) {
int u,v,w;
cin >> u >> v >> w;
a[u].push_back({v,w});
b[v].push_back({u,0});
}
int Max = 1 << 31;
while(bfs()) {
ans += dfs(s,Max);
}
cout << ans;
return 0;
}