#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define all(x) (x).begin(),(x).end()
const int mod=1000000007,MAX=1<<19;
const ll INF=1LL<<40;
struct edge{
    int to;
    ll dis;
};

vector<edge> G[MAX];
int n;
int fi[MAX],la[MAX],vs[MAX],depth[MAX];
ll bit[MAX+1];

ll sum(int i){
    int s=0;
    while(i>0){
        s+=bit[i];
        i-=i&-i;
    }
    return s;
}

//sからtの和=sum(t)-sum(s-1)

void add(int i,ll x){
    while(i<=n){
        bit[i]+=x;
        i+=i&-i;
    }
}

void DFS(int v,int p,int d,int &k){
    fi[v]=k;
    la[v]=k;
    vs[k+n-1]=v;
    depth[k+n-1]=d;
    k++;
    
    for(int i=0;i<G[v].size();i++){
        edge E=G[v][i];
        if(E.to!=p){
            add(k-1,E.dis);
            
            DFS(G[v][i].to,v,d+1,k);
            
            add(k-1,-E.dis);
            
            la[v]=k;
            vs[k+n-1]=v;
            depth[k+n-1]=d;
            k++;
        }
    }
}//1が最初...fi[root]=1になる

void rmq_init(){
    for(int i=n-2;i>=0;i--){
        if(depth[i*2+1]<depth[i*2+2]){
            depth[i]=depth[i*2+1];
            vs[i]=vs[i*2+1];
        }else{
            depth[i]=depth[i*2+2];
            vs[i]=vs[i*2+2];
        }
    }
}

void init(int n_){
    n=1;
    while(n<n_) n*=2;
    int k=1;
    DFS(0,-1,0,k);
    rmq_init();
}//2*N+1ぐらいやっとくとよい、配列サイズも2倍とる

int query(int a,int b,int k,int l,int r){
    
    if(r<=a||b<=l) return -1;
    if(a<=l&&r<=b) return k;
    else{
        int vl=query(a,b,2*k+1,l,(l+r)/2);
        int vr=query(a,b,2*k+2,(l+r)/2,r);
        if(vl==-1) return vr;
        if(vr==-1) return vl;
        if(depth[vl]<depth[vr]) return vl;
        return vr;
    }
}

int lca(int u,int v){
    int a=min(fi[u],fi[v]),b=max(fi[u],fi[v]);
    return vs[query(a,b+1,0,0,n)];
}

int main(){

    int N;cin>>N;
    for(int i=0;i<N;i++){
        int k;cin>>k;
        for(int j=0;j<k;j++){
            int c;cin>>c;
            G[i].push_back({c,0});
            G[c].push_back({i,0});
        }
    }
    
    init(2*N+1);
    
    int Q;cin>>Q;
    
    while(Q){
        int k;cin>>k;
        if(k==0){
            int a,b;cin>>a>>b;
            add(fi[a],b);
            add(la[a]+1,-b);
        }else{
            int a;cin>>a;
            cout<<sum(fi[a])+sum(fi[0])-2*sum(fi[lca(a,0)])<<endl;
        }
        
        Q--;
    }
    
    
}

//sum(fi[a]-1)+sum(fi[b]-1)-2*sum(fi[lca(a,b)]-1)が長さ変更前の長さ


