//第一次读入数字用的是字符串,负数会错
#include<bits/stdc++.h>
using namespace std;
const int maxn=5e4;
const int inf=1e4;
int heap[maxn];
int pos[maxn];
int x[maxn];
//没有处理负数
void siftup(int i)
{
if(i==1)
return;
while(i>1&&heap[i]<heap[i/2])
{
swap(heap[i],heap[i/2]);
i/=2;
}
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{cin>>heap[i];
}
for(int i=1;i<=n;i++)
siftup(i);
for(int i=1;i<=n;i++)
pos[heap[i]+inf]=i;
while(m--)
{
int a,b;
cin>>a;
string s[5];
cin>>s[0];
if(s[0]=="and")
{
cin>>b;
cin>>s[1]>>s[2];
if(pos[a+inf]/2==pos[b+inf]/2)
cout<<"T\n";
else
cout<<"F\n";
}
else
{
cin>>s[1];
if(s[1]=="a")
{
cin>>s[2]>>s[3]>>b;
if(pos[a+inf]/2==pos[b+inf])
cout<<"T\n";
else
cout<<"F\n";
}
else
{
cin>>s[2];
if(s[2]=="root")
{
if(pos[a+inf]==1)
cout<<"T\n";
else
cout<<"F\n";
}
else
{
cin>>s[3]>>b;
if(pos[b+inf]/2==pos[a+inf])
cout<<"T\n";
else
cout<<"F\n";
}
}
}
}
}