#include <bits/stdc++.h>
using namespace std;
const double PI =
    3.14159265358979323846264338327950288419716939937510582097494459230;
void swaps(char *x, char *y) {
  char temp;
  temp = *x;
  *x = *y;
  *y = temp;
}
void swapi(int *a, int *b) {
  int temp;
  temp = *a;
  *a = *b;
  *b = temp;
}
unsigned long long gcd(unsigned long long a, unsigned long long b) {
  if (a == 0) return b;
  if (b == 0) return a;
  if (a == 1 || b == 1) return 1;
  if (a == b) return a;
  if (a > b)
    return gcd(b, a % b);
  else
    return gcd(a, b % a);
}
long long Tree[4000010];
int V[4000010];
int N;
int Time;
int Outtime[4000010];
int Intime[4000010];
int Lvl[4000010];
int maxval;
bool vis[4000010];
std::vector<std::vector<int> > Edge(2000010);
void Add(int idx, int val) {
  for (int i = idx; i <= maxval; i += (i & -i)) Tree[i] += val;
}
long long Query(int idx) {
  long long S = 0;
  for (int i = idx; i > 0; i -= (i & -i)) S += Tree[i];
  return S;
}
void dfs(int idx) {
  vis[idx] = true;
  Intime[idx] = ++Time;
  vis[idx] = true;
  for (int i = 0; i < Edge[idx].size(); i++) {
    if (vis[Edge[idx][i]]) continue;
    Lvl[Edge[idx][i]] = Lvl[idx] + 1;
    dfs(Edge[idx][i]);
  }
  Outtime[idx] = ++Time;
}
int main() {
  int Cases = 1;
  for (int Case = 0; Case < Cases; Case++) {
    int u, v, opt, node, Q;
    cin >> N >> Q;
    for (int i = 1; i <= N; i++) cin >> V[i];
    for (int i = 0; i < N - 1; i++) {
      cin >> u >> v;
      Edge[u].push_back(v);
      Edge[v].push_back(u);
    }
    dfs(1);
    maxval = Outtime[1];
    for (int i = 0; i < Q; i++) {
      cin >> opt;
      opt -= 1;
      if (opt == 0) {
        cin >> node >> v;
        if (Lvl[node] % 2) {
          Add(Intime[node], -v);
          Add(Outtime[node], v);
        } else {
          Add(Intime[node], v);
          Add(Outtime[node], -v);
        }
      } else {
        cin >> node;
        if (Lvl[node] % 2)
          cout << V[node] - Query(Intime[node]) << endl;
        else
          cout << V[node] + Query(Intime[node]) << endl;
      }
    }
  }
  return 0;
}
