#include <bits/stdc++.h>
long long mod = 1000000007;
using namespace std;
int T[2][200009];
int S[200009], E[200009], t = 1;
int val[200009], a, b;
vector<int> v[200009];
int L[200009];
void U(int id, int i, int v) {
  while (i < 200009) {
    T[id][i] += v;
    i += i & -i;
  }
}
long long Q(int id, int i) {
  long long sm = 0;
  while (i > 0) {
    sm += T[id][i];
    i -= i & -i;
  }
  return sm;
}
void dfs(int u, int p) {
  L[u] = L[p] + 1;
  S[u] = ++t;
  for (int i = 0; i < v[u].size(); i++)
    if (v[u][i] != p) dfs(v[u][i], u);
  E[u] = t;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i++) cin >> val[i];
  int nn = n - 1;
  while (nn--) {
    cin >> a >> b;
    v[a].push_back(b), v[b].push_back(a);
  }
  dfs(1, 0);
  int ty;
  while (m--) {
    cin >> ty;
    cin >> a;
    int id = L[a] % 2;
    if (ty == 1) {
      cin >> b;
      U(id, S[a], b);
      U(id, E[a] + 1, -b);
      id = 1 - id;
      U(id, S[a], -b);
      U(id, E[a] + 1, b);
    } else
      cout << val[a] + Q(id, S[a]) << endl;
  }
  return 0;
}
