#include<bits/stdc++.h>
using namespace std;
const int mxn = 501;
int rGraph[mxn][mxn];
int orGraph[mxn][mxn];
int parent[mxn];
int n, m;
bool bfs(int s, int t)
{
bool visited[mxn] = {};
queue<int> q;
q.push(s);
visited[s] = true;
parent[s] = -1;
while(!q.empty())
{
int u = q.front();
q.pop();
for(int v = 0; v < n; v++)
{
if(rGraph[u][v] > 0 && !visited[v])
{
parent[v] = u;
visited[v] = true;
if(v == t)
return true;
q.push(v);
}
}
}
return false;
}
long long ff(int s, int t)
{
long long maxflow = 0;
while(bfs(s, t))
{
long long pathflow = LLONG_MAX;
for(int v = t; v != s; v = parent[v])
{
int u = parent[v];
pathflow = min(pathflow, (long long)rGraph[u][v]);
}
for(int v = t; v != s; v = parent[v])
{
int u = parent[v];
rGraph[u][v] -= pathflow;
rGraph[v][u] += pathflow;
}
maxflow += pathflow;
}
return maxflow;
}
void minc(int s)
{
bool visited[mxn] = {};
queue<int> q;
q.push(s);
visited[s] = true;
while(!q.empty())
{
int u = q.front();
q.pop();
for(int v = 0; v < n; v++)
{
if(rGraph[u][v] > 0 && !visited[v])
{
visited[v] = true;
q.push(v);
}
}
}
for(int u = 0; u < n; u++)
{
for(int v = 0; v < n; v++)
{
if(visited[u] && !visited[v] && orGraph[u][v] > 0)
{
cout << u << " " << v << endl;
}
}
}
}
int main()
{
int s,t;
cin >> n >> m >> s>> t;
memset(orGraph, 0, sizeof(orGraph));
memset(rGraph, 0, sizeof(rGraph));
for(int i = 0; i < m; i++)
{
int u, v, w;
cin >> u >> v >> w;
orGraph[u][v] = w;
rGraph[u][v] = w;
}
minc(s+1);
cout<< ff(s, t);
return 0;
}
/*
6 10 0 5
0 1 16
0 2 13
1 2 10
1 3 12
2 1 4
2 4 14
3 2 9
3 5 20
4 3 7
4 5 4
*/
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgaW50IG14biA9IDUwMTsKaW50IHJHcmFwaFtteG5dW214bl07CmludCBvckdyYXBoW214bl1bbXhuXTsKaW50IHBhcmVudFtteG5dOwppbnQgbiwgbTsKCmJvb2wgYmZzKGludCBzLCBpbnQgdCkKewogICAgYm9vbCB2aXNpdGVkW214bl0gPSB7fTsKICAgIHF1ZXVlPGludD4gcTsKCiAgICBxLnB1c2gocyk7CiAgICB2aXNpdGVkW3NdID0gdHJ1ZTsKICAgIHBhcmVudFtzXSA9IC0xOwoKICAgIHdoaWxlKCFxLmVtcHR5KCkpCiAgICB7CiAgICAgICAgaW50IHUgPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKCiAgICAgICAgZm9yKGludCB2ID0gMDsgdiA8IG47IHYrKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKHJHcmFwaFt1XVt2XSA+IDAgJiYgIXZpc2l0ZWRbdl0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHBhcmVudFt2XSA9IHU7CiAgICAgICAgICAgICAgICB2aXNpdGVkW3ZdID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICBpZih2ID09IHQpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICAgICAgICAgICAgcS5wdXNoKHYpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9CmxvbmcgbG9uZyBmZihpbnQgcywgaW50IHQpCnsKICAgIGxvbmcgbG9uZyBtYXhmbG93ID0gMDsKCiAgICB3aGlsZShiZnMocywgdCkpCiAgICB7CiAgICAgICAgbG9uZyBsb25nIHBhdGhmbG93ID0gTExPTkdfTUFYOwoKICAgICAgICBmb3IoaW50IHYgPSB0OyB2ICE9IHM7IHYgPSBwYXJlbnRbdl0pCiAgICAgICAgewogICAgICAgICAgICBpbnQgdSA9IHBhcmVudFt2XTsKICAgICAgICAgICAgcGF0aGZsb3cgPSBtaW4ocGF0aGZsb3csIChsb25nIGxvbmcpckdyYXBoW3VdW3ZdKTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCB2ID0gdDsgdiAhPSBzOyB2ID0gcGFyZW50W3ZdKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHUgPSBwYXJlbnRbdl07CiAgICAgICAgICAgIHJHcmFwaFt1XVt2XSAtPSBwYXRoZmxvdzsKICAgICAgICAgICAgckdyYXBoW3ZdW3VdICs9IHBhdGhmbG93OwogICAgICAgIH0KICAgICAgICBtYXhmbG93ICs9IHBhdGhmbG93OwogICAgfQogICAgcmV0dXJuIG1heGZsb3c7Cn0Kdm9pZCBtaW5jKGludCBzKQp7CiAgICBib29sIHZpc2l0ZWRbbXhuXSA9IHt9OwogICAgcXVldWU8aW50PiBxOwogICAgcS5wdXNoKHMpOwogICAgdmlzaXRlZFtzXSA9IHRydWU7CgogICAgd2hpbGUoIXEuZW1wdHkoKSkKICAgIHsKICAgICAgICBpbnQgdSA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwoKICAgICAgICBmb3IoaW50IHYgPSAwOyB2IDwgbjsgdisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYockdyYXBoW3VdW3ZdID4gMCAmJiAhdmlzaXRlZFt2XSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmlzaXRlZFt2XSA9IHRydWU7CiAgICAgICAgICAgICAgICBxLnB1c2godik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmb3IoaW50IHUgPSAwOyB1IDwgbjsgdSsrKQogICAgewogICAgICAgIGZvcihpbnQgdiA9IDA7IHYgPCBuOyB2KyspCiAgICAgICAgewogICAgICAgICAgICBpZih2aXNpdGVkW3VdICYmICF2aXNpdGVkW3ZdICAmJiAgb3JHcmFwaFt1XVt2XSA+IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvdXQgPDwgdSA8PCAiICIgPDwgdiA8PCBlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CmludCBtYWluKCkKewogICAgaW50IHMsdDsKICAgIGNpbiA+PiBuID4+IG0gPj4gcz4+IHQ7CiAgICBtZW1zZXQob3JHcmFwaCwgMCwgc2l6ZW9mKG9yR3JhcGgpKTsKICAgIG1lbXNldChyR3JhcGgsIDAsIHNpemVvZihyR3JhcGgpKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBtOyBpKyspCiAgICB7CiAgICAgICAgaW50IHUsIHYsIHc7CiAgICAgICAgY2luID4+IHUgPj4gdiA+PiB3OwogICAgICAgIG9yR3JhcGhbdV1bdl0gPSB3OwogICAgICAgICByR3JhcGhbdV1bdl0gPSB3OwogICAgfQogICAgbWluYyhzKzEpOwogICAgIGNvdXQ8PCBmZihzLCB0KTsKICAgIHJldHVybiAwOwp9Ci8qCjYgMTAgMCA1CjAgMSAxNgowIDIgMTMKMSAyIDEwCjEgMyAxMgoyIDEgNAoyIDQgMTQKMyAyIDkKMyA1IDIwCjQgMyA3CjQgNSA0CiovCg==