#include<bits/stdc++.h>
using namespace std;
long long n,m,p,f[2505],ans;
struct data{
	int x,y,v;
}a[5005];
void solve(){
	for(int i=0;i<n*2;i++)
		for(int j=1;j<=m;j++){
			int x=a[j].x,y=a[j].y,v=a[j].v;
			if(f[x]==-1e18)continue;
			if(f[x]+v>f[y])f[y]=i<n-1?f[x]+v:1e18;
		}
}
int main(){
	scanf("%lld%lld%lld",&n,&m,&p);
	for(int i=1;i<n;i++)f[i]=-1e18;
	for(int i=1;i<=m;i++)scanf("%lld%lld%lld",&a[i].x,&a[i].y,&a[i].v),a[i].x--,a[i].y--,a[i].v-=p;
	solve();ans=f[n-1];
	printf("%lld\n",ans!=1e18?max(0ll,ans):-1);
	return 0;
}