#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define F first
#define S second
#define yes cout << "YES" << "\n"
#define no cout << "NO" << "\n"
#define answer cout << ans1 << "\n"
#define db long double
using namespace std;
ll n,m,a,b,c,d,k,w,x,y,z,ans1,q,T;
bool f=0;
char cc;
const int N=1e6 + 10 , LOG = 20;
const int mod = 998244353;
vector<int> g[N];
int in[N],out[N];
struct segtree
{
int sz;
vector<ll> sums;
void init(int n){sz=1;while(sz<n)sz*=2;sums.assign(2*sz,0);}
void put(int lx,int rx,ll x,int v,int l,int r)
{
if(l>=lx && r<=rx){sums[v]+=x; return;}
if(l>=rx || r<=lx){return;}
int m=(l+r)/2;
put(lx,rx,x,2*v+1,l,m);
put(lx,rx,x,2*v+2,m,r);
}
void put(int lx,int rx,ll x)
{
put(lx,rx,x,0,0,sz);
}
ll get_Sum(int i,int v,int l,int r)
{
if(r-l==1){return sums[v];}
int m = (l+r)/2;
ll ret = sums[v];
if(i<m)ret += get_Sum(i,2*v+1,l,m);
else ret += get_Sum(i,2*v+2,m,r);
return ret;
}
ll get_Sum(int i)
{
return get_Sum(i,0,0,sz);
}
} sg;
void dfs(int v,int p=0)
{
in[v] = ++T;
for(auto x : g[v])
{
if(x==p){continue;}
dfs(x,v);
}
out[v] = T;
}
void solve()
{
cin >> n >> q;
for(int i=0;i<n-1;++i)
{
cin >> a >> b;
g[a].push_back(b);
g[b].push_back(a);
}
dfs(1);
sg.init(n+2);
while(q--)
{
cin >> a;
if(a==1)
{
int v,x;
cin >> v >> x;
sg.put(in[v],out[v]+1,x);
}
else
{
int v;
cin >> v;
cout << sg.get_Sum(in[v]) << "\n";
}
}
}
int main(){
ios_base::sync_with_stdio(NULL);cin.tie(0);cout.tie(0);
int tt=1,var=0;
// cin >> tt;
while(tt--)
{
solve();
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSB5ZXMgY291dCA8PCAiWUVTIiA8PCAiXG4iCiNkZWZpbmUgbm8gY291dCA8PCAiTk8iIDw8ICJcbiIKI2RlZmluZSBhbnN3ZXIgY291dCA8PCBhbnMxIDw8ICJcbiIKI2RlZmluZSBkYiBsb25nIGRvdWJsZQp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmxsIG4sbSxhLGIsYyxkLGssdyx4LHkseixhbnMxLHEsVDsKYm9vbCBmPTA7CmNoYXIgY2M7CmNvbnN0IGludCBOPTFlNiArIDEwICwgTE9HID0gMjA7CmNvbnN0IGludCBtb2QgPSA5OTgyNDQzNTM7CnZlY3RvcjxpbnQ+IGdbTl07CmludCBpbltOXSxvdXRbTl07CgpzdHJ1Y3Qgc2VndHJlZQp7CiAgaW50IHN6OwogIHZlY3RvcjxsbD4gc3VtczsKICB2b2lkIGluaXQoaW50IG4pe3N6PTE7d2hpbGUoc3o8bilzeio9MjtzdW1zLmFzc2lnbigyKnN6LDApO30KCiAgdm9pZCBwdXQoaW50IGx4LGludCByeCxsbCB4LGludCB2LGludCBsLGludCByKQogIHsKICAgIGlmKGw+PWx4ICYmIHI8PXJ4KXtzdW1zW3ZdKz14OyByZXR1cm47fQogICAgaWYobD49cnggfHwgcjw9bHgpe3JldHVybjt9CiAgICBpbnQgbT0obCtyKS8yOwogICAgcHV0KGx4LHJ4LHgsMip2KzEsbCxtKTsKICAgIHB1dChseCxyeCx4LDIqdisyLG0scik7CiAgfQoKICB2b2lkIHB1dChpbnQgbHgsaW50IHJ4LGxsIHgpCiAgewogICAgcHV0KGx4LHJ4LHgsMCwwLHN6KTsKICB9CgogIGxsIGdldF9TdW0oaW50IGksaW50IHYsaW50IGwsaW50IHIpCiAgewogICAgaWYoci1sPT0xKXtyZXR1cm4gc3Vtc1t2XTt9CiAgICBpbnQgbSA9IChsK3IpLzI7CiAgICBsbCByZXQgPSBzdW1zW3ZdOwogICAgaWYoaTxtKXJldCArPSBnZXRfU3VtKGksMip2KzEsbCxtKTsKICAgIGVsc2UgcmV0ICs9IGdldF9TdW0oaSwyKnYrMixtLHIpOwogICAgcmV0dXJuIHJldDsKICB9CgogIGxsIGdldF9TdW0oaW50IGkpCiAgewogICAgcmV0dXJuIGdldF9TdW0oaSwwLDAsc3opOwogIH0KfSBzZzsKCnZvaWQgZGZzKGludCB2LGludCBwPTApCnsKICBpblt2XSA9ICsrVDsKICBmb3IoYXV0byB4IDogZ1t2XSkKICB7CiAgICBpZih4PT1wKXtjb250aW51ZTt9CiAgICBkZnMoeCx2KTsKICB9CiAgb3V0W3ZdID0gVDsKfQoKdm9pZCBzb2x2ZSgpCnsKICBjaW4gPj4gbiA+PiBxOwogIGZvcihpbnQgaT0wO2k8bi0xOysraSkKICB7CiAgICBjaW4gPj4gYSA+PiBiOwogICAgZ1thXS5wdXNoX2JhY2soYik7CiAgICBnW2JdLnB1c2hfYmFjayhhKTsKICB9CiAgZGZzKDEpOwogIHNnLmluaXQobisyKTsKICB3aGlsZShxLS0pCiAgewogICAgY2luID4+IGE7CiAgICBpZihhPT0xKQogICAgewogICAgICBpbnQgdix4OwogICAgICBjaW4gPj4gdiA+PiB4OwogICAgICBzZy5wdXQoaW5bdl0sb3V0W3ZdKzEseCk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIGludCB2OwogICAgICBjaW4gPj4gdjsKICAgICAgY291dCA8PCBzZy5nZXRfU3VtKGluW3ZdKSA8PCAiXG4iOwogICAgfQogIH0KfQoKaW50IG1haW4oKXsKICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKE5VTEwpO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiAgaW50IHR0PTEsdmFyPTA7Ci8vICBjaW4gPj4gdHQ7CiAgd2hpbGUodHQtLSkKICB7CiAgICBzb2x2ZSgpOwogIH0KICByZXR1cm4gMDsKfQo=