#include <bits/stdc++.h>
typedef long long ll;
#define FOR(i,a,b) for(ll i=(a);i<(b);i++)
#define REP(i,a) FOR(i,0,a)
using namespace std;
const ll MAX_N=2500,INF=1e18;
ll N,M,pe;
typedef pair<ll,ll> P;
vector<P> G[MAX_N],rG[MAX_N];
ll dst[MAX_N],rdst[MAX_N];
vector<ll> negcyc,rnegcyc;
void bell(ll s,vector<P> *gra,ll *d,vector<ll> &ncyc){
	fill(d,d+N,INF);
	d[s]=0;
	REP(i,N){
		REP(v,N){
			if(d[v]==INF)continue;
			for(auto e:gra[v]){
				if(d[e.first]>d[v]+e.second){
					d[e.first]=d[v]+e.second;
					if(i==N-1)ncyc.push_back(v);
				}
			}
		}
	}
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>N>>M>>pe;
	REP(i,M){
		ll a,b,c;
		cin>>a>>b>>c;
		a--;
		b--;
		G[a].push_back(P(b,pe-c));
		rG[b].push_back(P(a,pe-c));
	}
	bell(0,G,dst,negcyc);
	bell(N-1,rG,rdst,rnegcyc);
	bool flg=false;
	for(auto v:negcyc){
		if(rdst[v]!=INF){
//			cout<<v<<endl;
			flg=true;
		}
	}
	if(flg){
		cout<<-1<<endl;
	}else{
		cout<<max(-dst[N-1],0ll)<<endl;
	}
}