#include <stdio.h>
#include <vector>
#include <algorithm>
#include <queue>
#include <functional>
#define N 100005
using namespace std;
typedef pair<long long, int> pli;
int n, m,k;
vector<pli> edge[N];
int cnt[N];
priority_queue<long long> dist[N];
int main()
{
scanf("%d %d %d", &n, &m, &k);
for (int i = 1; i <= m; i++) {
int x, y, z;
scanf("%d %d %d", &x, &y, &z);
edge[x].push_back(make_pair(z, y));
edge[y].push_back(make_pair(z, x));
}
int st = 1;
int dst = n;
priority_queue<pli, vector<pli>, greater<pli> > pq;
pq.push(make_pair(0, st));
dist[st].push(0);
while (!pq.empty())
{
pli tmp = pq.top();
pq.pop();
int x = tmp.second;
long long z = tmp.first;
if (z > dist[x].top()) continue;
for (int i = 0; i < edge[x].size(); i++) {
int y = edge[x][i].second;
long long cost = z + edge[x][i].first;
if (dist[y].size() < k) {
dist[y].push(cost);
pq.push(make_pair(cost,y));
}
else if (dist[y].top() > cost) {
dist[y].push(cost);
pq.push(make_pair(cost, y));
dist[y].pop();
}
}
}
if (dist[dst].size() < k) printf("-1\n");
else printf("%lld\n", dist[dst].top());
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKI2RlZmluZSBOIDEwMDAwNQogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKdHlwZWRlZiBwYWlyPGxvbmcgbG9uZywgaW50PiBwbGk7CiAKaW50IG4sIG0sazsKdmVjdG9yPHBsaT4gZWRnZVtOXTsKaW50IGNudFtOXTsKcHJpb3JpdHlfcXVldWU8bG9uZyBsb25nPiBkaXN0W05dOwogCmludCBtYWluKCkKewogICAgc2NhbmYoIiVkICVkICVkIiwgJm4sICZtLCAmayk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspIHsKICAgICAgICBpbnQgeCwgeSwgejsKICAgICAgICBzY2FuZigiJWQgJWQgJWQiLCAmeCwgJnksICZ6KTsKICAgICAgICBlZGdlW3hdLnB1c2hfYmFjayhtYWtlX3BhaXIoeiwgeSkpOwogICAgICAgIGVkZ2VbeV0ucHVzaF9iYWNrKG1ha2VfcGFpcih6LCB4KSk7CiAgICB9CiAgICBpbnQgc3QgPSAxOwogICAgaW50IGRzdCA9IG47CiAKICAgIHByaW9yaXR5X3F1ZXVlPHBsaSwgdmVjdG9yPHBsaT4sIGdyZWF0ZXI8cGxpPiA+IHBxOwogICAgIAogICAgcHEucHVzaChtYWtlX3BhaXIoMCwgc3QpKTsKICAgIGRpc3Rbc3RdLnB1c2goMCk7CiAKICAgIHdoaWxlICghcHEuZW1wdHkoKSkKICAgIHsKICAgICAgICBwbGkgdG1wID0gcHEudG9wKCk7CiAgICAgICAgcHEucG9wKCk7CiAKICAgICAgICBpbnQgeCA9IHRtcC5zZWNvbmQ7CiAgICAgICAgbG9uZyBsb25nIHogPSB0bXAuZmlyc3Q7CiAKICAgICAgICBpZiAoeiA+IGRpc3RbeF0udG9wKCkpIGNvbnRpbnVlOwogCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBlZGdlW3hdLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgIGludCB5ID0gZWRnZVt4XVtpXS5zZWNvbmQ7CiAgICAgICAgICAgIGxvbmcgbG9uZyBjb3N0ID0geiArIGVkZ2VbeF1baV0uZmlyc3Q7CiAgICAgICAgICAgIGlmIChkaXN0W3ldLnNpemUoKSA8IGspIHsKICAgICAgICAgICAgICAgIGRpc3RbeV0ucHVzaChjb3N0KTsKICAgICAgICAgICAgICAgIHBxLnB1c2gobWFrZV9wYWlyKGNvc3QseSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGRpc3RbeV0udG9wKCkgPiBjb3N0KSB7CiAgICAgICAgICAgICAgICBkaXN0W3ldLnB1c2goY29zdCk7CiAgICAgICAgICAgICAgICBwcS5wdXNoKG1ha2VfcGFpcihjb3N0LCB5KSk7CiAgICAgICAgICAgICAgICBkaXN0W3ldLnBvcCgpOwogICAgICAgICAgICB9ICAgICAgIAogICAgICAgIH0KICAgIH0KIAogICAgIAogICAgaWYgKGRpc3RbZHN0XS5zaXplKCkgPCBrKSBwcmludGYoIi0xXG4iKTsKICAgIGVsc2UgcHJpbnRmKCIlbGxkXG4iLCBkaXN0W2RzdF0udG9wKCkpOwogICAgIAogCiAgICByZXR1cm4gMDsKfQ==