[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𝑛vertices. The edge{𝑢𝑗,𝑣𝑗}has weight𝑤𝑗. Also each vertex𝑖has its own value𝑎𝑖assigned to it.

Let’s call a path starting in vertex𝑢and ending in vertex𝑣, 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𝑝profitPr(𝑝)=𝑣distinctverticesin 𝑝𝑎𝑣𝑒distinctedgesin 𝑝𝑘𝑒𝑤𝑒, where𝑘𝑒is the number of times edge𝑒appears in𝑝. That is, vertices are counted once, but edges are counted the number of times they appear in𝑝.

You are about to answer𝑚queries. Each query is a pair of vertices(𝑞𝑢,𝑞𝑣). For each query find 2-path𝑝from𝑞𝑢to𝑞𝑣with maximal profitPr(𝑝).

Input

The first line contains two integers𝑛and𝑞(2𝑛3105,1𝑞4105) — the number of vertices in the tree and the number of queries.

The second line contains𝑛space-separated integers𝑎1,𝑎2,,𝑎𝑛(1𝑎𝑖109)— the values of the vertices.

Next𝑛1lines contain descriptions of edges: each line contains three space separated integers𝑢𝑖,𝑣𝑖and𝑤𝑖(1𝑢𝑖,𝑣𝑖𝑛,𝑢𝑖𝑣𝑖,1𝑤𝑖109) — there is edge{𝑢𝑖,𝑣𝑖}with weight𝑤𝑖in the tree.

Next𝑞lines contain queries (one per line). Each query contains two integers𝑞𝑢𝑖and𝑞𝑣𝑖(1𝑞𝑢𝑖,𝑞𝑣𝑖𝑛)— endpoints of the 2-path you need to find.

Output

For each query print one integer per line — maximal profitPr(𝑝)of the some 2-path𝑝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(𝑝)=(𝑎1+𝑎2+𝑎3+𝑎4+𝑎5)(2𝑤(1,2)+2𝑤(2,3)+2𝑤(2,4)+2𝑤(4,5))=21212=9.

(4,4):4212324.Pr(𝑝)=(𝑎1+𝑎2+𝑎3+𝑎4)2(𝑤(1,2)+𝑤(2,3)+𝑤(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;
}