#include <bits/stdc++.h>
using namespace std;
#define ii pair<int, int>
#define iii pair<double, pair<int, int>>
#define fi first
#define se second
const int MAXN = 1e5+5;
const int MAXK = 12;
const double INF = 1e18;
int n, m, k, x, y, c;
vector<ii> a[MAXN];
double dist[MAXN][MAXK];
void dijk(int s)
{
for ( int i = 1; i <= n; i++ )
for ( int j = 0; j <= k; j++ )
dist[i][j] = INF;
priority_queue<iii, vector<iii>, greater<iii>> q;
dist[s][0] = 0;
q.push({0.0, {0, s}});
while (!q.empty())
{
double cost = q.top().fi;
int K = q.top().se.fi, u = q.top().se.se;
q.pop();
if ( u == n )
{
cout << fixed << setprecision(2) << cost;
exit(0);
}
if ( cost > dist[u][K] ) continue;
for ( ii e : a[u] )
{
double vcost = e.se;
int v = e.fi;
int power2 = 1;
for ( int i = 0; K + i <= k; i++ )
{
if ( cost + vcost/power2 < dist[v][K+i] )
{
dist[v][K+i] = cost + vcost/power2;
q.push({dist[v][K+i], {K+i, v}});
}
power2*=2;
}
}
}
}
int main()
{
ios::sync_with_stdio(0); cin.tie(0);
cin >> n >> m >> k;
for ( int i = 1; i <= m; i++ )
{
cin >> x >> y >> c;
a[x].push_back({y, c});
a[y].push_back({x, c});
}
dijk(1);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGlpIHBhaXI8aW50LCBpbnQ+CiNkZWZpbmUgaWlpIHBhaXI8ZG91YmxlLCBwYWlyPGludCwgaW50Pj4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZApjb25zdCBpbnQgTUFYTiA9IDFlNSs1Owpjb25zdCBpbnQgTUFYSyA9IDEyOwpjb25zdCBkb3VibGUgSU5GID0gMWUxODsKaW50IG4sIG0sIGssIHgsIHksIGM7CnZlY3RvcjxpaT4gYVtNQVhOXTsKCmRvdWJsZSBkaXN0W01BWE5dW01BWEtdOwp2b2lkIGRpamsoaW50IHMpCnsKICAgIGZvciAoIGludCBpID0gMTsgaSA8PSBuOyBpKysgKQogICAgICAgIGZvciAoIGludCBqID0gMDsgaiA8PSBrOyBqKysgKQogICAgICAgICAgICBkaXN0W2ldW2pdID0gSU5GOwogICAgcHJpb3JpdHlfcXVldWU8aWlpLCB2ZWN0b3I8aWlpPiwgZ3JlYXRlcjxpaWk+PiBxOwogICAgZGlzdFtzXVswXSA9IDA7CiAgICBxLnB1c2goezAuMCwgezAsIHN9fSk7CiAgICB3aGlsZSAoIXEuZW1wdHkoKSkKICAgIHsKICAgICAgICBkb3VibGUgY29zdCA9IHEudG9wKCkuZmk7CiAgICAgICAgaW50IEsgPSBxLnRvcCgpLnNlLmZpLCB1ID0gcS50b3AoKS5zZS5zZTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGlmICggdSA9PSBuICkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDIpIDw8IGNvc3Q7CiAgICAgICAgICAgIGV4aXQoMCk7CiAgICAgICAgfQogICAgICAgIGlmICggY29zdCA+IGRpc3RbdV1bS10gKSBjb250aW51ZTsKICAgICAgICBmb3IgKCBpaSBlIDogYVt1XSApCiAgICAgICAgewogICAgICAgICAgICBkb3VibGUgdmNvc3QgPSBlLnNlOwogICAgICAgICAgICBpbnQgdiA9IGUuZmk7CiAgICAgICAgICAgIGludCBwb3dlcjIgPSAxOwogICAgICAgICAgICBmb3IgKCBpbnQgaSA9IDA7IEsgKyBpIDw9IGs7IGkrKyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmICggY29zdCArIHZjb3N0L3Bvd2VyMiA8IGRpc3Rbdl1bSytpXSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZGlzdFt2XVtLK2ldID0gY29zdCArIHZjb3N0L3Bvd2VyMjsKICAgICAgICAgICAgICAgICAgICBxLnB1c2goe2Rpc3Rbdl1bSytpXSwge0sraSwgdn19KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBvd2VyMio9MjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsKICAgIGNpbiA+PiBuID4+IG0gPj4gazsKICAgIGZvciAoIGludCBpID0gMTsgaSA8PSBtOyBpKysgKQogICAgewogICAgICAgIGNpbiA+PiB4ID4+IHkgPj4gYzsKICAgICAgICBhW3hdLnB1c2hfYmFjayh7eSwgY30pOwogICAgICAgIGFbeV0ucHVzaF9iYWNrKHt4LCBjfSk7CiAgICB9CiAgICBkaWprKDEpOwogIHJldHVybiAwOwp9Cg==