AT_donuts_live2014_5 お菓子やさん

Description

[problemUrl]: https://atcoder.jp/contests/donuts-live2014/tasks/donuts_live2014_5 幼少のパンチくんは、全部で $ N $ 店あるお菓子やさんを巡ろうとしています。 このうちのいくつかの店では、スタンプをカードに押してもらえます。その店のスタンプがあると、さらに別のいくつかの店で、ボーナスのお菓子がもらえるというシステムです。 ただし、パンチくんは一度行った店には $ 2 $ 回行きたくありません。そのため、例えば - 店 $ A $ のスタンプがあると、店 $ B $ でお菓子が $ 3 $ 個もらえる - 店 $ B $ のスタンプがあると、店 $ A $ でお菓子が $ 2 $ 個もらえる という $ 2 $ つの条件が重なっている場合 、どちらかのお菓子を諦めなければいけません。この場合、後者を諦めて、前者の $ 3 $ 個のお菓子をもらうのが得です。 パンチくんがもらえるお菓子の最大値はいくらでしょうか。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ E $ $ a_1 $ $ b_1 $ $ c_1 $ $ a_2 $ $ b_2 $ $ c_2 $ : $ a_E $ $ b_E $ $ c_E $ - $ 1 $ 行目には、お菓子屋さんの数を表す整数 $ N\ (1\ ≦\ N\ ≦\ 16) $ と、お菓子をもらえる店舗関係の数を表す整数 $ E\ (0\ ≦\ E\ ≦\ N×N) $がスペース区切りで与えられる。 - $ 2 $ 行目から $ E $ 行では、お菓子をもらえる店舗関係の情報が与えられる。 このうち $ i $ 行目では、 $ 3 $ つの整数 $ a_i\ (1\ ≦\ a_i\ ≦\ N) $, $ b_i\ (1\ ≦\ b_i\ ≦\ N) $, $ c_i\ (1\ ≦\ c_i\ ≦\ 1000) $ が与えられる。 これらは、「店 $ a_i $ のスタンプがあると、店 $ b_i $ にて、お菓子が $ c_i $ 個もらえる」ということを表している。 - $ i≠j $ のとき、 $ a_i≠a_j $ または $ b_i≠b_j $ であることが保障されている。

Output Format

パンチくんがもらえるお菓子の最大値を、 $ 1 $ 行で出力せよ。出力の末尾には改行をいれること。

Explanation/Hint

### 部分点 $ 1\ ≦\ N\ ≦\ 8 $ を満たすテストケースに正解した場合、部分点として $ 130 $ 点が与えられる。 ### Sample Explanation 1 問題文に記載されている例です。 ### Sample Explanation 2 全てのお菓子をもらうことが出来ます。 ### Sample Explanation 3 $ 10 $ 個のお菓子を諦めることで、最大値を得ます。 ### Sample Explanation 4 同じ店に $ 2 $ 回行くことはできないので、お菓子はもらえません。また、このスタンプサービスと関係ない店がいくつかあることもあります。