#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair P; template struct BIT{ vector bit; int size; BIT(int n):size(n), bit(n+1, 0){} T sum(int i){ //[0, i) T s=0; while(i>0){ s^=bit[i]; i-=(i&(-i)); } return s; } T sum(int l, int r){ //[l, r) return sum(r)^sum(l); } void add(int i, T x){ i++; while(i<=size){ bit[i]^=x; i+=(i&(-i)); } } }; int n, q; vector g[100010]; int c[100010]; int l[100010], r[100010], rev[100010]; int num; void dfs(int x, int p){ l[x]=num++; rev[l[x]]=x; for(auto y:g[x]){ if(y==p) continue; dfs(y, x); } r[x]=num; } int main() { cin>>n>>q; for(int i=0; i>c[i]; } for(int i=0; i>a>>b; a--; b--; g[a].push_back(b); g[b].push_back(a); } dfs(0, -1); BIT bit(n); for(int i=0; i>t; int x, y; cin>>x>>y; x--; if(t==1){ bit.add(l[x], y); }else{ cout<