#include <iostream>
using namespace std;
#include<string>
struct node
{
int data;
struct node * left;
struct node * right;
};
void createnode(struct node* root, int p, int c, char dir)
{
struct node * temp=(node * )malloc(sizeof(node));
temp->data=c;
temp->left=temp->right=NULL;
if(root->data==p)
{
if(dir=='L')
root->left=temp;
else if(dir=='R')
root->right=temp;
}
else
{
if(root->left!=NULL)
createnode(root->left,p,c,dir);
if(root->right!=NULL)
createnode(root->right,p,c,dir);
}
}
int findpath(struct node* root, string& path, int num)
{
if(root->data==num)
return 1;
else if((root->left!=NULL)&&(findpath(root->left,path,num)==1))
{
path+="L";
return 1;
}
else if((root->right!=NULL)&&(findpath(root->right,path,num)==1))
{
path+="R";
return 1;
}
else
return 0;
}
int findimage(struct node* root,string path)
{
for(int i=path.length()-1;i>=0;i--)
{
if((path[i]=='R')&&(root->left!=NULL))
root=root->left;
else if((path[i]=='L')&&(root->right!=NULL))
root=root->right;
else
return -1;
}
return root->data;
}
int main()
{
struct node * root;
root=(node * )malloc(sizeof(node));
root->left=root->right=NULL;
root->data=1;
int n,q;
cin>>n>>q;
n--;
int p,c;
char dir;
while(n--)
{
cin>>p>>c>>dir;
createnode(root,p,c,dir);
}
int num;
while(q--)
{
cin>>num;
string path;
findpath(root,path,num);
int x=findimage(root,path);
cout<<x<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojaW5jbHVkZTxzdHJpbmc+CnN0cnVjdCBub2RlCnsKICAgIGludCBkYXRhOyAgICAgICAgICAgICAgICAgCiAgICBzdHJ1Y3Qgbm9kZSAqIGxlZnQ7ICAgICAgICAgIAogICAgc3RydWN0IG5vZGUgKiByaWdodDsgICAgICAgICAKfTsKdm9pZCBjcmVhdGVub2RlKHN0cnVjdCBub2RlKiByb290LCBpbnQgcCwgaW50IGMsIGNoYXIgZGlyKQp7CglzdHJ1Y3Qgbm9kZSAqIHRlbXA9KG5vZGUgKiApbWFsbG9jKHNpemVvZihub2RlKSk7CiAgICB0ZW1wLT5kYXRhPWM7CiAgICB0ZW1wLT5sZWZ0PXRlbXAtPnJpZ2h0PU5VTEw7CiAgICBpZihyb290LT5kYXRhPT1wKQogICAgewogICAgCWlmKGRpcj09J0wnKQogICAgCQlyb290LT5sZWZ0PXRlbXA7CiAgICAJZWxzZSBpZihkaXI9PSdSJykKICAgIAkJcm9vdC0+cmlnaHQ9dGVtcDsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgIAlpZihyb290LT5sZWZ0IT1OVUxMKQogICAgCQljcmVhdGVub2RlKHJvb3QtPmxlZnQscCxjLGRpcik7CiAgICAJaWYocm9vdC0+cmlnaHQhPU5VTEwpCiAgICAJCWNyZWF0ZW5vZGUocm9vdC0+cmlnaHQscCxjLGRpcik7CiAgICB9CQkKfQppbnQgZmluZHBhdGgoc3RydWN0IG5vZGUqIHJvb3QsIHN0cmluZyYgcGF0aCwgaW50IG51bSkKewoJaWYocm9vdC0+ZGF0YT09bnVtKQoJCXJldHVybiAxOwoJZWxzZSBpZigocm9vdC0+bGVmdCE9TlVMTCkmJihmaW5kcGF0aChyb290LT5sZWZ0LHBhdGgsbnVtKT09MSkpCgl7CgkJcGF0aCs9IkwiOwoJCXJldHVybiAxOwoJfQoJZWxzZSBpZigocm9vdC0+cmlnaHQhPU5VTEwpJiYoZmluZHBhdGgocm9vdC0+cmlnaHQscGF0aCxudW0pPT0xKSkKCXsKCQlwYXRoKz0iUiI7CgkJcmV0dXJuIDE7Cgl9CgllbHNlIAoJCXJldHVybiAwOwp9CmludCBmaW5kaW1hZ2Uoc3RydWN0IG5vZGUqIHJvb3Qsc3RyaW5nIHBhdGgpCnsKCWZvcihpbnQgaT1wYXRoLmxlbmd0aCgpLTE7aT49MDtpLS0pCgl7CgkJaWYoKHBhdGhbaV09PSdSJykmJihyb290LT5sZWZ0IT1OVUxMKSkKCQkJcm9vdD1yb290LT5sZWZ0OwoJCWVsc2UgaWYoKHBhdGhbaV09PSdMJykmJihyb290LT5yaWdodCE9TlVMTCkpCQoJCQlyb290PXJvb3QtPnJpZ2h0OwoJCWVsc2UKCQkJcmV0dXJuIC0xOwoJfQoJcmV0dXJuIHJvb3QtPmRhdGE7Cn0JCmludCBtYWluKCkgCnsKCXN0cnVjdCBub2RlICogcm9vdDsKICAgIHJvb3Q9KG5vZGUgKiApbWFsbG9jKHNpemVvZihub2RlKSk7CiAgICByb290LT5sZWZ0PXJvb3QtPnJpZ2h0PU5VTEw7CiAgICByb290LT5kYXRhPTE7CiAgICBpbnQgbixxOwogICAgY2luPj5uPj5xOwogICAgbi0tOwogICAgaW50IHAsYzsKICAgIGNoYXIgZGlyOwogICAgd2hpbGUobi0tKQogICAgewogICAgCWNpbj4+cD4+Yz4+ZGlyOwogICAgCWNyZWF0ZW5vZGUocm9vdCxwLGMsZGlyKTsKICAgIH0KICAgIGludCBudW07CiAgICB3aGlsZShxLS0pCiAgICB7CiAgICAJY2luPj5udW07CiAgICAJc3RyaW5nIHBhdGg7CiAgICAJZmluZHBhdGgocm9vdCxwYXRoLG51bSk7CiAgICAJaW50IHg9ZmluZGltYWdlKHJvb3QscGF0aCk7CiAgICAJY291dDw8eDw8ZW5kbDsKICAgIH0KCXJldHVybiAwOwp9