let [|n; m|] = stdin.ReadLine().Split " " |> Array.map int let arr = [| for _ in 0..m-1 -> stdin.ReadLine().Split " " |> Array.map int |] let rec permutation: (int array * int array -> int array array) = function | arr, [||] -> [|arr|] | arr, choice -> [| for i in 0..choice.Length-1 -> let a = Array.append arr [|choice.[i]|] if i = 0 then permutation (a, choice.[i+1..]) else permutation (a, (Array.append choice.[..i-1] choice.[i+1..])) |] |> Array.concat let calcScore a = [| for [|i; j; score|] in arr -> if Array.findIndex ((=)i) a < (Array.findIndex ((=)j) a) then score else 0 |] |> Array.sum permutation ([||], [|0..n-1|]) |> Array.map calcScore |> Array.max |> printfn "%d"