[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) withnvertices. The edge{uj,vj}has weightwj. Also each vertexihas its own valueaiassigned to it.

Let’s call a path starting in vertexuand ending in vertexv, 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-pathpprofitPr(p)=vdistinct vertices in pavedistinct edges in pkewe, wherekeis the number of times edgeeappears inp. That is, vertices are counted once, but edges are counted the number of times they appear inp.

You are about to answermqueries. Each query is a pair of vertices(qu,qv). For each query find 2-pathpfromqutoqvwith maximal profitPr(p).

Input

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

The second line containsnspace-separated integersa1,a2,,an(1ai109)— the values of the vertices.

Nextn1lines contain descriptions of edges: each line contains three space separated integersui,viandwi(1ui,vin,uivi,1wi109) — there is edge{ui,vi}with weightwiin the tree.

Nextqlines contain queries (one per line). Each query contains two integersquiandqvi(1qui,qvin)— endpoints of the 2-path you need to find.

Output

For each query print one integer per line — maximal profitPr(p)of the some 2-pathpwith 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;
}