/// mincost by muoii
/// vn.spoj.com/problems/MINCOST/
#include <bits/stdc++.h>
using namespace std;
#define tag "spoj"
#define maxn 0
#define maxc 0
#define oo 1000000007
#define mid ((l+r)>>1)
#define meset(a,x) memset(a,x,sizeof(a))
#define loop(x) for(int LoOpEr=x;LoOpEr-->0;)
///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
struct network{
int n;
///data: E,adj,lev,cur
vector< vector<int> > adj;
vector<int> lev,inq,bef;
struct edge{
int depa,dest;
int cap,cost,flow;
#define residual(e) ((e.flow<0?0:e.cap)-e.flow)
#define cost(e) ((e.flow<0?-1:1)*e.cost)
};
vector<edge> E;
network(): n(0), E(0), adj(0), lev(0), inq(0), bef(0) {};
network(const int &N): n(N), E(0), adj(N+1), lev(N+1), inq(N+1), bef(N+1) {};
void add_edge(const int &u,const int &v,const int &cap,const int &cost,const bool &arcs)
{
adj[u].push_back(E.size());E.push_back({u,v,cap,cost,0});
adj[v].push_back(E.size());E.push_back({v,u,arcs?0:cap,cost,0});
}
queue<int> Q;
bool augment(const int &s,const int &t)
{
for(int i=1;i<=n;i++) lev[i]=oo, inq[i]=0, bef[i]=0;
lev[s]=0;Q.push(s);inq[s]=1;
int u,v;
edge e;
while(Q.size())
{
u=Q.front(),Q.pop(),inq[u]=false;
for(const int &ide: adj[u])
{
e=E[ide];v=e.dest;
if(residual(e)>0 && lev[u]+cost(e)<lev[v])
{
lev[v]=lev[u]+cost(e);
bef[v]=ide;
if(!inq[v]) Q.push(v),inq[v]=1;
}
}
}
return lev[t]<oo;
}
int augmenting(const int &s,const int &t)
{
int delta=oo;
for(int v=t;v!=s;v=E[bef[v]].depa) delta=min(delta,residual(E[bef[v]]));
for(int v=t;v!=s;v=E[bef[v]].depa) E[bef[v]].flow+=delta,E[bef[v]^1].flow-=delta;
return delta;
}
int MinCost;
int MaxFlow(const int &s,const int &t)
{
int rep=0,delta;
MinCost=0;
while(augment(s,t))
{
delta=augmenting(s,t);
rep+=delta;
MinCost+=delta*lev[t];
}
return rep;
}
};
int main()
{
#ifdef dmdd
freopen(tag".inp","r",stdin); freopen(tag".out","w",stdout);
#endif // dmdd
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n,m,k,s,t;
cin>>n>>m>>k>>s>>t;
network net(n+1);
net.add_edge(n+1,s,k,0,1);
s=n+1;
int a,b,c,d;
vector< vector<int> > C,D;
C=D=vector< vector<int> >(n+1,vector<int>(n+1,-1));
loop(m)
{
cin>>a>>b>>c>>d;
C[a][b]=C[b][a]=c;
D[a][b]=D[b][a]=d;
}
for(int u=1;u<=n;u++)
for(int v=u+1;v<=n;v++)
if(D[u][v]>=0)
net.add_edge(u,v,D[u][v],C[u][v],0);
if(net.MaxFlow(s,t)==k)
{
cout<<net.MinCost<<"\n";
for(const auto &e: net.E)
if(e.depa<s && e.flow>0)
cout<<e.depa<<" "<<e.dest<<" "<<e.flow<<"\n";
cout<<"0 0 0";
}
else cout<<-1;
return 0;
}
Ly8vIG1pbmNvc3QgYnkgbXVvaWkKCi8vLyB2bi5zcG9qLmNvbS9wcm9ibGVtcy9NSU5DT1NULwoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgdGFnICJzcG9qIgojZGVmaW5lIG1heG4gMAojZGVmaW5lIG1heGMgMAojZGVmaW5lIG9vIDEwMDAwMDAwMDcKI2RlZmluZSBtaWQgKChsK3IpPj4xKQojZGVmaW5lIG1lc2V0KGEseCkgbWVtc2V0KGEseCxzaXplb2YoYSkpCiNkZWZpbmUgbG9vcCh4KSBmb3IoaW50IExvT3BFcj14O0xvT3BFci0tPjA7KQovLy8+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+CnN0cnVjdCBuZXR3b3JrewoKICAgIGludCBuOwogICAgLy8vZGF0YTogRSxhZGosbGV2LGN1cgogICAgdmVjdG9yPCB2ZWN0b3I8aW50PiA+IGFkajsKICAgIHZlY3RvcjxpbnQ+IGxldixpbnEsYmVmOwogICAgc3RydWN0IGVkZ2V7CiAgICAgICAgaW50IGRlcGEsZGVzdDsKICAgICAgICBpbnQgY2FwLGNvc3QsZmxvdzsKCiAgICAgICAgI2RlZmluZSByZXNpZHVhbChlKSAoKGUuZmxvdzwwPzA6ZS5jYXApLWUuZmxvdykKICAgICAgICAjZGVmaW5lIGNvc3QoZSkgKChlLmZsb3c8MD8tMToxKSplLmNvc3QpCiAgICB9OwogICAgdmVjdG9yPGVkZ2U+IEU7CgogICAgbmV0d29yaygpOiBuKDApLCBFKDApLCBhZGooMCksIGxldigwKSwgaW5xKDApLCBiZWYoMCkge307CgogICAgbmV0d29yayhjb25zdCBpbnQgJk4pOiBuKE4pLCBFKDApLCBhZGooTisxKSwgbGV2KE4rMSksIGlucShOKzEpLCBiZWYoTisxKSB7fTsKCiAgICB2b2lkIGFkZF9lZGdlKGNvbnN0IGludCAmdSxjb25zdCBpbnQgJnYsY29uc3QgaW50ICZjYXAsY29uc3QgaW50ICZjb3N0LGNvbnN0IGJvb2wgJmFyY3MpCiAgICB7CiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayhFLnNpemUoKSk7RS5wdXNoX2JhY2soe3UsdixjYXAsY29zdCwwfSk7CiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayhFLnNpemUoKSk7RS5wdXNoX2JhY2soe3YsdSxhcmNzPzA6Y2FwLGNvc3QsMH0pOwogICAgfQoKICAgIHF1ZXVlPGludD4gUTsKICAgIGJvb2wgYXVnbWVudChjb25zdCBpbnQgJnMsY29uc3QgaW50ICZ0KQogICAgewogICAgICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKSBsZXZbaV09b28sIGlucVtpXT0wLCBiZWZbaV09MDsKCiAgICAgICAgbGV2W3NdPTA7US5wdXNoKHMpO2lucVtzXT0xOwoKICAgICAgICBpbnQgdSx2OwogICAgICAgIGVkZ2UgZTsKICAgICAgICB3aGlsZShRLnNpemUoKSkKICAgICAgICB7CiAgICAgICAgICAgIHU9US5mcm9udCgpLFEucG9wKCksaW5xW3VdPWZhbHNlOwoKICAgICAgICAgICAgZm9yKGNvbnN0IGludCAmaWRlOiBhZGpbdV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGU9RVtpZGVdO3Y9ZS5kZXN0OwoKICAgICAgICAgICAgICAgIGlmKHJlc2lkdWFsKGUpPjAgJiYgbGV2W3VdK2Nvc3QoZSk8bGV2W3ZdKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGxldlt2XT1sZXZbdV0rY29zdChlKTsKICAgICAgICAgICAgICAgICAgICBiZWZbdl09aWRlOwogICAgICAgICAgICAgICAgICAgIGlmKCFpbnFbdl0pIFEucHVzaCh2KSxpbnFbdl09MTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gbGV2W3RdPG9vOwogICAgfQoKCiAgICBpbnQgYXVnbWVudGluZyhjb25zdCBpbnQgJnMsY29uc3QgaW50ICZ0KQogICAgewogICAgICAgIGludCBkZWx0YT1vbzsKICAgICAgICBmb3IoaW50IHY9dDt2IT1zO3Y9RVtiZWZbdl1dLmRlcGEpIGRlbHRhPW1pbihkZWx0YSxyZXNpZHVhbChFW2JlZlt2XV0pKTsKICAgICAgICBmb3IoaW50IHY9dDt2IT1zO3Y9RVtiZWZbdl1dLmRlcGEpIEVbYmVmW3ZdXS5mbG93Kz1kZWx0YSxFW2JlZlt2XV4xXS5mbG93LT1kZWx0YTsKCiAgICAgICAgcmV0dXJuIGRlbHRhOwogICAgfQoKICAgIGludCBNaW5Db3N0OwogICAgaW50IE1heEZsb3coY29uc3QgaW50ICZzLGNvbnN0IGludCAmdCkKICAgIHsKICAgICAgICBpbnQgcmVwPTAsZGVsdGE7CgogICAgICAgIE1pbkNvc3Q9MDsKCiAgICAgICAgd2hpbGUoYXVnbWVudChzLHQpKQogICAgICAgIHsKICAgICAgICAgICAgZGVsdGE9YXVnbWVudGluZyhzLHQpOwogICAgICAgICAgICByZXArPWRlbHRhOwogICAgICAgICAgICBNaW5Db3N0Kz1kZWx0YSpsZXZbdF07CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXA7CiAgICB9Cn07CmludCBtYWluKCkKewogICAgI2lmZGVmIGRtZGQKICAgIGZyZW9wZW4odGFnIi5pbnAiLCJyIixzdGRpbik7IGZyZW9wZW4odGFnIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgI2VuZGlmIC8vIGRtZGQKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKICAgIGludCBuLG0sayxzLHQ7CiAgICBjaW4+Pm4+Pm0+Pms+PnM+PnQ7CgogICAgbmV0d29yayBuZXQobisxKTsKICAgIG5ldC5hZGRfZWRnZShuKzEscyxrLDAsMSk7CiAgICBzPW4rMTsKCiAgICBpbnQgYSxiLGMsZDsKICAgIHZlY3RvcjwgdmVjdG9yPGludD4gPiBDLEQ7CiAgICBDPUQ9dmVjdG9yPCB2ZWN0b3I8aW50PiA+KG4rMSx2ZWN0b3I8aW50PihuKzEsLTEpKTsKCiAgICBsb29wKG0pCiAgICB7CiAgICAgICAgY2luPj5hPj5iPj5jPj5kOwogICAgICAgIENbYV1bYl09Q1tiXVthXT1jOwogICAgICAgIERbYV1bYl09RFtiXVthXT1kOwogICAgfQoKICAgIGZvcihpbnQgdT0xO3U8PW47dSsrKQogICAgICAgIGZvcihpbnQgdj11KzE7djw9bjt2KyspCiAgICAgICAgICAgIGlmKERbdV1bdl0+PTApCiAgICAgICAgICAgICAgICBuZXQuYWRkX2VkZ2UodSx2LERbdV1bdl0sQ1t1XVt2XSwwKTsKCiAgICBpZihuZXQuTWF4RmxvdyhzLHQpPT1rKQogICAgewogICAgICAgIGNvdXQ8PG5ldC5NaW5Db3N0PDwiXG4iOwoKICAgICAgICBmb3IoY29uc3QgYXV0byAmZTogbmV0LkUpCiAgICAgICAgICAgIGlmKGUuZGVwYTxzICYmIGUuZmxvdz4wKQogICAgICAgICAgICAgICAgY291dDw8ZS5kZXBhPDwiICI8PGUuZGVzdDw8IiAiPDxlLmZsb3c8PCJcbiI7CgogICAgICAgIGNvdXQ8PCIwIDAgMCI7CiAgICB9CiAgICBlbHNlIGNvdXQ8PC0xOwoKICAgIHJldHVybiAwOwp9Cgo=