B"You are given a weighted tree (undirected connected graph with no cycles, loops or multiple edges) with n vertices. The edge {u_j, v_j } has weight w_j . Also each vertex i has its own value a_i 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 text{Pr}(p) = sum limits_{v in text{distinct vertices in } p}{a_v} - sum limits_{e in text{distinct edges in } p}{k_e cdot w_e} , where k_e 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 text{Pr}(p) . The first line contains two integers n and q ( 2 <= n <= 3 cdot 10^5 , 1 <= q <= 4 cdot 10^5 ) -- the number of vertices in the tree and the number of queries. The second line contains n space-separated integers a_1, a_2, ... , a_n (1 <= a_i <= 10^9) -- the values of the vertices. Next n - 1 lines contain descriptions of edges: each line contains three space separated integers u_i , v_i and w_i ( 1 <= u_i, v_i <= n , u_i neq v_i , 1 <= w_i <= 10^9 ) -- there is edge {u_i, v_i } with weight w_i in the tree. Next q lines contain queries (one per line). Each query contains two integers qu_i and qv_i (1 <= qu_i, qv_i <= n) -- endpoints of the 2-path you need to find. For each query print one integer per line -- maximal profit text{Pr}(p) of the some 2-path p with the corresponding endpoints. Explanation of queries: "... |