#include <bits/stdc++.h>
int a[200000], b[200000], bb[200000], bc[200000], c[2][2 * 200000 / 300 + 1],
    d[200000], e[200000], f[200000 << 1], h[200000 << 1], n, m, i, x, y, t, k;
bool g[200000];
void go(int v = 0, int p = 0) {
  d[v] = k;
  g[v] = p;
  h[k] = v;
  ++k;
  for (int i = b[v]; i; i = bb[i]) go(bc[i], p ^ 1);
  e[v] = k;
  h[k] = v;
  ++k;
}
int main() {
  scanf("%d%d", &n, &m);
  for (i = 0; i < n; i++) scanf("%d", &a[i]);
  for (i = 1; i < n; i++) {
    scanf("%d%d", &x, &y);
    --x, --y;
    if (y < x) k = x, x = y, y = k;
    bc[i] = y;
    bb[i] = b[x];
    b[x] = i;
  }
  go();
  while (m--) {
    scanf("%d", &t);
    if (t == 1) {
      scanf("%d%d", &x, &y);
      --x;
      if (g[x]) y = -y;
      for (i = d[x]; i <= e[x]; i++)
        if (i % 300 == 0 && e[x] >= i + 300) {
          c[0][i / 300] += y;
          c[1][i / 300] -= y;
          i += 300 - 1;
        } else if (i == d[h[i]])
          f[i] += !g[h[i]] ? y : -y;
    } else {
      scanf("%d", &x);
      --x;
      printf("%d\n", a[x] + c[g[x]][d[x] / 300] + f[d[x]]);
    }
  }
  return 0;
}
