#include <bits/stdc++.h>
#define ll long long
#define bit(n,i) ((n>>i) &1)
#pragma GCC optimize("O3,unroll-loops")
#define itachi ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define maxn 200005
#define fi first
#define se second
#define int long long
using namespace std;
ll sz[maxn], high[maxn], par[maxn];
ll heavy[maxn], head[maxn], pos[maxn];
ll n,q,cur=0;
vector<int> adj[maxn];
struct Node{
ll sum;
int cnt1;
ll lazy;
bool flip;
} st[4*maxn];
void apply_add(int id,int l,int r,ll x){
int len=r-l+1;
st[id].sum += x*(len - 2*st[id].cnt1);
st[id].lazy += x;
}
void apply_flip(int id,int l,int r){
int len=r-l+1;
st[id].cnt1 = len - st[id].cnt1;
st[id].flip ^= 1;
st[id].lazy = -st[id].lazy;
}
void push(int id,int l,int r){
int m=(l+r)>>1;
if(st[id].flip){
apply_flip(id<<1,l,m);
apply_flip(id<<1|1,m+1,r);
st[id].flip=0;
}
if(st[id].lazy){
apply_add(id<<1,l,m,st[id].lazy);
apply_add(id<<1|1,m+1,r,st[id].lazy);
st[id].lazy=0;
}
}
void pull(int id){
st[id].sum = st[id<<1].sum + st[id<<1|1].sum;
st[id].cnt1 = st[id<<1].cnt1 + st[id<<1|1].cnt1;
}
void update(int id,int l,int r,int u,int v,ll x){
if(l>r || u>v || l>v || r<u) return;
if(u<=l && r<=v){
apply_add(id,l,r,x);
apply_flip(id,l,r);
return;
}
push(id,l,r);
int m=(l+r)>>1;
update(id<<1,l,m,u,v,x);
update(id<<1|1,m+1,r,u,v,x);
pull(id);
}
ll get(int id,int l,int r,int u,int v){
if(l>r || u>v || l>v || r<u) return 0;
if(u<=l && r<=v) return st[id].sum;
push(id,l,r);
int m=(l+r)>>1;
return get(id<<1,l,m,u,v) + get(id<<1|1,m+1,r,u,v);
}
void dfs(int u,int p){
sz[u]=1;
par[u]=p;
int mx=0;
for(int v:adj[u]){
if(v==p) continue;
high[v]=high[u]+1;
dfs(v,u);
sz[u]+=sz[v];
if(sz[v]>mx){
mx=sz[v];
heavy[u]=v;
}
}
}
void HLD(int u,int h){
head[u]=h;
pos[u]=++cur;
if(heavy[u]) HLD(heavy[u],h);
for(int v:adj[u]){
if(v!=par[u] && v!=heavy[u]){
HLD(v,v);
}
}
}
void update_path(int u,int v,int x){
while(head[u]!=head[v]){
if(high[head[u]] < high[head[v]]) swap(u,v);
update(1,1,n,pos[head[u]],pos[u],x);
u=par[head[u]];
}
if(high[u]>high[v]) swap(u,v);
update(1,1,n,pos[u],pos[v],x);
}
signed main(){
itachi
cin>>n>>q;
for(int i=1;i<n;i++){
int u,v; cin>>u>>v;
adj[u].push_back(v);
adj[v].push_back(u);
}
dfs(1,0);
HLD(1,1);
while(q--){
int opt; cin>>opt;
if(opt==1){
int u,v,x;
cin>>u>>v>>x;
update_path(u,v,x);
}else{
int v; cin>>v;
cout<<get(1,1,n,pos[v],pos[v])<<"\n";
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgYml0KG4saSkgKChuPj5pKSAmMSkKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zLHVucm9sbC1sb29wcyIpCiNkZWZpbmUgaXRhY2hpIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKI2RlZmluZSBtYXhuIDIwMDAwNQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgaW50IGxvbmcgbG9uZwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmxsIHN6W21heG5dLCBoaWdoW21heG5dLCBwYXJbbWF4bl07CmxsIGhlYXZ5W21heG5dLCBoZWFkW21heG5dLCBwb3NbbWF4bl07CmxsIG4scSxjdXI9MDsKdmVjdG9yPGludD4gYWRqW21heG5dOwoKc3RydWN0IE5vZGV7CiAgICBsbCBzdW07CiAgICBpbnQgY250MTsKICAgIGxsIGxhenk7ICAgCiAgICBib29sIGZsaXA7Cn0gc3RbNCptYXhuXTsKCnZvaWQgYXBwbHlfYWRkKGludCBpZCxpbnQgbCxpbnQgcixsbCB4KXsKICAgIGludCBsZW49ci1sKzE7CiAgICBzdFtpZF0uc3VtICs9IHgqKGxlbiAtIDIqc3RbaWRdLmNudDEpOwogICAgc3RbaWRdLmxhenkgKz0geDsKfQoKdm9pZCBhcHBseV9mbGlwKGludCBpZCxpbnQgbCxpbnQgcil7CiAgICBpbnQgbGVuPXItbCsxOwogICAgc3RbaWRdLmNudDEgPSBsZW4gLSBzdFtpZF0uY250MTsKICAgIHN0W2lkXS5mbGlwIF49IDE7CiAgICBzdFtpZF0ubGF6eSA9IC1zdFtpZF0ubGF6eTsKfQoKdm9pZCBwdXNoKGludCBpZCxpbnQgbCxpbnQgcil7CiAgICBpbnQgbT0obCtyKT4+MTsKCiAgICBpZihzdFtpZF0uZmxpcCl7CiAgICAgICAgYXBwbHlfZmxpcChpZDw8MSxsLG0pOwogICAgICAgIGFwcGx5X2ZsaXAoaWQ8PDF8MSxtKzEscik7CiAgICAgICAgc3RbaWRdLmZsaXA9MDsKICAgIH0KCiAgICBpZihzdFtpZF0ubGF6eSl7CiAgICAgICAgYXBwbHlfYWRkKGlkPDwxLGwsbSxzdFtpZF0ubGF6eSk7CiAgICAgICAgYXBwbHlfYWRkKGlkPDwxfDEsbSsxLHIsc3RbaWRdLmxhenkpOwogICAgICAgIHN0W2lkXS5sYXp5PTA7CiAgICB9Cn0KCnZvaWQgcHVsbChpbnQgaWQpewogICAgc3RbaWRdLnN1bSA9IHN0W2lkPDwxXS5zdW0gKyBzdFtpZDw8MXwxXS5zdW07CiAgICBzdFtpZF0uY250MSA9IHN0W2lkPDwxXS5jbnQxICsgc3RbaWQ8PDF8MV0uY250MTsKfQoKdm9pZCB1cGRhdGUoaW50IGlkLGludCBsLGludCByLGludCB1LGludCB2LGxsIHgpewogICAgaWYobD5yIHx8IHU+diB8fCBsPnYgfHwgcjx1KSByZXR1cm47CiAgICBpZih1PD1sICYmIHI8PXYpewogICAgICAgIGFwcGx5X2FkZChpZCxsLHIseCk7CiAgICAgICAgYXBwbHlfZmxpcChpZCxsLHIpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHB1c2goaWQsbCxyKTsKICAgIGludCBtPShsK3IpPj4xOwogICAgdXBkYXRlKGlkPDwxLGwsbSx1LHYseCk7CiAgICB1cGRhdGUoaWQ8PDF8MSxtKzEscix1LHYseCk7CiAgICBwdWxsKGlkKTsKfQoKbGwgZ2V0KGludCBpZCxpbnQgbCxpbnQgcixpbnQgdSxpbnQgdil7CiAgICBpZihsPnIgfHwgdT52IHx8IGw+diB8fCByPHUpIHJldHVybiAwOwogICAgaWYodTw9bCAmJiByPD12KSByZXR1cm4gc3RbaWRdLnN1bTsKICAgIHB1c2goaWQsbCxyKTsKICAgIGludCBtPShsK3IpPj4xOwogICAgcmV0dXJuIGdldChpZDw8MSxsLG0sdSx2KSArIGdldChpZDw8MXwxLG0rMSxyLHUsdik7Cn0KCnZvaWQgZGZzKGludCB1LGludCBwKXsKICAgIHN6W3VdPTE7CiAgICBwYXJbdV09cDsKICAgIGludCBteD0wOwoKICAgIGZvcihpbnQgdjphZGpbdV0pewogICAgICAgIGlmKHY9PXApIGNvbnRpbnVlOwogICAgICAgIGhpZ2hbdl09aGlnaFt1XSsxOwogICAgICAgIGRmcyh2LHUpOwogICAgICAgIHN6W3VdKz1zelt2XTsKICAgICAgICBpZihzelt2XT5teCl7CiAgICAgICAgICAgIG14PXN6W3ZdOwogICAgICAgICAgICBoZWF2eVt1XT12OwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBITEQoaW50IHUsaW50IGgpewogICAgaGVhZFt1XT1oOwogICAgcG9zW3VdPSsrY3VyOwoKICAgIGlmKGhlYXZ5W3VdKSBITEQoaGVhdnlbdV0saCk7CgogICAgZm9yKGludCB2OmFkalt1XSl7CiAgICAgICAgaWYodiE9cGFyW3VdICYmIHYhPWhlYXZ5W3VdKXsKICAgICAgICAgICAgSExEKHYsdik7CiAgICAgICAgfQogICAgfQp9CgoKdm9pZCB1cGRhdGVfcGF0aChpbnQgdSxpbnQgdixpbnQgeCl7CiAgICB3aGlsZShoZWFkW3VdIT1oZWFkW3ZdKXsKICAgICAgICBpZihoaWdoW2hlYWRbdV1dIDwgaGlnaFtoZWFkW3ZdXSkgc3dhcCh1LHYpOwogICAgICAgIHVwZGF0ZSgxLDEsbixwb3NbaGVhZFt1XV0scG9zW3VdLHgpOwogICAgICAgIHU9cGFyW2hlYWRbdV1dOwogICAgfQogICAgaWYoaGlnaFt1XT5oaWdoW3ZdKSBzd2FwKHUsdik7CiAgICB1cGRhdGUoMSwxLG4scG9zW3VdLHBvc1t2XSx4KTsKfQoKCnNpZ25lZCBtYWluKCl7CiAgICBpdGFjaGkKICAgIGNpbj4+bj4+cTsKCiAgICBmb3IoaW50IGk9MTtpPG47aSsrKXsKICAgICAgICBpbnQgdSx2OyBjaW4+PnU+PnY7CiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHUpOwogICAgfQoKICAgIGRmcygxLDApOwogICAgSExEKDEsMSk7CgogICAgd2hpbGUocS0tKXsKICAgICAgICBpbnQgb3B0OyBjaW4+Pm9wdDsKICAgICAgICBpZihvcHQ9PTEpewogICAgICAgICAgICBpbnQgdSx2LHg7CiAgICAgICAgICAgIGNpbj4+dT4+dj4+eDsKICAgICAgICAgICAgdXBkYXRlX3BhdGgodSx2LHgpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBpbnQgdjsgY2luPj52OwogICAgICAgICAgICBjb3V0PDxnZXQoMSwxLG4scG9zW3ZdLHBvc1t2XSk8PCJcbiI7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0K