int getint(string s) { stringstream ss; ss<<s; int res; ss>>res; return res; }
bool right(string &s) { if (s.find("root")!=string::npos) return (pos[getint(s)]==1); int p = s.find_first_of("-1234567890",s.find(" ")); int x = getint(s); int y = getint(s.substr(p,s.size()-p)); if (s.find("parent")!=string::npos) return (pos[x]==pos[y]>>1); if (s.find("child")!=string::npos) return (pos[x]>>1==pos[y]); //contains "siblings" return (pos[x]>>1==pos[y]>>1); }
int main() { int n,m,i,x; scanf("%d%d",&n,&m); for (i=0;i<n;i++) { scanf("%d",&x); a.push_back(x); push_heap(a.begin(),a.end(),greater<int>()); } for (i=0;i<n;i++) pos[a[i]]=i+1; scanf("\n"); while (m--) { string s; getline(cin,s); if (right(s)) puts("T"); else puts("F"); } return 0; }