CSES - Shared codeLink to this code: https://cses.fi/paste/65f7451fb43a3eda1adcb5/
#include<iostream>
using namespace std;
#include<climits>


#define N 101
#define mod 1000000007
long long arr[N][N];
long long I[N][N];
long long INF=4e18;


void mul(long long A[][N],long long B[][N],int dim)
{
	long long res[dim+1][dim+1];
	for(int i=0;i<dim;i++){
		for(int j=0;j<dim;j++)
		{
			res[i][j]=(A[i][0]+B[0][j])%mod;
			for(int k=1;k<dim;k++)
			{
				res[i][j]=min(res[i][j],(A[i][k]+B[k][j])%mod);
				res[i][j]%=mod;
			}
		}
	}
	for(int i=0;i<dim;i++)
	{
		for(int j=0;j<dim;j++)
		{
			A[i][j]=res[i][j];
		}
	}
}









void matrixMul(long long a[][N],int dim,long long x )
{
	for(int i=0;i<dim;i++)
	{
		for(int j=0;j<dim;j++)
		{
			if(i==j){
				I[i][j]=1;
			}
			else{
				I[i][j]=0;
			}
		}
	}
	long long n=x;
	while(n)
	{
		if(n%2)
		{
			mul(I,a,dim);
			n--;
		}
		else{
			mul(a,a,dim);
			n=n/2;
		}
	}
	for(int i=0;i<dim;i++)
	{
		for(int j=0;j<dim;j++)
		{
			a[i][j]=I[i][j];
		}
	}
	
	
	
}















int main()
{
	int n;
	cin>>n;
	int m;
	cin>>m;
	long long k;
	cin>>k;
	long long ar[101][101];
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			ar[i][j]=INF;
		}
	}
	for(int i=0;i<m;i++)
	{
		int start,end;
		int weight;
		cin>>start>>end>>weight;
		ar[start-1][end-1]=weight;
	}
	matrixMul(ar,n,k);
	cout<<ar[0][n-1]<<"\n";
}