#include <bits/stdc++.h>
using namespace std;
vector<int> g[200100];
int t[2002000], t1[2000100], fl[200100], kl1[200200], kl2[200200], ans,
    a[200200], k, k1, k2, K1[200200], K2[200200];
void dfs(int v, int p) {
  fl[v] = 1 - fl[p];
  for (int i = 0; i < g[v].size(); i++)
    if (g[v][i] != p) {
      dfs(g[v][i], v);
      kl1[v] += kl1[g[v][i]];
      kl2[v] += kl2[g[v][i]];
    }
  if (fl[v]) {
    k1++;
    kl1[v]++;
  } else {
    k2++;
    kl2[v]++;
  }
  K1[v] = k1;
  K2[v] = k2;
}
void modify(int l, int r, int lv, int rv, int v, int p) {
  if (l > rv || r < lv) return;
  if (lv >= l && rv <= r) {
    t[v] += p;
    return;
  }
  modify(l, r, lv, (lv + rv) / 2, v * 2, p);
  modify(l, r, (lv + rv) / 2 + 1, rv, v * 2 + 1, p);
}
void modify1(int l, int r, int lv, int rv, int v, int p) {
  if (l > rv || r < lv) return;
  if (lv >= l && rv <= r) {
    t1[v] += p;
    return;
  }
  modify1(l, r, lv, (lv + rv) / 2, v * 2, p);
  modify1(l, r, (lv + rv) / 2 + 1, rv, v * 2 + 1, p);
}
void find_ans(int v) {
  for (; v > 0; v /= 2) ans += t[v];
}
void find_ans1(int v) {
  for (; v > 0; v /= 2) ans += t1[v];
}
int main() {
  ios_base::sync_with_stdio(0);
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < n - 1; i++) {
    int x, y;
    cin >> x >> y;
    x--;
    y--;
    g[x].push_back(y);
    g[y].push_back(x);
  }
  fl[0] = 1;
  k1 = 0, k2 = 0;
  dfs(0, 0);
  int x = 1, x1 = 1;
  while (x < K1[0]) x *= 2;
  while (x1 < K2[0]) x1 *= 2;
  for (int i = 0; i < m; i++) {
    int c, v, val;
    cin >> c;
    if (c == 1) {
      cin >> v >> val;
      v--;
      if (fl[v]) {
        modify(K1[v] - kl1[v] + 1, K1[v], 1, x, 1, val);
        modify1(K2[v] - kl2[v] + 1, K2[v], 1, x1, 1, -val);
      } else {
        modify(K1[v] - kl1[v] + 1, K1[v], 1, x, 1, -val);
        modify1(K2[v] - kl2[v] + 1, K2[v], 1, x1, 1, val);
      }
    } else {
      cin >> v;
      v--;
      ans = 0;
      if (fl[v])
        find_ans(K1[v] + x - 1);
      else
        find_ans1(K2[v] + x1 - 1);
      cout << ans + a[v] << endl;
    }
  }
  return 0;
}
