#include<bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define pll pair<ll, ll>
#define vll vector<ll>
#define pb push_back
typedef long long ll;
const ll mxN=1e5+5;
const ll LOG=18;
ll n, m;
vll adj[mxN];
ll d[mxN], p[mxN], c[mxN];
ll dis[mxN][LOG];
ll boss[mxN][LOG];
ll dis2[mxN][LOG];
ll boss2[mxN][LOG];
set<pll> s[mxN];
set<pll> s2[mxN];
ll sz[mxN];
bool done[mxN];
priority_queue<pll, vector<pll>, greater<pll>> pq;
ll ans[mxN];
vll v[mxN];
bool dumb[mxN];
void get_sz(ll cur, ll par){
sz[cur]=1;
for(auto &chd:adj[cur]){
if(chd==par || done[chd]) continue;
get_sz(chd, cur);
sz[cur]+=sz[chd];
}
}
ll get_cen(ll cur, ll par, ll total){
for(auto &chd:adj[cur]){
if(chd==par || done[chd]){
continue;
}
if(sz[chd]>total/2){
return get_cen(chd, cur, total);
}
}
return cur;
}
void dfs(ll cur, ll par, ll dep, ll cen, ll lev){
s2[cen].insert({dep, cur});
dis2[cur][lev]=dep;
boss2[cur][lev]=cen;
for(auto &it:v[cur]){
s[cen].insert({dep-d[it], it});
// cout<<"inserting "<<cen<<' '<<dep-d[it]<<' '<<it<<'\n';
dis[it][lev]=dep;
boss[it][lev]=cen;
}
for(auto &chd:adj[cur]){
if(chd==par || done[chd]) continue;
dfs(chd, cur, dep+1, cen, lev);
}
}
void cen_decomp(ll cur, ll lev){
get_sz(cur, -1);
ll cen=get_cen(cur, -1, sz[cur]);
done[cen]=1;
dfs(cen, -1, 0, cen, lev);
for(auto &chd:adj[cen]){
if(done[chd]){
continue;
}
cen_decomp(chd, lev+1);
}
}
void rem1(ll tar){
for(ll i=0;i<LOG;i++){
if(boss[tar][i]==-1) break;
s[boss[tar][i]].erase({dis[tar][i]-d[tar], tar});
}
}
ll f1(ll tar){
for(ll i=LOG-1;i>=0;i--){
if(boss[tar][i]==-1) continue;
if(s2[boss[tar][i]].empty()) continue;
pll tep=*s2[boss[tar][i]].begin();
// cout<<"finding "<<tar<<' '<<i<<' '<<tep.F<<' '<<tep.S<<'\n';
if(dis[tar][i]-d[tar]+tep.F<=0){
return tep.S;
}
}
return -1LL;
}
void rem2(ll tar){
for(ll i=0;i<LOG;i++){
if(boss2[tar][i]==-1) break;
s2[boss2[tar][i]].erase({dis2[tar][i], tar});
}
}
ll f2(ll tar){
for(ll i=LOG-1;i>=0;i--){
if(boss2[tar][i]==-1) continue;
if(s[boss2[tar][i]].empty()) continue;
pll tep=*s[boss2[tar][i]].begin();
// cout<<"finding "<<tar<<' '<<i<<' '<<tep.F<<' '<<tep.S<<'\n';
if(dis2[tar][i]+tep.F<=0){
return tep.S;
}
}
return -1LL;
}
vector<long long> find_spread(int N, int M, vector<int> A, vector<int> B, vector<int> P, vector<int> D, vector<int> C) {
memset(boss, -1, sizeof(boss));
memset(boss2, -1, sizeof(boss2));
memset(ans, -1, sizeof(ans));
memset(dumb, 0, sizeof(dumb));
memset(done, 0, sizeof(done));
n=(ll) N;
m=(ll) M;
for(ll i=0;i<n-1;i++){
adj[A[i]].pb(B[i]);
adj[B[i]].pb(A[i]);
}
for(ll i=0;i<m;i++){
p[i]=P[i];
d[i]=D[i];
}
for(ll i=0;i<n;i++){
c[i]=C[i];
}
for(ll i=0;i<m;i++){
v[p[i]].pb(i);
}
cen_decomp(0, 0);
for(ll i=0;i<n;i++){
for(auto it : s[i]){
cout << it.F << ',' << it.S << ' ';
}
cout << '\n';
}
ans[0]=0;
while(true){
ll re=f1(0);
cout << re << '\n';
if(re==-1) break;
ll time=c[re];
pq.push({time, re});
rem2(re);
}
rem1(0);
while(!pq.empty()){
pll cur=pq.top(); pq.pop();
ll time=cur.F;
ll u=cur.S;
if(dumb[u]) continue;
dumb[u]=1;
cout << u << ": ";
while(true){
ll nxt=f2(u);
cout << nxt << ',' << time << ' ';
if(nxt==-1) break;
if(ans[nxt]!=-1) assert(false);
ans[nxt]=time;
while(true){
ll re=f1(nxt);
//cout << re << ' ';
if(re==-1) break;
// cout<<"from "<<nxt<<' '<<re<<'\n';
ll time2=c[re]+ans[nxt];
pq.push({time2, re});
rem2(re);
}
//cout << "] ";
// pq.push({ans[nxt]+c[nxt], nxt});
rem1(nxt);
}
cout << '\n';
}
vll o(m);
for(ll i=0;i<m;i++){
o[i]=ans[i];
}
return o;
}
signed main(){
int N, M;
cin >> N >> M;
vector<int> A(N - 1), B(N - 1), P(M), D(M), C(N);
for (int i = 0; i < N - 1; i++)
cin >> A[i] >> B[i];
for (int i = 0; i < M; i++)
cin >> P[i] >> D[i];
for(int i = 0; i < N; i++) cin >> C[i];
vector<long long> ans = find_spread(N, M, A, B, P, D, C);
for (auto &x : ans)
cout << x << "\n";
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgRiBmaXJzdAojZGVmaW5lIFMgc2Vjb25kCiNkZWZpbmUgcGxsIHBhaXI8bGwsIGxsPgojZGVmaW5lIHZsbCB2ZWN0b3I8bGw+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCmNvbnN0IGxsIG14Tj0xZTUrNTsKY29uc3QgbGwgTE9HPTE4OwoKbGwgbiwgbTsKdmxsIGFkaltteE5dOwpsbCBkW214Tl0sIHBbbXhOXSwgY1tteE5dOwpsbCBkaXNbbXhOXVtMT0ddOwpsbCBib3NzW214Tl1bTE9HXTsKbGwgZGlzMltteE5dW0xPR107CmxsIGJvc3MyW214Tl1bTE9HXTsKc2V0PHBsbD4gc1tteE5dOwpzZXQ8cGxsPiBzMltteE5dOwpsbCBzeltteE5dOwpib29sIGRvbmVbbXhOXTsKcHJpb3JpdHlfcXVldWU8cGxsLCB2ZWN0b3I8cGxsPiwgZ3JlYXRlcjxwbGw+PiBwcTsKbGwgYW5zW214Tl07CnZsbCB2W214Tl07CmJvb2wgZHVtYltteE5dOwoKdm9pZCBnZXRfc3oobGwgY3VyLCBsbCBwYXIpewogICAgc3pbY3VyXT0xOwogICAgZm9yKGF1dG8gJmNoZDphZGpbY3VyXSl7CiAgICAgICAgaWYoY2hkPT1wYXIgfHwgZG9uZVtjaGRdKSBjb250aW51ZTsKICAgICAgICBnZXRfc3ooY2hkLCBjdXIpOwogICAgICAgIHN6W2N1cl0rPXN6W2NoZF07IAogICAgfQp9CgpsbCBnZXRfY2VuKGxsIGN1ciwgbGwgcGFyLCBsbCB0b3RhbCl7CiAgICBmb3IoYXV0byAmY2hkOmFkaltjdXJdKXsKICAgICAgICBpZihjaGQ9PXBhciB8fCBkb25lW2NoZF0pewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYoc3pbY2hkXT50b3RhbC8yKXsKICAgICAgICAgICAgcmV0dXJuIGdldF9jZW4oY2hkLCBjdXIsIHRvdGFsKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gY3VyOwp9Cgp2b2lkIGRmcyhsbCBjdXIsIGxsIHBhciwgbGwgZGVwLCBsbCBjZW4sIGxsIGxldil7CiAgICBzMltjZW5dLmluc2VydCh7ZGVwLCBjdXJ9KTsKICAgIGRpczJbY3VyXVtsZXZdPWRlcDsKICAgIGJvc3MyW2N1cl1bbGV2XT1jZW47CiAgICBmb3IoYXV0byAmaXQ6dltjdXJdKXsKICAgICAgICBzW2Nlbl0uaW5zZXJ0KHtkZXAtZFtpdF0sIGl0fSk7CiAgICAgICAgLy8gY291dDw8Imluc2VydGluZyAiPDxjZW48PCcgJzw8ZGVwLWRbaXRdPDwnICc8PGl0PDwnXG4nOwogICAgICAgIGRpc1tpdF1bbGV2XT1kZXA7CiAgICAgICAgYm9zc1tpdF1bbGV2XT1jZW47CiAgICB9CiAgICBmb3IoYXV0byAmY2hkOmFkaltjdXJdKXsKICAgICAgICBpZihjaGQ9PXBhciB8fCBkb25lW2NoZF0pIGNvbnRpbnVlOwogICAgICAgIGRmcyhjaGQsIGN1ciwgZGVwKzEsIGNlbiwgbGV2KTsKICAgIH0KfQoKdm9pZCBjZW5fZGVjb21wKGxsIGN1ciwgbGwgbGV2KXsKICAgIGdldF9zeihjdXIsIC0xKTsKICAgIGxsIGNlbj1nZXRfY2VuKGN1ciwgLTEsIHN6W2N1cl0pOwogICAgZG9uZVtjZW5dPTE7CiAgICBkZnMoY2VuLCAtMSwgMCwgY2VuLCBsZXYpOwogICAgZm9yKGF1dG8gJmNoZDphZGpbY2VuXSl7CiAgICAgICAgaWYoZG9uZVtjaGRdKXsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGNlbl9kZWNvbXAoY2hkLCBsZXYrMSk7CiAgICB9Cn0KCnZvaWQgcmVtMShsbCB0YXIpewogICAgZm9yKGxsIGk9MDtpPExPRztpKyspewogICAgICAgIGlmKGJvc3NbdGFyXVtpXT09LTEpIGJyZWFrOwogICAgICAgIHNbYm9zc1t0YXJdW2ldXS5lcmFzZSh7ZGlzW3Rhcl1baV0tZFt0YXJdLCB0YXJ9KTsKICAgIH0KfQoKbGwgZjEobGwgdGFyKXsKICAgIGZvcihsbCBpPUxPRy0xO2k+PTA7aS0tKXsKICAgICAgICBpZihib3NzW3Rhcl1baV09PS0xKSBjb250aW51ZTsKICAgICAgICBpZihzMltib3NzW3Rhcl1baV1dLmVtcHR5KCkpIGNvbnRpbnVlOwogICAgICAgIHBsbCB0ZXA9KnMyW2Jvc3NbdGFyXVtpXV0uYmVnaW4oKTsKICAgICAgICAvLyBjb3V0PDwiZmluZGluZyAiPDx0YXI8PCcgJzw8aTw8JyAnPDx0ZXAuRjw8JyAnPDx0ZXAuUzw8J1xuJzsKICAgICAgICBpZihkaXNbdGFyXVtpXS1kW3Rhcl0rdGVwLkY8PTApewogICAgICAgICAgICByZXR1cm4gdGVwLlM7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIC0xTEw7Cn0KCnZvaWQgcmVtMihsbCB0YXIpewogICAgZm9yKGxsIGk9MDtpPExPRztpKyspewogICAgICAgIGlmKGJvc3MyW3Rhcl1baV09PS0xKSBicmVhazsKICAgICAgICBzMltib3NzMlt0YXJdW2ldXS5lcmFzZSh7ZGlzMlt0YXJdW2ldLCB0YXJ9KTsKICAgIH0KfQoKbGwgZjIobGwgdGFyKXsKICAgIGZvcihsbCBpPUxPRy0xO2k+PTA7aS0tKXsKICAgICAgICBpZihib3NzMlt0YXJdW2ldPT0tMSkgY29udGludWU7CiAgICAgICAgaWYoc1tib3NzMlt0YXJdW2ldXS5lbXB0eSgpKSBjb250aW51ZTsKICAgICAgICBwbGwgdGVwPSpzW2Jvc3MyW3Rhcl1baV1dLmJlZ2luKCk7CiAgICAgICAgLy8gY291dDw8ImZpbmRpbmcgIjw8dGFyPDwnICc8PGk8PCcgJzw8dGVwLkY8PCcgJzw8dGVwLlM8PCdcbic7CiAgICAgICAgaWYoZGlzMlt0YXJdW2ldK3RlcC5GPD0wKXsKICAgICAgICAgICAgcmV0dXJuIHRlcC5TOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAtMUxMOwp9Cgp2ZWN0b3I8bG9uZyBsb25nPiBmaW5kX3NwcmVhZChpbnQgTiwgaW50IE0sIHZlY3RvcjxpbnQ+IEEsIHZlY3RvcjxpbnQ+IEIsIHZlY3RvcjxpbnQ+IFAsIHZlY3RvcjxpbnQ+IEQsIHZlY3RvcjxpbnQ+IEMpIHsgCiAgICBtZW1zZXQoYm9zcywgLTEsIHNpemVvZihib3NzKSk7CiAgICBtZW1zZXQoYm9zczIsIC0xLCBzaXplb2YoYm9zczIpKTsKICAgIG1lbXNldChhbnMsIC0xLCBzaXplb2YoYW5zKSk7CiAgICBtZW1zZXQoZHVtYiwgMCwgc2l6ZW9mKGR1bWIpKTsKICAgIG1lbXNldChkb25lLCAwLCBzaXplb2YoZG9uZSkpOwogICAgbj0obGwpIE47CiAgICBtPShsbCkgTTsKICAgIGZvcihsbCBpPTA7aTxuLTE7aSsrKXsKICAgICAgICBhZGpbQVtpXV0ucGIoQltpXSk7CiAgICAgICAgYWRqW0JbaV1dLnBiKEFbaV0pOwogICAgfQogICAgZm9yKGxsIGk9MDtpPG07aSsrKXsKICAgICAgICBwW2ldPVBbaV07CiAgICAgICAgZFtpXT1EW2ldOwogICAgfQogICAgZm9yKGxsIGk9MDtpPG47aSsrKXsKICAgICAgICBjW2ldPUNbaV07CiAgICB9CiAgICBmb3IobGwgaT0wO2k8bTtpKyspewogICAgICAgIHZbcFtpXV0ucGIoaSk7CiAgICB9CiAgICBjZW5fZGVjb21wKDAsIDApOwogICAgZm9yKGxsIGk9MDtpPG47aSsrKXsKICAgIAlmb3IoYXV0byBpdCA6IHNbaV0pewogICAgCQljb3V0IDw8IGl0LkYgPDwgJywnIDw8IGl0LlMgPDwgJyAnOwogICAgCX0KICAgIAljb3V0IDw8ICdcbic7CiAgICB9CiAgICAKICAgIGFuc1swXT0wOwogICAgd2hpbGUodHJ1ZSl7CiAgICAgICAgbGwgcmU9ZjEoMCk7CiAgICAgICAgY291dCA8PCByZSA8PCAnXG4nOwogICAgICAgIGlmKHJlPT0tMSkgYnJlYWs7CiAgICAgICAgbGwgdGltZT1jW3JlXTsKICAgICAgICBwcS5wdXNoKHt0aW1lLCByZX0pOwogICAgICAgIHJlbTIocmUpOwogICAgfQogICAgcmVtMSgwKTsKICAgIHdoaWxlKCFwcS5lbXB0eSgpKXsKICAgICAgICBwbGwgY3VyPXBxLnRvcCgpOyBwcS5wb3AoKTsKICAgICAgICBsbCB0aW1lPWN1ci5GOyAKICAgICAgICBsbCB1PWN1ci5TOwogICAgICAgIGlmKGR1bWJbdV0pIGNvbnRpbnVlOwogICAgICAgIGR1bWJbdV09MTsKICAgICAgICBjb3V0IDw8IHUgPDwgIjogIjsKICAgICAgICB3aGlsZSh0cnVlKXsKICAgICAgICAgICAgbGwgbnh0PWYyKHUpOwogICAgICAgICAgICBjb3V0IDw8IG54dCA8PCAnLCcgPDwgdGltZSA8PCAnICc7CiAgICAgICAgICAgIGlmKG54dD09LTEpIGJyZWFrOwogICAgICAgICAgICBpZihhbnNbbnh0XSE9LTEpIGFzc2VydChmYWxzZSk7CiAgICAgICAgICAgIGFuc1tueHRdPXRpbWU7CiAgICAgICAgICAgIAogICAgICAgICAgICB3aGlsZSh0cnVlKXsKICAgICAgICAgICAgICAgIGxsIHJlPWYxKG54dCk7CiAgICAgICAgICAgICAgICAvL2NvdXQgPDwgcmUgPDwgJyAnOwogICAgICAgICAgICAgICAgaWYocmU9PS0xKSBicmVhazsKICAgICAgICAgICAgICAgIC8vIGNvdXQ8PCJmcm9tICI8PG54dDw8JyAnPDxyZTw8J1xuJzsKICAgICAgICAgICAgICAgIGxsIHRpbWUyPWNbcmVdK2Fuc1tueHRdOwogICAgICAgICAgICAgICAgcHEucHVzaCh7dGltZTIsIHJlfSk7CiAgICAgICAgICAgICAgICByZW0yKHJlKTsgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy9jb3V0IDw8ICJdICI7CiAgICAgICAgICAgIC8vIHBxLnB1c2goe2Fuc1tueHRdK2Nbbnh0XSwgbnh0fSk7CiAgICAgICAgICAgIHJlbTEobnh0KTsKICAgICAgICB9CiAgICAgICAgY291dCA8PCAnXG4nOwogICAgfQogICAgdmxsIG8obSk7CiAgICBmb3IobGwgaT0wO2k8bTtpKyspewogICAgICAgIG9baV09YW5zW2ldOwogICAgfQogICAgcmV0dXJuIG87Cn0Kc2lnbmVkIG1haW4oKXsKICAgIGludCBOLCBNOwogICAgY2luID4+IE4gPj4gTTsKICAgIHZlY3RvcjxpbnQ+IEEoTiAtIDEpLCBCKE4gLSAxKSwgUChNKSwgRChNKSwgQyhOKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTiAtIDE7IGkrKykKICAgICAgICBjaW4gPj4gQVtpXSA+PiBCW2ldOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNOyBpKyspCiAgICAgICAgY2luID4+IFBbaV0gPj4gRFtpXTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBOOyBpKyspIGNpbiA+PiBDW2ldOwogICAgdmVjdG9yPGxvbmcgbG9uZz4gYW5zID0gZmluZF9zcHJlYWQoTiwgTSwgQSwgQiwgUCwgRCwgQyk7CiAgICBmb3IgKGF1dG8gJnggOiBhbnMpCiAgICAgICAgY291dCA8PCB4IDw8ICJcbiI7Cn0=
-5,6 -2,4 -2,9 1,0 1,5 1,8 3,1 3,2 3,3 3,7
-3,9 -2,5 -1,4 0,1 0,2 0,3 0,7 0,8
1,0
-6,6
-4,9 -2,4 -1,8
-3,4
-2,1 -2,7
-1,1 -1,3 -1,7
0,0
9
-1
9: 6,5 4,5 9,5 -1,5
2: -1,10
7: 1,11 7,11 3,11 5,11 -1,11
4: -1,13
3: -1,14
0: -1,15
1: 2,17 8,17 -1,17
8: -1,18
6: -1,25
5: -1,26
0
11
17
11
5
11
5
11
17
5