#include <iostream>
#include <vector>
#include <algorithm>
#include <queue> 

using namespace std;

const int maxn=300;//agar graph por yal nabashad ta 400 ham javab midahad
int n, m, s, t, flow[maxn][maxn], capacity[maxn][maxn], par[maxn];
vector<int> G[maxn];
bool vis[maxn];

bool bfs(int s){ // masir afzayeshi ra ezafe ham mikonad
    fill(vis, vis+n, 0);
    fill(par, par+n, -1);
    vis[s] = true;
    queue<int> qu;
    qu.push(s);
    
    while(qu.size()>0){
        int u = qu.front();
        qu.pop();
        for(int i=0; i<G[u].size(); i++){
            int v=G[u][i];
           if(vis[v] == false && capacity[u][v]-flow[u][v] > 0){
               // ba tavajjoh be manfi boodane flow dar halate barax va 0 boodane capacity dar in halat meghdare bala dar har halati hadde axar mizane ezafe shodan ra midahad
               vis[v] = true;
               qu.push(v);
               par[v] = u;
           }
        }
    }
    if(par[t]==-1) return false;
    vector<int> path;
    int k=t;
    path.push_back(k);
    while(k!=s){
        k=par[k];
        path.push_back(k);
    }
    
    reverse(path.begin(), path.end());
    int minimum;// mohasebe meghdari ke mitavan be flow ezafe kard
    for(int i=0; i<path.size()-1; i++){
        int u=path[i], v=path[i+1];
        if(i==0) minimum = capacity[u][v] - flow[u][v];
        else minimum = min(minimum, capacity[u][v]-flow[u][v]);
    }
    
    //ezafe kardane masire morede nazar
    for(int i=0; i<path.size()-1; i++){
        int u=path[i], v=path[i+1];
        flow[u][v] += minimum;
        flow[v][u] -= minimum;
        // agar tavajjoh konid in kar baraye yal haye barax niz tori ke mikhahim natije midahad
    }
    return true;
}

int main(){
    cin >> n >> m >> s >> t;
    for(int i=0; i<m; i++){
        int u,v,cap;
        cin >> u >> v >> cap;
        u--, v--;
        capacity[u][v] = cap;
        G[u].push_back(v);
        G[v].push_back(u); // tavajjoh dashte bashid ke ma har 2 taraf ra be liste mojaverat ezafe mikonim
        //dar bfs daghigh tar karborde in kar ra mibinid
    }
    
    while(bfs(s));
    
    int flowsize=0;
    for(int u=0; u<n; u++) 
        flowsize += flow[s][u];
    cout << flowsize << endl;
    return 0;
}