영웅은 죽지 않아요

되살릴 영웅의 부분집합을 골라 양 끝이 모두 선택된 결속의 보상을 얻고, 보상 합에서 부활 비용을 뺀 값이 최대가 되게 한다.

어려움8그래프최소 신장 트리그리디유니온 파인드아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

모든 영웅이 쓰러지자 메르시가 말한다. "영웅은 죽지 않아요."

영웅 ii를 부활시키려면 에너지 P(i)P(i)가 든다. 영웅 사이에는 관계가 있을 수 있고, 관계로 이어진 두 영웅이 함께 부활하면 그 관계에서 에너지 C(i)C(i)를 돌려받는다.

메르시가 영웅 KK명(0KN0 \le K \le N)을 부활시키면, 두 영웅이 모두 부활한 관계에서 돌려받는 에너지의 합에서 부활에 쓴 에너지의 합을 뺀 만큼 에너지를 얻는다. 메르시가 얻을 수 있는 에너지의 최댓값을 구하라.

K=0K = 0도 고르는 방법이므로 답은 항상 0 이상이다.

입력

첫째 줄에 영웅의 수 NN(1N50001 \le N \le 5000)과 관계의 수 MM(0M500000 \le M \le 50000)이 공백을 두고 주어진다.

둘째 줄에 각 영웅을 부활시키는 데 드는 에너지 P(1),P(2),,P(N)P(1), P(2), \dots, P(N)이 주어진다.

셋째 줄부터 MM개 줄에 관계가 한 줄에 하나씩 A(i) B(i) C(i)A(i)\ B(i)\ C(i) 형식으로 주어진다. A(i)A(i)B(i)B(i)는 1 이상 NN 이하의 서로 다른 영웅 번호이고, 같은 쌍이 여러 관계로 주어질 수도 있다. P(i)P(i)C(i)C(i)는 모두 0 이상 100 이하의 정수이다.

출력

메르시가 얻을 수 있는 에너지의 최댓값을 한 줄에 출력한다.