#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; int sz = 333; vector g[sz]; rep(i, m){ ll p, q, c; cin >> p >> q >> c; g[p].push_back({q, c}); } ll dp[n][sz][k+1]; rep(i, n) rep(j, sz) rep(l, k+1) dp[i][j][l] = 0; ll MOD = 1e9+7; rep(i, sz) dp[0][i][0] = 1; rep(i, n-1){ rep(j, sz){ 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; }