#include <bits/stdc++.h>
#define __builtin_popcount __builtin_popcountll
#define BIT(x, i) (((x)>> (i))& (1LL))
#define MASK(x) (1LL<< (x))
#define MOD 1000000007
#define ll long long
using namespace std;
const int maxm= (int)1e6, maxn= (int)1e5, maxb= (int)1e3, maxval= (int)1e7;
ll INF= (ll)1e18;
struct Node{
ll dis;
int id, cnt;
Node(ll _dis, int _id, int _cnt){
dis= _dis;
id= _id;
cnt= _cnt;
}
};
struct cmp{
bool operator () (Node x, Node y){
return x.dis> y.dis;
}
};
int n, m, k;
bool P[maxn+ 2][10], primes[maxval+ 5];
ll d[maxn+ 2][10], ans;
vector< pair<int, int> > adj[maxn+ 5];
void dijkstra(int st) {
for(int i= 1; i<= n; i++){
for(int j= 0; j<= k; j++){
P[i][j]= false;
d[i][j]= (ll)1e18;
}
}
d[st][0] = 0;
priority_queue<Node , vector<Node>, cmp > h;
h.push(Node(0, st, 0));
while(!h.empty()) {
Node x = h.top();
h.pop();
int u = x.id, state= x.cnt;
if(P[u][state] == true) continue;
P[u][state] = true;
for(auto e : adj[u]) {
int v = e.first, w = e.second;
int nstate= state+ primes[w];
if((nstate<= k)&& (d[v][nstate] > d[u][state] + w)){
d[v][nstate] = d[u][state] + w;
h.push(Node(d[v][nstate], v, nstate));
}
}
}
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);
cin>> n>> m>> k;
for(int i= 1; i<= m; i++){
int u, v, w;
cin>> u>> v>> w;
adj[u].push_back(make_pair(v, w));
adj[v].push_back(make_pair(u, w));
}
for(int i= 1; i<= maxval; i++) primes[i]= true;
primes[0] = primes[1] = false;
for (int i = 2; i * i <= maxval; i++) {
if (primes[i]) {
for (int j = i * i; j <= maxval; j += i) {
primes[j] = false;
}
}
}
ans= INF;
dijkstra(1);
for(int i= 0; i<= k; i++){
ans= min(ans, d[n][i]);
}
if(ans== INF) cout<< -1;
else cout<< ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIF9fYnVpbHRpbl9wb3Bjb3VudCBfX2J1aWx0aW5fcG9wY291bnRsbAojZGVmaW5lIEJJVCh4LCBpKSAoKCh4KT4+IChpKSkmICgxTEwpKQojZGVmaW5lIE1BU0soeCkgKDFMTDw8ICh4KSkKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwojZGVmaW5lIGxsIGxvbmcgbG9uZwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtYXhtPSAoaW50KTFlNiwgbWF4bj0gKGludCkxZTUsIG1heGI9IChpbnQpMWUzLCBtYXh2YWw9IChpbnQpMWU3OwoKbGwgSU5GPSAobGwpMWUxODsKCnN0cnVjdCBOb2RlewogICAgbGwgZGlzOwogICAgaW50IGlkLCBjbnQ7CiAgICBOb2RlKGxsIF9kaXMsIGludCBfaWQsIGludCBfY250KXsKICAgICAgICBkaXM9IF9kaXM7CiAgICAgICAgaWQ9IF9pZDsKICAgICAgICBjbnQ9IF9jbnQ7CiAgICB9Cn07CgpzdHJ1Y3QgY21wewogICAgYm9vbCBvcGVyYXRvciAoKSAoTm9kZSB4LCBOb2RlIHkpewogICAgICAgIHJldHVybiB4LmRpcz4geS5kaXM7CiAgICB9Cn07CgppbnQgbiwgbSwgazsKYm9vbCBQW21heG4rIDJdWzEwXSwgcHJpbWVzW21heHZhbCsgNV07CmxsIGRbbWF4bisgMl1bMTBdLCBhbnM7CnZlY3RvcjwgcGFpcjxpbnQsIGludD4gPiBhZGpbbWF4bisgNV07Cgp2b2lkIGRpamtzdHJhKGludCBzdCkgewogICAgZm9yKGludCBpPSAxOyBpPD0gbjsgaSsrKXsKICAgICAgICBmb3IoaW50IGo9IDA7IGo8PSBrOyBqKyspewogICAgICAgICAgICBQW2ldW2pdPSBmYWxzZTsKICAgICAgICAgICAgZFtpXVtqXT0gKGxsKTFlMTg7CiAgICAgICAgfQogICAgfQoKICAgIGRbc3RdWzBdID0gMDsKICAgIHByaW9yaXR5X3F1ZXVlPE5vZGUgLCB2ZWN0b3I8Tm9kZT4sIGNtcCA+IGg7CiAgICBoLnB1c2goTm9kZSgwLCBzdCwgMCkpOwoKICAgIHdoaWxlKCFoLmVtcHR5KCkpIHsKICAgICAgICBOb2RlIHggPSBoLnRvcCgpOwogICAgICAgIGgucG9wKCk7CgogICAgICAgIGludCB1ID0geC5pZCwgc3RhdGU9IHguY250OwogICAgICAgIGlmKFBbdV1bc3RhdGVdID09IHRydWUpICAgIGNvbnRpbnVlOwoKICAgICAgICBQW3VdW3N0YXRlXSA9IHRydWU7CiAgICAgICAgZm9yKGF1dG8gZSA6IGFkalt1XSkgewogICAgICAgICAgICBpbnQgdiA9IGUuZmlyc3QsIHcgPSBlLnNlY29uZDsKICAgICAgICAgICAgaW50IG5zdGF0ZT0gc3RhdGUrIHByaW1lc1t3XTsKICAgICAgICAgICAgaWYoKG5zdGF0ZTw9IGspJiYgKGRbdl1bbnN0YXRlXSA+IGRbdV1bc3RhdGVdICsgdykpewogICAgICAgICAgICAgICAgZFt2XVtuc3RhdGVdID0gZFt1XVtzdGF0ZV0gKyB3OwogICAgICAgICAgICAgICAgaC5wdXNoKE5vZGUoZFt2XVtuc3RhdGVdLCB2LCBuc3RhdGUpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7CiAgICBjaW4+PiBuPj4gbT4+IGs7CiAgICBmb3IoaW50IGk9IDE7IGk8PSBtOyBpKyspewogICAgICAgIGludCB1LCB2LCB3OwogICAgICAgIGNpbj4+IHU+PiB2Pj4gdzsKICAgICAgICBhZGpbdV0ucHVzaF9iYWNrKG1ha2VfcGFpcih2LCB3KSk7CiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayhtYWtlX3BhaXIodSwgdykpOwogICAgfQogICAgZm9yKGludCBpPSAxOyBpPD0gbWF4dmFsOyBpKyspICBwcmltZXNbaV09IHRydWU7CiAgICBwcmltZXNbMF0gPSBwcmltZXNbMV0gPSBmYWxzZTsKCiAgICBmb3IgKGludCBpID0gMjsgaSAqIGkgPD0gbWF4dmFsOyBpKyspIHsKICAgICAgICBpZiAocHJpbWVzW2ldKSB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSBpICogaTsgaiA8PSBtYXh2YWw7IGogKz0gaSkgewogICAgICAgICAgICAgICAgcHJpbWVzW2pdID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBhbnM9IElORjsKICAgIGRpamtzdHJhKDEpOwogICAgZm9yKGludCBpPSAwOyBpPD0gazsgaSsrKXsKICAgICAgICBhbnM9IG1pbihhbnMsIGRbbl1baV0pOwogICAgfQogICAgaWYoYW5zPT0gSU5GKSAgIGNvdXQ8PCAtMTsKICAgIGVsc2UgICAgY291dDw8IGFuczsKICAgIHJldHVybiAwOwp9Cg==