#include #define endl '\n' using namespace std; typedef long long ll; const int maxn = 50006; ll i,j,p,q,n,m,k,a[maxn],type,anss,tin[maxn],tout[maxn],obr[maxn],tek,tt,Q,ans[maxn]; vector v[maxn]; void read() { freopen("xor.in","r",stdin); freopen("xor.out","w",stdout); } ll seg[4*maxn]; ll lz[4*maxn]; void dfs(ll u,ll p,ll tek) { tt++; tin[u]=tt; ans[u]=tek; ans[u]^=a[u]; obr[tt]=u; for(auto i:v[u]) { if(i==p) continue; dfs(i,u,(tek^a[u])); } //sub[u]^=a[u]; tout[u]=tt; //cout<q || rqr || r=ql && r<=qr) { lz[p]=val; push_lazy(p); // cout<>n>>Q; for(i=1;i<=n;i++) { cin>>a[i]; } for(i=1;i>p>>q; v[p].push_back(q); v[q].push_back(p); } dfs(1,0,0); while(Q--) { cin>>type; if(type==1) { cin>>p>>q; k=p; // cout<<"shte update-va "<>p; tek = ans[p]; query(tin[p]); cout<