#include<iostream>
#include<vector>
#include<algorithm>
#include<utility>
using namespace std;
#define FOR(i , a , n) for(int (i) = (a); (i) < (int)(n);++(i))
#define pb push_back
#define sz( x ) (int)(x).size()
#define mp make_pair
typedef long long ll;
struct node
{
ll val;
ll odd , even;
node *right , *left;
node()
{
right = left = NULL;
val = 0;
odd = 0;
even = 0;
}
};
node *root;
const int maxN = 2e5 + 100;
vector<int> G[maxN] , nv , ls , oe;
vector<ll> v;
int n , m , curmark = 0 ;
bool vis[maxN];
inline void add(node *cur, int fi , int se , int l , int r,ll val , int num)
{
int mid = (fi + se) / 2;
if(cur->left == NULL) cur->left = new node();
if(cur->right == NULL) cur->right = new node();
if(fi == l and se == r) ((num) ? cur->odd += val : cur->even += val);
else if(r <= mid) add(cur->left , fi , mid , l , r , val , num);
else if(mid < l) add(cur->right , mid + 1 , se , l , r , val , num);
else
{
add(cur->left , fi , mid , l , mid , val , num);
add(cur->right , mid + 1 , se , mid + 1 , r , val , num);
}
}
inline pair<ll,ll> query(node *cur , int fi , int se , int now)
{
if(cur->left == NULL) cur->left = new node();
if(cur->right == NULL) cur->right = new node();
pair<ll,ll> p;
p.first += cur->even;
p.second += cur->odd;
if(fi == se and fi == now)
{
return make_pair(p.first , p.second);
}
else
{
int mid = (fi + se) / 2;
if(now <= mid) return query(cur->left , fi , mid , now);
else return query(cur->right , mid + 1 , se , now);
}
}
inline void dfs(int u , int dis)
{
vis[u] = true;
nv[u] = curmark;
curmark++;
oe[u] = dis % 2;
FOR(i , 0 , sz(G[u])) if(!vis[G[u][i]]) dfs(G[u][i] , dis + 1);
ls[u] = curmark - 1;
}
int main()
{
ios_base::sync_with_stdio(0);
cin>> n >> m;
v.resize(n);
nv.resize(n);
ls.resize(n);
oe.resize(n);
//FOR(i , 0 , n) cin >> v[i];
FOR(i , 0 , n - 1)
{
int x , y;
cin >> x >> y;
x-- , y--;
G[x].pb(y);
G[y].pb(x);
}
dfs(0 , 0);
for(int i = 0 ; i < m ; i++)
{
int tp , x ;
ll y;
cin>> x >> y;
FOR(i , 0 , n)
{
pair<ll,ll> p = query(root ,0 , n-1 , nv[x]);
if(oe[nv[x]]) swap(p.first , p.second);
cout << p.first<<' ' << p.second <<' '<<v[nv[x]]<< endl;
}
}
/*
root = new node();
FOR(i , 0 , m)
{
int tp , x ;
ll y;
cin >> tp >> x;
x--;
if(tp == 2)
{
pair<ll,ll> p = query(root ,0 , n-1 , nv[x]);
if(oe[nv[x]]) swap(p.first , p.second);
cout << p.first<<' ' << p.second <<' '<<v[nv[x]]<< endl;
}
else
{
cin >> y;
add(root , 0 , n-1 , nv[x] , ls[x] , y , oe[x]);
}
}
*/
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTx1dGlsaXR5PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgRk9SKGkgLCBhICwgbikgZm9yKGludCAoaSkgPSAoYSk7IChpKSA8IChpbnQpKG4pOysrKGkpKQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHN6KCB4ICkgKGludCkoeCkuc2l6ZSgpCiNkZWZpbmUgbXAgbWFrZV9wYWlyCnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKc3RydWN0IG5vZGUKewogIGxsIHZhbDsKICBsbCBvZGQgLCBldmVuOwogIG5vZGUgKnJpZ2h0ICwgKmxlZnQ7CiAgbm9kZSgpCiAgewogICAgcmlnaHQgPSBsZWZ0ID0gTlVMTDsKICAgIHZhbCA9IDA7CiAgICBvZGQgPSAwOwogICAgZXZlbiA9IDA7CiAgfQp9Owpub2RlICpyb290Owpjb25zdCBpbnQgbWF4TiA9IDJlNSArIDEwMDsKdmVjdG9yPGludD4gR1ttYXhOXSAsIG52ICwgbHMgLCBvZTsKdmVjdG9yPGxsPiB2OwppbnQgbiAsIG0gLCBjdXJtYXJrID0gMCA7CmJvb2wgdmlzW21heE5dOwppbmxpbmUgdm9pZCBhZGQobm9kZSAqY3VyLCBpbnQgZmkgLCBpbnQgc2UgLCBpbnQgbCAsIGludCByLGxsIHZhbCAsIGludCBudW0pCnsKICBpbnQgbWlkID0gKGZpICsgc2UpIC8gMjsKICBpZihjdXItPmxlZnQgPT0gTlVMTCkgY3VyLT5sZWZ0ID0gbmV3IG5vZGUoKTsKICBpZihjdXItPnJpZ2h0ID09IE5VTEwpIGN1ci0+cmlnaHQgPSBuZXcgbm9kZSgpOwogIGlmKGZpID09IGwgYW5kIHNlID09IHIpICgobnVtKSA/IGN1ci0+b2RkICs9IHZhbCA6IGN1ci0+ZXZlbiArPSB2YWwpOyAgIAogIGVsc2UgaWYociA8PSBtaWQpIGFkZChjdXItPmxlZnQgLCBmaSAsIG1pZCAsIGwgLCByICwgdmFsICwgbnVtKTsKICBlbHNlIGlmKG1pZCA8IGwpIGFkZChjdXItPnJpZ2h0ICwgbWlkICsgMSAsIHNlICwgbCAsIHIgLCB2YWwgLCBudW0pOwogIGVsc2UKICAgIHsKICAgICAgYWRkKGN1ci0+bGVmdCAsIGZpICwgbWlkICwgbCAsIG1pZCAsIHZhbCAsIG51bSk7CiAgICAgIGFkZChjdXItPnJpZ2h0ICwgbWlkICsgMSAsIHNlICwgbWlkICsgMSAsIHIgLCB2YWwgLCBudW0pOyAKICAgIH0gCn0gCmlubGluZSBwYWlyPGxsLGxsPiBxdWVyeShub2RlICpjdXIgLCBpbnQgZmkgLCBpbnQgc2UgLCBpbnQgbm93KQp7CiAgaWYoY3VyLT5sZWZ0ID09IE5VTEwpIGN1ci0+bGVmdCA9IG5ldyBub2RlKCk7CiAgaWYoY3VyLT5yaWdodCA9PSBOVUxMKSBjdXItPnJpZ2h0ID0gbmV3IG5vZGUoKTsKICBwYWlyPGxsLGxsPiAgcDsKICBwLmZpcnN0ICs9IGN1ci0+ZXZlbjsKICBwLnNlY29uZCArPSBjdXItPm9kZDsgCiAgaWYoZmkgPT0gc2UgYW5kIGZpID09IG5vdykKICAgIHsKICAgICAgcmV0dXJuIG1ha2VfcGFpcihwLmZpcnN0ICwgcC5zZWNvbmQpOyAKICAgIH0gCiAgZWxzZQogICAgewogICAgICBpbnQgbWlkID0gKGZpICsgc2UpIC8gMjsKICAgICAgaWYobm93IDw9IG1pZCkgcmV0dXJuIHF1ZXJ5KGN1ci0+bGVmdCAsIGZpICwgbWlkICwgbm93KTsKICAgICAgZWxzZSByZXR1cm4gcXVlcnkoY3VyLT5yaWdodCAsIG1pZCArIDEgLCBzZSAsIG5vdyk7CiAgICB9Cn0gCmlubGluZSB2b2lkIGRmcyhpbnQgdSAsIGludCBkaXMpCnsKICB2aXNbdV0gPSB0cnVlOwogIG52W3VdID0gY3VybWFyazsKICBjdXJtYXJrKys7IAogIG9lW3VdID0gZGlzICUgMjsKICBGT1IoaSAsIDAgLCBzeihHW3VdKSkgaWYoIXZpc1tHW3VdW2ldXSkgIGRmcyhHW3VdW2ldICwgZGlzICsgMSk7CiAgbHNbdV0gPSBjdXJtYXJrIC0gMTsKfSAgCmludCBtYWluKCkKewogIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgY2luPj4gbiA+PiBtOwogIHYucmVzaXplKG4pOwogIG52LnJlc2l6ZShuKTsKICBscy5yZXNpemUobik7CiAgb2UucmVzaXplKG4pOwogIC8vRk9SKGkgLCAwICwgbikgY2luID4+IHZbaV07CiAgRk9SKGkgLCAwICwgbiAtIDEpCiAgICB7CiAgICAgIGludCB4ICwgeTsKICAgICAgY2luID4+IHggPj4geTsKICAgICAgeC0tICwgeS0tOwogICAgICBHW3hdLnBiKHkpOwogICAgICBHW3ldLnBiKHgpOwogICAgfQogIGRmcygwICwgMCk7CiAgZm9yKGludCBpID0gMCA7IGkgPCBtIDsgaSsrKQogICAgewogICAgICBpbnQgdHAgLCB4IDsKICAgICAgbGwgeTsKICAgICAgY2luPj4geCA+PiB5OwogICAgICBGT1IoaSAsIDAgLCBuKQoJewoJICBwYWlyPGxsLGxsPiBwID0gcXVlcnkocm9vdCAsMCAsIG4tMSAsIG52W3hdKTsKCSAgaWYob2VbbnZbeF1dKSBzd2FwKHAuZmlyc3QgLCBwLnNlY29uZCk7CgkgIGNvdXQgPDwgcC5maXJzdDw8JyAnIDw8IHAuc2Vjb25kIDw8JyAnPDx2W252W3hdXTw8IGVuZGw7Cgl9CiAgICB9CiAgLyoKICByb290ID0gbmV3IG5vZGUoKTsKICBGT1IoaSAsIDAgLCBtKQogICAgewogICAgICBpbnQgdHAgLCB4IDsKICAgICAgbGwgeTsKICAgICAgY2luID4+IHRwID4+IHg7CiAgICAgIHgtLTsKICAgICAgaWYodHAgPT0gMikKCXsKCSAgcGFpcjxsbCxsbD4gcCA9IHF1ZXJ5KHJvb3QgLDAgLCBuLTEgLCBudlt4XSk7CgkgIGlmKG9lW252W3hdXSkgc3dhcChwLmZpcnN0ICwgcC5zZWNvbmQpOwoJICBjb3V0IDw8IHAuZmlyc3Q8PCcgJyA8PCBwLnNlY29uZCA8PCcgJzw8dltudlt4XV08PCBlbmRsOwoJfQogICAgICBlbHNlCgl7CgkgIGNpbiA+PiB5OwoJICBhZGQocm9vdCAsIDAgLCBuLTEgLCBudlt4XSAsIGxzW3hdICwgeSAsIG9lW3hdKTsKCX0KCiAgICB9CiAgKi8KICByZXR1cm4gMDsKfQo=