import kotlin.math.max fun main() { val builder = StringBuilder() val (n, m) = readInputLine().split(" ").map { it.toInt() } val scores = Array(m) { val (i1, i2, s) = readInputLine().split(" ").map { it.toInt() } Triple(i1, i2, s) } val arr = IntArray(n) { it } var maxScore = 0 do { var tmp = 0 for (s in scores) { if (arr[s.first] < arr[s.second]) { tmp += s.third } } maxScore = max(maxScore, tmp) } while (nextPermutation(arr)) builder.appendln(maxScore) print(builder.toString()) } fun readInputLine(): String { return readLine()!! } fun nextPermutation(arr: IntArray): Boolean { var i = arr.size - 1 while (i > 0 && arr[i - 1] >= arr[i]) { i-- } if (i <= 0) { return false } var j = arr.size - 1 while (arr[j] <= arr[i - 1]) { j-- } var temp = arr[i - 1]; arr[i - 1] = arr[j]; arr[j] = temp; j = arr.size - 1; while (i < j) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; j--; } return true; }