#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
long double T;
if(!(cin >> n >> m >> T)) return 0;
vector<vector<pair<int,long double>>> g(n+1);
for (int i = 0; i < m; ++i) {
int u, v;
long double l, c;
cin >> u >> v >> l >> c;
long double w = sqrtl(l * c); // trọng số w = sqrt(l*c)
g[u].push_back({v, w});
g[v].push_back({u, w});
}
const long double INF = 1e100L;
vector<long double> dist(n+1, INF);
priority_queue<pair<long double,int>,
vector<pair<long double,int>>,
greater<pair<long double,int>>> pq;
dist[1] = 0;
pq.push({0,1});
while(!pq.empty()){
auto [d,u] = pq.top(); pq.pop();
if(d != dist[u]) continue;
if(u == n) break;
for(auto [v,w] : g[u]){
if(dist[v] > d + w){
dist[v] = d + w;
pq.push({dist[v], v});
}
}
}
long double S = dist[n];
long double ans = (S*S) / T; // (sum w)^2 / T
cout.setf(std::ios::fixed);
cout << setprecision(10) << ans << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBpbnQgbiwgbTsKICAgIGxvbmcgZG91YmxlIFQ7CiAgICBpZighKGNpbiA+PiBuID4+IG0gPj4gVCkpIHJldHVybiAwOwoKICAgIHZlY3Rvcjx2ZWN0b3I8cGFpcjxpbnQsbG9uZyBkb3VibGU+Pj4gZyhuKzEpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyArK2kpIHsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBsb25nIGRvdWJsZSBsLCBjOwogICAgICAgIGNpbiA+PiB1ID4+IHYgPj4gbCA+PiBjOwogICAgICAgIGxvbmcgZG91YmxlIHcgPSBzcXJ0bChsICogYyk7ICAgICAgICAgIC8vIHRy4buNbmcgc+G7kSB3ID0gc3FydChsKmMpCiAgICAgICAgZ1t1XS5wdXNoX2JhY2soe3YsIHd9KTsKICAgICAgICBnW3ZdLnB1c2hfYmFjayh7dSwgd30pOwogICAgfQoKICAgIGNvbnN0IGxvbmcgZG91YmxlIElORiA9IDFlMTAwTDsKICAgIHZlY3Rvcjxsb25nIGRvdWJsZT4gZGlzdChuKzEsIElORik7CiAgICBwcmlvcml0eV9xdWV1ZTxwYWlyPGxvbmcgZG91YmxlLGludD4sCiAgICAgICAgICAgICAgICAgICB2ZWN0b3I8cGFpcjxsb25nIGRvdWJsZSxpbnQ+PiwKICAgICAgICAgICAgICAgICAgIGdyZWF0ZXI8cGFpcjxsb25nIGRvdWJsZSxpbnQ+Pj4gcHE7CgogICAgZGlzdFsxXSA9IDA7CiAgICBwcS5wdXNoKHswLDF9KTsKICAgIHdoaWxlKCFwcS5lbXB0eSgpKXsKICAgICAgICBhdXRvIFtkLHVdID0gcHEudG9wKCk7IHBxLnBvcCgpOwogICAgICAgIGlmKGQgIT0gZGlzdFt1XSkgY29udGludWU7CiAgICAgICAgaWYodSA9PSBuKSBicmVhazsKICAgICAgICBmb3IoYXV0byBbdix3XSA6IGdbdV0pewogICAgICAgICAgICBpZihkaXN0W3ZdID4gZCArIHcpewogICAgICAgICAgICAgICAgZGlzdFt2XSA9IGQgKyB3OwogICAgICAgICAgICAgICAgcHEucHVzaCh7ZGlzdFt2XSwgdn0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxvbmcgZG91YmxlIFMgPSBkaXN0W25dOwogICAgbG9uZyBkb3VibGUgYW5zID0gKFMqUykgLyBUOyAgICAgICAgICAgICAgIC8vIChzdW0gdyleMiAvIFQKICAgIGNvdXQuc2V0ZihzdGQ6Omlvczo6Zml4ZWQpOyAKICAgIGNvdXQgPDwgc2V0cHJlY2lzaW9uKDEwKSA8PCBhbnMgPDwgIlxuIjsKICAgIHJldHVybiAwOwp9Cg==