A=10**9+7 N,M,K=map(int,input().split()) S=300 E=[[] for _ in range(S+1)] F=[[] for _ in range(S+1)] for _ in range(M): p,q,c=map(int,input().split()) E[p].append((q,c)) F[q].append((p,c)) Y=0 for f in range(1,S+1): X=[[[0]*(K+1) for _ in range(S+1)] for _ in range(N)] #X[n][a][k]...n個目のコードがaで総複雑度がk X[0][f][0]=1 for n in range(1,N): for a in range(1,S+1): for (q,c) in F[a]: for k in range(c,K+1): X[n][a][k]=(X[n][a][k]+X[n-1][q][k-c])%A for a in range(1,S+1): Y=(Y+X[-1][a][-1])%A print(Y)