def aa(mat,n): global k,mod ans=[[0]*k**2 for i in range(k**2)] for i in range(k): ans[0][i]=1 while n: if n&1: ans=bb(ans,mat) n>>=1;mat=bb(mat,mat) res=0 for i in range(k): for j in range(k): res+=ans[i][j*k] print(res%mod) def bb(q,w): global k,mod res=[[0]*k**2 for i in range(k**2)] for i in range(k**2): for j in range(k**2): for l in range(k**2): res[j][l]+=q[j][i]*w[i][l]%mod res[j][l]%=mod return res k,m,n=map(int,input().split());mod=10**9+7 mat=[[0]*k**2 for i in range(k**2)] for i in range(m): a,b,c=map(int,input().split()) mat[(a-1)*k+b-1][(b-1)*k+c-1]+=1 aa(mat,n-2)