#include #define rep(i,n) for(int i=(0);i<(n);i++) using namespace std; typedef long long ll; typedef pair pll; template bool chmax(T &a, const T &b) { if (a bool chmin(T &a, const T &b) { if (a>b) { a=b; return 1; } return 0; } int main(){ cin.tie(0); ios::sync_with_stdio(false); ll n, m, k; cin >> n >> m >> k; vector g[301]; rep(i, m){ ll p, q, c; cin >> p >> q >> c; g[p].push_back({q, c}); } ll dp[n][313][k]; rep(i, n) rep(j, 313) rep(l, k) dp[i][j][l] = 0; ll MOD = 1e9+7; rep(i, 301) dp[0][i][0] = 1; rep(i, n-1){ rep(j, 301){ rep(l, k+1){ for(pll x : g[j]){ ll q = x.first, c = x.second; if(l+c <= k) { cout << i << "," << j << "," << l << endl; dp[i+1][q][l+c] += dp[i][j][l]; dp[i+1][q][l+c] %= MOD; } } } } } ll ans = 0; rep(j, 301){ // cout << j << "," << dp[n-1][j][k] << endl; ans += dp[n-1][j][k]; ans %= MOD; } cout << ans << endl; }