#include<bits/stdc++.h>
using namespace std;
int n,m,k,u[20005],v[20005],a[20005],road[10005][10005];
long long dp[10005];
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
dp[i]=9e18;
for(int j=1;j<=n;j++){
road[i][j]=-1;
}
}
for(int i=1;i<=m;i++){
cin>>u[i]>>v[i]>>a[i];
road[u[i]][v[i]]=a[i];
}
dp[1]=k;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j){
continue;
}
if(road[i][j]!=-1){
if(dp[i]>=road[i][j]){
dp[j]=min(dp[j],dp[i]+1);
}else{
dp[j]=min(dp[j],(long long)road[i][j]+1);
}
}
}
}
if(dp[n]==9e18){
cout<<"-1";
}else{
cout<<ceil(1.0*dp[n]/k)*k;
}
return 0;
}