//#pragma GCC optimize("Ofast,unroll-loops")
//#pragma GCC target("avx2,tune=native")
#include <bits/stdc++.h>
using namespace std;
#define file "query"
#define ff(i, a, b) for(auto i=(a); i<=(b); ++i)
#define ffr(i, b, a) for(auto i=(b); i>=(a); --i)
#define nl "\n"
#define ss " "
//#define pb push_back
#define pb emplace_back
#define fi first
#define se second
#define sz(s) (int)s.size()
#define all(s) (s).begin(), (s).end()
#define ms(a,x) memset(a, x, sizeof (a))
#define cn continue
#define re exit(0)
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<pii> vpii;
typedef vector<pll> vpll;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll ran(ll l, ll r)
{
return uniform_int_distribution<ll> (l, r)(rng);
}
inline void rf()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
if(fopen(file".inp","r"))
{
freopen(file".inp","r",stdin);
freopen(file".out","w",stdout);
}
}
const int mod=1e9+7;
const int maxn=3e5+15;
const ll inf=5e16;
template<typename T> inline void add(T &x, const T &y)
{
x+=y;
if(x>=mod) x-=mod;
if(x<0) x+=mod;
}
template<typename T> inline bool maxi(T &a, T b)
{
if(a>=b) return 0;
a=b; return 1;
}
template<typename T> inline bool mini(T &a, T b)
{
if(a<=b) return 0;
a=b; return 1;
}
int n, q;
int st[2][maxn], ed[2][maxn], timer[2];
int h[maxn];
vi g[maxn];
void dfs(int u, int par)
{
ff(i ,0, 1) st[i][u]=timer[i]+1;
++timer[h[u]&1 ];
for(auto v:g[u]) if(v!=par) h[v]=h[u]+1, dfs(v, u);
ff(i ,0, 1) ed[i][u]=timer[i];
}
struct node
{
int lazy;
vi val;
node()
{
lazy=0;
val.clear();
}
};
inline node combine(const node &l, const node &r)
{
auto &y=l.val, &z=r.val;
if(y.empty()) return r;
if(z.empty()) return l;
node ans;
auto &x=ans.val;
int i=0, j=0, sz=min(15, sz(y)+sz(z));
x.reserve(sz);
while(i<sz(y) && j<sz(z) && i+j<sz)
{
if(y[i]>=z[j]) x.pb(y[i]), ++i;
else x.pb(z[j]), ++j;
}
while(i<sz(y) && i+j<sz) x.pb(y[i]), ++i;
while(j<sz(z) && i+j<sz) x.pb(z[j]), ++j;
return ans;
}
struct it
{
node t[maxn*2];
void build(int id, int l, int r)
{
if(l==r) return t[id].val.assign(1, 0), void();
int mid=(l+r)>>1;
build(id<<1, l, mid); build(id<<1|1, mid+1, r);
t[id]=combine(t[id<<1], t[id<<1|1]);
}
inline void push(int id)
{
if(t[id].lazy==0) return;
ff(i, id*2, id*2+1)
{
t[i].lazy+=t[id].lazy;
for(auto &x:t[i].val) x+=t[id].lazy;
}
t[id].lazy=0;
}
void upd(int id, int l, int r, int u, int v, int val)
{
if(r<u || v<l) return;
if(u<=l && r<=v)
{
t[id].lazy+=val;
for(auto &x:t[id].val) x+=val;
return;
}
int mid=(l+r)>>1;
push(id);
upd(id<<1, l, mid, u, v, val);
upd(id<<1|1, mid+1 ,r, u, v ,val);
t[id]=combine(t[id<<1], t[id<<1|1] );
}
node get(int id, int l, int r, int u, int v)
{
if(r<u || v<l) return node();
if(u<=l && r<=v) return t[id];
int mid=(l+r)>>1;
push(id);
node x=get(id<<1, l, mid, u, v), y=get(id<<1|1, mid+1, r, u, v);
return combine(x, y);
}
} t0, t1;
signed main()
{
rf();
int sub; cin>>sub;
cin>>n;
ff(u, 2, n)
{
int v; cin>>v; g[v].pb(u);
}
dfs(1, 0);
int n0=timer[0], n1=timer[1];
t0.build(1, 1, n0); t1.build(1 ,1, n1);
cin>>q;
while(q--)
{
string op; cin>>op;
if(op[0]=='a')
{
int u, val; cin>>u>>val;
if(h[u]&1) val=-val;
t0.upd(1, 1, n0, st[0][u] ,ed[0][u], val);
t1.upd(1, 1, n1, st[1][u] ,ed[1][u], -val);
}
else if(op[0]=='g')
{
int u; cin>>u;
node ans;
if(h[u]%2==0) ans=t0.get(1, 1, n0, st[0][u], st[0][u]);
else ans=t1.get(1, 1, n1, st[1][u], st[1][u]);
cout<<ans.val[0]<<ss;
}
else
{
int u, k; cin>>u>>k;
node l=t0.get(1, 1, n0, st[0][u], ed[0][u]);
node r=t1.get(1, 1, n1, st[1][u], ed[1][u]);
node ans=combine(l ,r);
if(ans.val.size()<k) cout<<0<<ss;
else cout<<ans.val[k-1]<<ss;
}
}
re;
}
Ly8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QsdW5yb2xsLWxvb3BzIikKLy8jcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsdHVuZT1uYXRpdmUiKQojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZmlsZSAicXVlcnkiCiNkZWZpbmUgZmYoaSwgYSwgYikgZm9yKGF1dG8gaT0oYSk7IGk8PShiKTsgKytpKQojZGVmaW5lIGZmcihpLCBiLCBhKSBmb3IoYXV0byBpPShiKTsgaT49KGEpOyAtLWkpCiNkZWZpbmUgbmwgIlxuIgojZGVmaW5lIHNzICIgIgovLyNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBzeihzKSAoaW50KXMuc2l6ZSgpCiNkZWZpbmUgYWxsKHMpIChzKS5iZWdpbigpLCAocykuZW5kKCkKI2RlZmluZSBtcyhhLHgpIG1lbXNldChhLCB4LCBzaXplb2YgKGEpKQojZGVmaW5lIGNuIGNvbnRpbnVlCiNkZWZpbmUgcmUgZXhpdCgwKQoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsbDsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZDsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKdHlwZWRlZiB2ZWN0b3I8bGw+IHZsbDsKdHlwZWRlZiBwYWlyPGludCwgaW50PiBwaWk7CnR5cGVkZWYgcGFpcjxsbCwgbGw+IHBsbDsKdHlwZWRlZiB2ZWN0b3I8cGlpPiB2cGlpOwp0eXBlZGVmIHZlY3RvcjxwbGw+IHZwbGw7CgptdDE5OTM3XzY0IHJuZyhjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwpsbCByYW4obGwgbCwgbGwgcikKewogICAgcmV0dXJuIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxsbD4gKGwsIHIpKHJuZyk7Cn0KCmlubGluZSB2b2lkIHJmKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOyBjb3V0LnRpZShudWxscHRyKTsKICAgIGlmKGZvcGVuKGZpbGUiLmlucCIsInIiKSkKICAgIHsKICAgICAgICBmcmVvcGVuKGZpbGUiLmlucCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuKGZpbGUiLm91dCIsInciLHN0ZG91dCk7CiAgICB9Cn0KCmNvbnN0IGludCBtb2Q9MWU5Kzc7CmNvbnN0IGludCBtYXhuPTNlNSsxNTsKY29uc3QgbGwgaW5mPTVlMTY7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBhZGQoVCAmeCwgY29uc3QgVCAmeSkKewogICAgeCs9eTsKICAgIGlmKHg+PW1vZCkgeC09bW9kOwogICAgaWYoeDwwKSB4Kz1tb2Q7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIG1heGkoVCAmYSwgVCBiKQp7CiAgICBpZihhPj1iKSByZXR1cm4gMDsKICAgIGE9YjsgcmV0dXJuIDE7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIG1pbmkoVCAmYSwgVCBiKQp7CiAgICBpZihhPD1iKSByZXR1cm4gMDsKICAgIGE9YjsgcmV0dXJuIDE7Cn0KCmludCBuLCBxOwppbnQgc3RbMl1bbWF4bl0sIGVkWzJdW21heG5dLCB0aW1lclsyXTsKaW50IGhbbWF4bl07CnZpIGdbbWF4bl07Cgp2b2lkIGRmcyhpbnQgdSwgaW50IHBhcikKewogICAgZmYoaSAsMCwgMSkgc3RbaV1bdV09dGltZXJbaV0rMTsKICAgICsrdGltZXJbaFt1XSYxIF07CiAgICBmb3IoYXV0byB2OmdbdV0pIGlmKHYhPXBhcikgaFt2XT1oW3VdKzEsIGRmcyh2LCB1KTsKICAgIGZmKGkgLDAsIDEpIGVkW2ldW3VdPXRpbWVyW2ldOwp9CgpzdHJ1Y3Qgbm9kZQp7CiAgICBpbnQgbGF6eTsKICAgIHZpIHZhbDsKCiAgICBub2RlKCkKICAgIHsKICAgICAgICBsYXp5PTA7CiAgICAgICAgdmFsLmNsZWFyKCk7CiAgICB9Cn07CgppbmxpbmUgbm9kZSBjb21iaW5lKGNvbnN0IG5vZGUgJmwsIGNvbnN0IG5vZGUgJnIpCnsKICAgIGF1dG8gJnk9bC52YWwsICZ6PXIudmFsOwogICAgaWYoeS5lbXB0eSgpKSByZXR1cm4gcjsKICAgIGlmKHouZW1wdHkoKSkgcmV0dXJuIGw7CiAgICBub2RlIGFuczsKICAgIGF1dG8gJng9YW5zLnZhbDsKICAgIGludCBpPTAsIGo9MCwgc3o9bWluKDE1LCBzeih5KStzeih6KSk7CiAgICB4LnJlc2VydmUoc3opOwogICAgd2hpbGUoaTxzeih5KSAmJiBqPHN6KHopICYmIGkrajxzeikKICAgIHsKICAgICAgICBpZih5W2ldPj16W2pdKSB4LnBiKHlbaV0pLCArK2k7CiAgICAgICAgZWxzZSB4LnBiKHpbal0pLCArK2o7CiAgICB9CiAgICB3aGlsZShpPHN6KHkpICYmIGkrajxzeikgeC5wYih5W2ldKSwgKytpOwogICAgd2hpbGUoajxzeih6KSAmJiBpK2o8c3opIHgucGIoeltqXSksICsrajsKICAgIHJldHVybiBhbnM7Cn0KCnN0cnVjdCBpdAp7CiAgICBub2RlIHRbbWF4bioyXTsKCiAgICB2b2lkIGJ1aWxkKGludCBpZCwgaW50IGwsIGludCByKQogICAgewogICAgICAgIGlmKGw9PXIpIHJldHVybiB0W2lkXS52YWwuYXNzaWduKDEsIDApLCB2b2lkKCk7CiAgICAgICAgaW50IG1pZD0obCtyKT4+MTsKICAgICAgICBidWlsZChpZDw8MSwgbCwgbWlkKTsgYnVpbGQoaWQ8PDF8MSwgbWlkKzEsIHIpOwogICAgICAgIHRbaWRdPWNvbWJpbmUodFtpZDw8MV0sIHRbaWQ8PDF8MV0pOwogICAgfQoKICAgIGlubGluZSB2b2lkIHB1c2goaW50IGlkKQogICAgewogICAgICAgIGlmKHRbaWRdLmxhenk9PTApIHJldHVybjsKICAgICAgICBmZihpLCBpZCoyLCBpZCoyKzEpCiAgICAgICAgewogICAgICAgICAgICB0W2ldLmxhenkrPXRbaWRdLmxhenk7CiAgICAgICAgICAgIGZvcihhdXRvICZ4OnRbaV0udmFsKSB4Kz10W2lkXS5sYXp5OwogICAgICAgIH0KICAgICAgICB0W2lkXS5sYXp5PTA7CiAgICB9CgogICAgdm9pZCB1cGQoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdiwgaW50IHZhbCkKICAgIHsKICAgICAgICBpZihyPHUgfHwgdjxsKSByZXR1cm47CiAgICAgICAgaWYodTw9bCAmJiByPD12KQogICAgICAgIHsKICAgICAgICAgICAgdFtpZF0ubGF6eSs9dmFsOwogICAgICAgICAgICBmb3IoYXV0byAmeDp0W2lkXS52YWwpIHgrPXZhbDsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpbnQgbWlkPShsK3IpPj4xOwogICAgICAgIHB1c2goaWQpOwogICAgICAgIHVwZChpZDw8MSwgbCwgbWlkLCB1LCB2LCB2YWwpOwogICAgICAgIHVwZChpZDw8MXwxLCBtaWQrMSAsciwgdSwgdiAsdmFsKTsKICAgICAgICB0W2lkXT1jb21iaW5lKHRbaWQ8PDFdLCB0W2lkPDwxfDFdICk7CiAgICB9CgogICAgbm9kZSBnZXQoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdikKICAgIHsKICAgICAgICBpZihyPHUgfHwgdjxsKSByZXR1cm4gbm9kZSgpOwogICAgICAgIGlmKHU8PWwgJiYgcjw9dikgcmV0dXJuIHRbaWRdOwogICAgICAgIGludCBtaWQ9KGwrcik+PjE7CiAgICAgICAgcHVzaChpZCk7CiAgICAgICAgbm9kZSB4PWdldChpZDw8MSwgbCwgbWlkLCB1LCB2KSwgeT1nZXQoaWQ8PDF8MSwgbWlkKzEsIHIsIHUsIHYpOwogICAgICAgIHJldHVybiBjb21iaW5lKHgsIHkpOwogICAgfQoKfSB0MCwgdDE7CgpzaWduZWQgbWFpbigpCnsKICAgIHJmKCk7CiAgICBpbnQgc3ViOyBjaW4+PnN1YjsKICAgIGNpbj4+bjsKICAgIGZmKHUsIDIsIG4pCiAgICB7CiAgICAgICAgaW50IHY7IGNpbj4+djsgZ1t2XS5wYih1KTsKICAgIH0KICAgIGRmcygxLCAwKTsKICAgIGludCBuMD10aW1lclswXSwgbjE9dGltZXJbMV07CiAgICB0MC5idWlsZCgxLCAxLCBuMCk7IHQxLmJ1aWxkKDEgLDEsIG4xKTsKICAgIGNpbj4+cTsKICAgIHdoaWxlKHEtLSkKICAgIHsKICAgICAgICBzdHJpbmcgb3A7IGNpbj4+b3A7CiAgICAgICAgaWYob3BbMF09PSdhJykKICAgICAgICB7CiAgICAgICAgICAgIGludCB1LCB2YWw7IGNpbj4+dT4+dmFsOwogICAgICAgICAgICBpZihoW3VdJjEpIHZhbD0tdmFsOwogICAgICAgICAgICB0MC51cGQoMSwgMSwgbjAsIHN0WzBdW3VdICxlZFswXVt1XSwgdmFsKTsKICAgICAgICAgICAgdDEudXBkKDEsIDEsIG4xLCBzdFsxXVt1XSAsZWRbMV1bdV0sIC12YWwpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKG9wWzBdPT0nZycpCiAgICAgICAgewogICAgICAgICAgICBpbnQgdTsgY2luPj51OwogICAgICAgICAgICBub2RlIGFuczsKICAgICAgICAgICAgaWYoaFt1XSUyPT0wKSBhbnM9dDAuZ2V0KDEsIDEsIG4wLCBzdFswXVt1XSwgc3RbMF1bdV0pOwogICAgICAgICAgICBlbHNlIGFucz10MS5nZXQoMSwgMSwgbjEsIHN0WzFdW3VdLCBzdFsxXVt1XSk7CiAgICAgICAgICAgIGNvdXQ8PGFucy52YWxbMF08PHNzOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBpbnQgdSwgazsgY2luPj51Pj5rOwogICAgICAgICAgICBub2RlIGw9dDAuZ2V0KDEsIDEsIG4wLCBzdFswXVt1XSwgZWRbMF1bdV0pOwogICAgICAgICAgICBub2RlIHI9dDEuZ2V0KDEsIDEsIG4xLCBzdFsxXVt1XSwgZWRbMV1bdV0pOwogICAgICAgICAgICBub2RlIGFucz1jb21iaW5lKGwgLHIpOwogICAgICAgICAgICBpZihhbnMudmFsLnNpemUoKTxrKSBjb3V0PDwwPDxzczsKICAgICAgICAgICAgZWxzZSBjb3V0PDxhbnMudmFsW2stMV08PHNzOwogICAgICAgIH0KICAgIH0KICAgIHJlOwp9Cg==