#include <bits/stdc++.h>
#define rep(i,n)for(int i=0;i<(n);i++)
using namespace std;
typedef pair<int,int>P;
typedef long long ll;

const int MOD=1000000007;
const int INF=0x3f3f3f3f;
const ll INFL=0x3f3f3f3f3f3f3f3f;

vector<P>E[30000];
vector<int>G[30000];
bool used[3000];

void dfs(int v){
	used[v]=true;
	for(int u:G[v]){
		if(!used[u]){
			dfs(u);
		}
	}
}

ll d[3000];

int main(){
	int n,m;cin>>n>>m;
	int e;cin>>e;
	rep(i,m){
		int a,b,c;scanf("%d%d%d",&a,&b,&c);a--;b--;
		E[a].push_back(P(c-e,b));
		G[b].push_back(a);
	}
	dfs(n-1);
	rep(i,n)d[i]=-INFL;
	d[0]=0;
	rep(i,n){
		bool flag=false;
		rep(v,n){
			if(d[v]==-INFL)continue;
			for(auto p:E[v]){
				if(d[p.second]<p.first+d[v]){
					d[p.second]=p.first+d[v];
					if(used[p.second])flag=true;
				}
			}
		}
		if(i==n-1&&flag){
			puts("-1");return 0;
		}
	}
	cout<<max(d[n-1],0LL)<<endl;
}