玄关,最大流求条
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ldb long double
bool flo[210];
ll ans,inf=0x7f7f7f7f7f7f7f7f,f[210];
int n,m,x,a,b,c,head[210],tot=1,las[210];
struct node{
int to,nxt; ll val;
}edge[2010];
void _add(int l,int r){
edge[++tot].nxt=head[l]; edge[tot].to=r; edge[tot].val=c; head[l]=tot;
edge[++tot].nxt=head[r]; edge[tot].to=l; edge[tot].val=0; head[r]=tot;
return ;
}
bool bfs(){
memset(flo,0,sizeof(flo));
queue<int>qu; qu.push(1); flo[1]=1; f[1]=inf;
while(!qu.empty()){
int noww=qu.front(); qu.pop();
for(int i=head[noww];i>-1;i=edge[i].nxt){
if(edge[i].val==0) continue;
int nex=edge[i].to;
if(flo[nex]==1) continue;
qu.push(nex); flo[nex]=1; las[nex]=i;
f[nex]=min(f[noww],edge[i].val);
if(nex==n) return 1;
}
}
return 0;
}
void sum(){
int x=n;
while(x!=1){
int noww=las[x];
edge[noww].val-=f[n]; edge[noww^1].val+=f[n];
x=edge[noww^1].to;
}
ans=ans+f[n]; return ;
}
signed main(){
cin>>n>>m>>x;
memset(head,-1,sizeof(head));
for(int i=1;i<=n;i++){
scanf("%d%d%d",&a,&b,&c);
_add(a,b);
}
while(bfs()) sum();
if(ans==0) cout<<"Orz Ni Jinan Saint Cow!";
else if(x%ans==0) printf("%lld %lld",ans,x/ans);
else printf("%lld %lld",ans,x/ans+1);
return 0;
}