// g++ 1.cpp -std=c++17 -O2 -I . #include using namespace std; #include using namespace atcoder; using ll = long long; using ld = long double; using vi = vector; using vvi = vector; using vll = vector; using vvll = vector; using vld = vector; using vvld = vector; using vst = vector; using vvst = vector; #define fi first #define se second #define pb push_back #define eb emplace_back #define pq_big(T) priority_queue,less> #define pq_small(T) priority_queue,greater> #define all(a) a.begin(),a.end() #define rep(i,start,end) for(ll i=start;i<(ll)(end);i++) #define per(i,start,end) for(ll i=start;i>=(ll)(end);i--) #define uniq(a) sort(all(a));a.erase(unique(all(a)),a.end()) void dfs(int now,int pre,vector>> &g,vi &need){ for(auto [lv,nxt]:g[now]){ if(nxt==pre)continue; need[nxt]=max(need[now],lv); dfs(nxt,now,g,need); } } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n;cin>>n; vi need(n,1e9+10); vector>> g(n); rep(i,0,n-1){ int l,a;cin>>l>>a; a--; g[a].emplace_back(l,(int)i+1); // cost,to } need[0]=0; dfs(0,-1,g,need); vi n2=need; sort(all(n2)); int q;cin>>q; while(q--){ int t;cin>>t; if(t==1){ int x;cin>>x; cout<>y; y--; if(need[y]==1e9+10){ need[y]=-1; } cout<