fun main() { val builder = StringBuilder() val allCodeNum = 300 val mod = 1000000007L val (n, m, k) = readInputLine().split(" ").map { it.toInt() } val codes = Array(allCodeNum) { mutableListOf>() } repeat(m) { val (p, q, c) = readInputLine().split(" ").map { it.toInt() } codes[p - 1].add(Pair(q - 1, c)) } // dp[step][complex][last code] val dp = Array(n - 1) { Array(k + 1) { LongArray(allCodeNum) } } for (i in 0 until allCodeNum) { for (c in codes[i]) { if (c.second <= k) { dp[0][c.second][c.first] += 1L } } } for (i in 0 until n - 2) { for (j in 0..k) { for (l in 0 until allCodeNum) { if (dp[i][j][l] != 0L) { for (c in codes[l]) { if (j + c.second <= k) { dp[i + 1][j + c.second][c.first] += dp[i][j][l] dp[i + 1][j + c.second][c.first] %= mod } } } } } } var ans = 0L for (i in 0 until allCodeNum) { ans += dp[n - 2][k][i] ans %= mod } builder.appendln(ans) print(builder.toString()) } fun readInputLine(): String { return readLine()!! }