[CodeForces1000]G. Two-Paths

lolifamily

作为压轴题,题目描述很长、很难理解。

还没写好 QwQ

G. Two-Paths

time limit per test: 3.5 seconds
memory limit per test: 256 megabytes
input: standard input
output: standard output

You are given a weighted tree (undirected connected graph with no cycles, loops or multiple edges) with n vertices. The edge {uj,vj} has weight wj. Also each vertex i has its own value ai assigned to it.

Let’s call a path starting in vertex u and ending in vertex v, where each edge can appear no more than twice (regardless of direction), a 2-path. Vertices can appear in the 2-path multiple times (even start and end vertices).

For some 2-path p profit Pr(p)=vdistinct vertices in pavedistinct edges in pkewe, where ke is the number of times edge e appears in p. That is, vertices are counted once, but edges are counted the number of times they appear in p.

You are about to answer m queries. Each query is a pair of vertices (qu,qv). For each query find 2-path p from qu to qv with maximal profit Pr(p).

Input

The first line contains two integers n and q (2n3105, 1q4105) — the number of vertices in the tree and the number of queries.

The second line contains n space-separated integers a1,a2,,an (1ai109) — the values of the vertices.

Next n1 lines contain descriptions of edges: each line contains three space separated integers ui, vi and wi (1ui,vin, uivi, 1wi109) — there is edge {ui,vi} with weight wi in the tree.

Next q lines contain queries (one per line). Each query contains two integers qui and qvi (1qui,qvin) — endpoints of the 2-path you need to find.

Output

For each query print one integer per line — maximal profit Pr(p) of the some 2-path p with the corresponding endpoints.

Example

input

7 6
6 5 5 3 2 1 2
1 2 2
2 3 2
2 4 1
4 5 1
6 4 2
7 3 25
1 1
4 4
5 6
6 4
3 4
3 7

output

9
9
9
8
12
-14

Note

Explanation of queries:

(1,1) — one of the optimal 2-paths is the following: 124542321. Pr(p)=(a1+a2+a3+a4+a5)(2w(1,2)+2w(2,3)+2w(2,4)+2w(4,5))=21212=9.

(4,4): 4212324. Pr(p)=(a1+a2+a3+a4)2(w(1,2)+w(2,3)+w(2,4))=19210=9.

(5,6): 542321246.

(6,4): 64212324.

(3,4): 32124.

(3,7): 3212454237.

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int main(void)
{
printf("还没写好 QwQ\n");
return 0;
}