

#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef long long ll;
typedef pair<ll,int> pii;
int a[100002];
int d[100002];
int n,m;
vector<int> mp[100002];
bool bo[100002];
void bfs1()
{ bo[1]=true;queue<int> q;q.push(1);while(q.size()){int u=q.front();q.pop();for(int i=0;i<mp[u].size();i++){int v=mp[u][i];if(!bo[v]){bo[v]=true;d[v]=d[u]+1;q.push(v);}}}
}
vector<int> bfs(int s)
{ vector<int> an;bool bo[100002];queue<int> q;q.push(s);an.push_back(a[s]);while(q.size()){int u=q.front();q.pop();for(int i=0;i<mp[u].size();i++){int v=mp[u][i];if(d[v]>d[u]){an.push_back(a[v]);bo[v]=true;q.push(v);}}}return an;
}
int main()
{
ios::sync_with_stdio(0);
cout.tie(0);
cin.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=0;i<n-1;i++)
{int u,v;cin>>u>>v;mp[u].push_back(v);mp[v].push_back(u);
}
bfs1();
for(int i=0;i<m;i++)
{int x;cin>>x;if(x==1){int u,w;cin>>u>>w;a[u]=w;}else{int u;cin>>u;vector<int> an=bfs(u);ll s=0;for(int i=0;i<an.size();i++) s^=an[i];cout<<s<<endl;}
}
}