#include <bits/stdc++.h>
using namespace std;
const int M = 200200, N = 262144;
int n, q, k = 1, T, X[M], Y[M], a[M], D[M], s[N * 2][2];
bool W[M];
vector<int> g[M];
inline int B(int v) {
  W[v] = 1;
  X[v] = Y[v] = k++;
  for (int i = 0; i < g[v].size(); i++)
    if (!W[g[v][i]]) D[g[v][i]] = D[v] + 1, Y[v] = B(g[v][i]);
  return Y[v];
}
inline void A(int S, int F, int L, int f, int l, int V, int t) {
  if (F == f && L == l) {
    s[S][t] += V;
    return;
  }
  int m = (F + L) / 2;
  if (l <= m)
    A(S * 2, F, m, f, l, V, t);
  else if (m < f)
    A(S * 2 + 1, m + 1, L, f, l, V, t);
  else
    A(S * 2, F, m, f, m, V, t), A(S * 2 + 1, m + 1, L, m + 1, l, V, t);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> q;
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int v, u, i = 1; i < n; i++)
    cin >> v >> u, g[v].push_back(u), g[u].push_back(v);
  B(1);
  for (int t, x, V; q--;) {
    cin >> t;
    if (t == 1) {
      cin >> x >> V, A(1, 1, N, X[x], Y[x], V, D[x] & 1);
    } else {
      cin >> x;
      V = 0;
      for (int I = N + X[x] - 1, i = D[x] & 1; I;
           V += s[I][i] - s[I][!i], I /= 2)
        ;
      cout << V + a[x] << endl;
    }
  }
  return 0;
}
