#include struct Element{ int a,b; int c; }; long long f[305][305][305]; Element e[305]; const long long mod = 1e9+7; int main(){ int n,m,k; scanf("%d%d%d",&n,&m,&k); for(int i = 1; i <= m; i++){ int p,q,c; scanf("%d%d%d",&p,&q,&c); e[i].a = p, e[i].b = q, e[i].c = c; f[2][q][c] = (f[2][q][c]+1)%mod; } for(int i = 2; i <= n-1; i++){ for(int j = 0; j <= k; j++){ for(int t = 1; t <= m; t++){ int nextK = j+e[t].c; if(nextK<=k){ //printf("from %d %d %d to %d %d %d\n",i,e[t].a,j,i+1,e[t].b,nextK); f[i+1][e[t].b][nextK] += f[i][e[t].a][j]; if(f[i+1][e[t].b][nextK]>=mod) f[i+1][e[t].b][nextK] -= mod; } } } } long long ans = 0; for(int i = 1; i <= 300; i++) ans = (ans+f[n][i][k])%mod; printf("%lld\n",ans); return 0; }