#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;
int n, m, k, su[maxn+ 2], sv[maxn+ 2], sw[maxn+ 2];
bool P[maxn+ 2], primes[maxval+ 2];
ll d[5][maxn+ 2], ans;
vector< pair<int, int> > adj[maxn+ 5];
void dijkstra(int root, int st) {
for(int i= 1; i<= n; i++){
P[i]= false;
d[root][i]= (ll)1e18;
}
d[root][st] = 0;
priority_queue<pair<ll, int> , vector< pair<ll, int> >, greater< pair<ll, int> > > h;
h.push(make_pair(d[root][st], st));
while(!h.empty()) {
pair<ll, int> x = h.top();
h.pop();
int u = x.second;
if(P[u] == true) continue;
P[u] = true;
for(auto e : adj[u]) {
int v = e.first, w = e.second;
if(primes[w]== true) continue;
if(d[root][v] > d[root][u] + w) {
d[root][v] = d[root][u] + w;
h.push(make_pair(d[root][v], v));
}
}
}
}
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));
su[i]= u;
sv[i]= v;
sw[i]= 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(0, 1);
dijkstra(1, n);
// khong di qua canh nao nguyen to
ans= min(ans, d[0][n]);
// di qua 1 canh nguyen to
for(int i= 1; i<= m; i++){
ans= min({ans, d[0][su[i]]+ sw[i]+ d[1][sv[i]], d[0][sv[i]]+ sw[i]+ d[1][su[i]]});
}
if(ans== INF) cout<< -1;
else cout<< ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIF9fYnVpbHRpbl9wb3Bjb3VudCBfX2J1aWx0aW5fcG9wY291bnRsbAojZGVmaW5lIEJJVCh4LCBpKSAoKCh4KT4+IChpKSkmICgxTEwpKQojZGVmaW5lIE1BU0soeCkgKDFMTDw8ICh4KSkKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwojZGVmaW5lIGxsIGxvbmcgbG9uZwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtYXhtPSAoaW50KTFlNiwgbWF4bj0gKGludCkxZTUsIG1heGI9IChpbnQpMWUzLCBtYXh2YWw9IChpbnQpMWU3OwoKbGwgSU5GPSAobGwpMWUxODsKCmludCBuLCBtLCBrLCBzdVttYXhuKyAyXSwgc3ZbbWF4bisgMl0sIHN3W21heG4rIDJdOwpib29sIFBbbWF4bisgMl0sIHByaW1lc1ttYXh2YWwrIDJdOwpsbCBkWzVdW21heG4rIDJdLCBhbnM7CnZlY3RvcjwgcGFpcjxpbnQsIGludD4gPiBhZGpbbWF4bisgNV07Cgp2b2lkIGRpamtzdHJhKGludCByb290LCBpbnQgc3QpIHsKICAgIGZvcihpbnQgaT0gMTsgaTw9IG47IGkrKyl7CiAgICAgICAgUFtpXT0gZmFsc2U7CiAgICAgICAgZFtyb290XVtpXT0gKGxsKTFlMTg7CiAgICB9CgogICAgZFtyb290XVtzdF0gPSAwOwogICAgcHJpb3JpdHlfcXVldWU8cGFpcjxsbCwgaW50PiAsIHZlY3RvcjwgcGFpcjxsbCwgaW50PiA+LCBncmVhdGVyPCBwYWlyPGxsLCBpbnQ+ID4gPiBoOwogICAgaC5wdXNoKG1ha2VfcGFpcihkW3Jvb3RdW3N0XSwgc3QpKTsKCiAgICB3aGlsZSghaC5lbXB0eSgpKSB7CiAgICAgICAgcGFpcjxsbCwgaW50PiB4ID0gaC50b3AoKTsKICAgICAgICBoLnBvcCgpOwoKICAgICAgICBpbnQgdSA9IHguc2Vjb25kOwogICAgICAgIGlmKFBbdV0gPT0gdHJ1ZSkgICAgY29udGludWU7CgogICAgICAgIFBbdV0gPSB0cnVlOwogICAgICAgIGZvcihhdXRvIGUgOiBhZGpbdV0pIHsKICAgICAgICAgICAgaW50IHYgPSBlLmZpcnN0LCB3ID0gZS5zZWNvbmQ7CiAgICAgICAgICAgIGlmKHByaW1lc1t3XT09IHRydWUpICAgIGNvbnRpbnVlOwogICAgICAgICAgICBpZihkW3Jvb3RdW3ZdID4gZFtyb290XVt1XSArIHcpIHsKICAgICAgICAgICAgICAgIGRbcm9vdF1bdl0gPSBkW3Jvb3RdW3VdICsgdzsKICAgICAgICAgICAgICAgIGgucHVzaChtYWtlX3BhaXIoZFtyb290XVt2XSwgdikpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTsKICAgIGNpbj4+IG4+PiBtPj4gazsKICAgIGZvcihpbnQgaT0gMTsgaTw9IG07IGkrKyl7CiAgICAgICAgaW50IHUsIHYsIHc7CiAgICAgICAgY2luPj4gdT4+IHY+PiB3OwogICAgICAgIGFkalt1XS5wdXNoX2JhY2sobWFrZV9wYWlyKHYsIHcpKTsKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKG1ha2VfcGFpcih1LCB3KSk7CiAgICAgICAgc3VbaV09IHU7CiAgICAgICAgc3ZbaV09IHY7CiAgICAgICAgc3dbaV09IHc7CiAgICB9CiAgICBmb3IoaW50IGk9IDE7IGk8PSBtYXh2YWw7IGkrKykgIHByaW1lc1tpXT0gdHJ1ZTsKICAgIHByaW1lc1swXSA9IHByaW1lc1sxXSA9IGZhbHNlOwoKICAgIGZvciAoaW50IGkgPSAyOyBpICogaSA8PSBtYXh2YWw7IGkrKykgewogICAgICAgIGlmIChwcmltZXNbaV0pIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IGkgKiBpOyBqIDw9IG1heHZhbDsgaiArPSBpKSB7CiAgICAgICAgICAgICAgICBwcmltZXNbal0gPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGFucz0gSU5GOwogICAgZGlqa3N0cmEoMCwgMSk7CiAgICBkaWprc3RyYSgxLCBuKTsKICAgIC8vIGtob25nIGRpIHF1YSBjYW5oIG5hbyBuZ3V5ZW4gdG8KICAgIGFucz0gbWluKGFucywgZFswXVtuXSk7CiAgICAvLyBkaSBxdWEgMSBjYW5oIG5ndXllbiB0bwogICAgZm9yKGludCBpPSAxOyBpPD0gbTsgaSsrKXsKICAgICAgICBhbnM9IG1pbih7YW5zLCBkWzBdW3N1W2ldXSsgc3dbaV0rIGRbMV1bc3ZbaV1dLCBkWzBdW3N2W2ldXSsgc3dbaV0rIGRbMV1bc3VbaV1dfSk7CiAgICB9CiAgICBpZihhbnM9PSBJTkYpICAgY291dDw8IC0xOwogICAgZWxzZSAgICBjb3V0PDwgYW5zOwogICAgcmV0dXJuIDA7Cn0K