#include using namespace std; long long MOD = 1000000007; int main(){ int N, M, K; cin >> N >> M >> K; vector>> E(300); for (int i = 0; i < M; i++){ int P, Q, C; cin >> P >> Q >> C; P--; Q--; E[P].push_back(make_pair(C, Q)); } vector>> dp(N, vector>(300, vector(K + 1, 0))); for (int i = 0; i < 300; i++){ dp[0][i][0] = 1; } for (int i = 0; i < N - 1; i++){ for (int j = 0; j < 300; j++){ for (int k = 0; k <= K; k++){ for (auto P : E[j]){ int com = P.first; int nxt = P.second; if (k + com <= K){ dp[i + 1][nxt][k + com] += dp[i][j][k]; dp[i + 1][nxt][k + com] %= MOD; } } } } } long long ans = 0; for (int i = 0; i < 300; i++){ ans += dp[N - 1][i][K]; } ans %= MOD; cout << ans << endl; }