E - お菓子やさん Editorial /

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

幼少のパンチくんは、全部で N 店あるお菓子やさんを巡ろうとしています。

このうちのいくつかの店では、スタンプをカードに押してもらえます。その店のスタンプがあると、さらに別のいくつかの店で、ボーナスのお菓子がもらえるというシステムです。

ただし、パンチくんは一度行った店には 2 回行きたくありません。そのため、例えば

  • A のスタンプがあると、店 B でお菓子が 3 個もらえる
  • B のスタンプがあると、店 A でお菓子が 2 個もらえる

という 2 つの条件が重なっている場合 、どちらかのお菓子を諦めなければいけません。この場合、後者を諦めて、前者の 3 個のお菓子をもらうのが得です。

パンチくんがもらえるお菓子の最大値はいくらでしょうか。


入力

入力は以下の形式で標準入力から与えられる。

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 であることが保障されている。

部分点

1 ≦ N ≦ 8 を満たすテストケースに正解した場合、部分点として 130 点が与えられる。

出力

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


入力例1

2 2
1 2 3
2 1 2

出力例1

3

問題文に記載されている例です。


入力例2

4 3
1 2 10
1 3 20
1 4 30

出力例2

60

全てのお菓子をもらうことが出来ます。


入力例3

3 3
1 2 20
2 3 30
3 1 10

出力例3

50

10 個のお菓子を諦めることで、最大値を得ます。


入力例4

16 1
4 4 1000

出力例4

0

同じ店に 2 回行くことはできないので、お菓子はもらえません。また、このスタンプサービスと関係ない店がいくつかあることもあります。


入力例5

4 6
4 1 3
1 3 3
4 2 3
3 4 2
2 3 3
2 2 10

出力例5

12