#include <bits/stdc++.h>
using namespace std;
const int N = 4e5 + 10;
vector<int> adj[N];
int order[N], from[N], to[N], T = 1, n, m, a[N], d[N];
long long seg[2][N * 2], lazy[2][N * 2];
void DFS(int u, int p) {
  order[T] = u;
  from[u] = T++;
  for (int i = 0; i < adj[u].size(); ++i)
    if (p != adj[u][i]) {
      d[adj[u][i]] = 1 + d[u];
      DFS(adj[u][i], u);
    }
  to[u] = T - 1;
}
inline void fix(int n, int s, int e, int b) {
  if (lazy[n] == 0) return;
  seg[b][n] += (e - s + 1) * lazy[b][n];
  if (s != e) {
    lazy[b][n + n] += lazy[b][n];
    lazy[b][n + n + 1] += lazy[b][n];
  }
  lazy[b][n] = 0;
}
void update(int n, int s, int e, int l, int r, int val, int b) {
  fix(n, s, e, b);
  if (s > r || e < l) return;
  if (s >= l && e <= r) {
    seg[b][n] += val;
    if (s != e) {
      lazy[b][n + n] += val;
      lazy[b][n + n + 1] += val;
    }
    return;
  }
  int mid = (s + e) >> 1;
  update(n + n, s, mid, l, r, val, b);
  update(n + n + 1, mid + 1, e, l, r, val, b);
  seg[b][n] = seg[b][n + n] + seg[b][n + n + 1];
}
long long get(int n, int s, int e, int l, int r, int b) {
  if (s > r || e < l) return 0;
  fix(n, s, e, b);
  if (s >= l && e <= r) return seg[b][n];
  int mid = (s + e) >> 1;
  return get(n + n, s, mid, l, r, b) + get(n + n + 1, mid + 1, e, l, r, b);
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; ++i) scanf("%d", a + i + 1);
  for (int i = 1; i < n; ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  DFS(1, -1);
  while (m--) {
    int x;
    scanf("%d", &x);
    if (x == 1) {
      int u, val;
      scanf("%d%d", &u, &val);
      int l = from[u];
      int r = to[u];
      if (d[u] & 1) {
        update(1, 1, n, l, r, val, 1);
        update(1, 1, n, l, r, -val, 0);
      } else {
        update(1, 1, n, l, r, val, 0);
        update(1, 1, n, l, r, -val, 1);
      }
    } else {
      int x;
      scanf("%d", &x);
      int l = from[x];
      int r = to[x];
      printf("%lld\n", a[x] + get(1, 1, n, l, l, d[x] & 1));
    }
  }
  return 0;
}
