#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6 + 7;
const int inf = 1e11;
int head[N], dis[N], ecnt;
int n, m, x, s, t;
int pre[N], vis[N];
struct edge{
int next, to, val;
}e[N];
void addedge(int u, int v, int w){
e[ecnt].to = v;
e[ecnt].val = w;
e[ecnt].next = head[u];
head[u] = ecnt ++;
}
bool bfs(){
for(int i = 1; i <= n; i ++) vis[i] = 0;
vis[s] = 1;
dis[s] = inf;
queue<int> q;
q.push(s);
while(!q.empty()){
int u = q.front();
q.pop();
for(int i = head[u]; ~i; i = e[i].next){
int v = e[i].to;
if(vis[v] || e[i].val == 0) continue;
dis[v] = min(dis[u], e[i].val);
pre[v] = i;
vis[v] = 1;
q.push(v);
if(v == t) return 1;
}
}
return 0;
}
int EK(){
int ans = 0;
while(bfs()){
int x = t;
while(x != s){
int v = pre[x];
e[v].val -= dis[t];
e[v ^ 1].val += dis[t];
x = e[v ^ 1].to;
}
ans += dis[t];
}
return ans;
}
signed main(){
memset(head, -1, sizeof head);
cin >> n >> m >> x;
s = 1, t = n;
for(int i = 1; i <= m; i ++){
int a, b, c;
cin >> a >> b >> c;
addedge(a, b, c);
addedge(b, a, 0);
}
int t = EK();
if(t == 0){
cout << "Orz Ni Jinan Saint Cow!" << endl;
return 0;
}
cout << t << " " << ceil(x * 1.0 / t * 1.0);
return 0;
}
80分 wa#4#8