// OBčh2009 Day3 F : Marked Ancestor #include #include #include #include using namespace std; int root[100001]; bool marked[100001]; int getroot(int v) { return marked[v] ? v : root[v] = getroot(root[v]); } int main(){ int n, m; while(cin >> n >> m, n){ for(int i=2;i<=n;i++) cin >> root[i]; vector vb; vector vi; memset(marked, false, sizeof(marked)); marked[1] = true; for(int i=0;i> c >> t; if(c=='Q'){ vb.push_back(true); vi.push_back(t); } else { if(marked[t]) continue; vb.push_back(false); vi.push_back(t); marked[t] = true; } } long long ans = 0; reverse(vb.begin(), vb.end()); reverse(vi.begin(), vi.end()); for(int i=0;i