#include <bits/stdc++.h>
using namespace std;
using ll=long long;
/*
Ｐ以上のループがあるかどうか
ゴールまでの途中と、ゴールしてからと。

ベルマンフォード法なるもの。
ＤＰは負には使えない、ワーシャルフロイドは3乗。

*/
ll N,M,P,oo=1e9;
vector<vector<pair<ll,ll>>> V(2510);
vector<bool> is_parent(2510);
vector<ll> S(2510, -oo);

void dfs(ll n){
  is_parent[n]=true;
  for(auto v: V[n]){
    ll v1=v.first, v2=v.second;
    if(S[v1]<min(oo, S[n]+v2)){
      S[v1]=(is_parent[v1] || S[n]==oo)?oo: S[n]+v2;
      dfs(v1);
    }
  }
  is_parent[n]=false;
};

int main(){
  S[1]=0;
  cin>>N>>M>>P;
  for(ll i=0; i<M; i++){
    ll a,b,c; cin>>a>>b>>c;
    V[a].push_back({b,c-P});
  }
  dfs(1);
  cout<<(S[N]==oo? -1: max(0LL,S[N]))<<endl;
}