#include <bits/stdc++.h>
using namespace std;
using lint = long long;
template<class T = int> using V = vector<T>;
template<class T = int> using VV = V< V<T> >;

template<class T> struct FenwickTree {
  const int n;
  V<T> t;
  FenwickTree(int n) : n(n), t(n + 1) {}
  void add(int i, T x) { for (++i; i <= n; i += i & -i) t[i] += x; }
  T sum(int i) const {
    T s = 0;
    for (; i; i -= i & -i) s += t[i];
    return s;
  }
  T sum(int l, int r) const { return sum(r) - sum(l); }
};

// BEGIN CUT HERE
struct HeavyLightDecomposition {
  const int n;
  VV<> g;
  V<> sz, par, in, out, anc;
  HeavyLightDecomposition(VV<>& g, int r = 0) : n(g.size()), g(g), sz(n), par(n), in(n), out(n), anc(n) {
    dfs_sz(r, -1);
    anc[r] = r;
    dfs_hl(r);
  }
  void dfs_sz(int v, int p) {
    par[v] = p;
    for (auto&& w : g[v]) if (w == p) {
      swap(w, g[v].back());
      g[v].pop_back();
      break;
    }
    sz[v] = 1;
    for (auto&& w : g[v]) {
      dfs_sz(w, v);
      sz[v] += sz[w];
      if (sz[w] > sz[g[v][0]]) swap(w, g[v][0]);
    }
  }
  void dfs_hl(int v) {
    static int t = 0;
    in[v] = t++;
    for (int w : g[v]) {
      anc[w] = w == g[v][0] ? anc[v] : w;
      dfs_hl(w);
    }
    out[v] = t;
  }
  int lca(int u, int v) {
    while (true) {
      if (in[u] > in[v]) swap(u, v);
      if (anc[u] == anc[v]) return u;
      v = par[anc[v]];
    }
  }
};
// END CUT HERE

int main() {
  cin.tie(nullptr); ios::sync_with_stdio(false);
  int n; cin >> n;
  VV<> g(n);
  for (int v = 0; v < n; ++v) {
    int k; cin >> k;
    while (k--) {
      int c; cin >> c;
      g[v].push_back(c);
    }
  }
  HeavyLightDecomposition hld(g);
  FenwickTree<lint> ft(n);
  int q; cin >> q;
  while (q--) {
    int tp; cin >> tp;
    if (!tp) {
      int v, w; cin >> v >> w;
      ft.add(hld.in[v], w);
    } else {
      int v; cin >> v;
      int u = 0;
      lint res = 0;
      while (true) {
        if (hld.in[u] > hld.in[v]) swap(u, v);
        if (hld.anc[u] == hld.anc[v]) break;
        res += ft.sum(hld.in[hld.anc[v]], hld.in[v] + 1);
        v = hld.par[hld.anc[v]];
      }
      res += ft.sum(hld.in[u] + 1, hld.in[v] + 1);
      cout << res << '\n';
    }
  }
}
